DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_ENTITY_TYPES_PKG

Source


1 PACKAGE BODY xla_entity_types_pkg AS
2 /* $Header: xlaamdee.pkb 120.4 2004/11/20 01:10:35 wychan ship $ */
3 /*======================================================================+
4 |             Copyright (c) 1995-2002 Oracle Corporation                |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | PACKAGE NAME                                                          |
9 |    xla_entity_types_pkg                                               |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |    XLA Entity Types Package                                           |
13 |                                                                       |
14 | HISTORY                                                               |
15 |    01-May-01 Dimple Shah    Created                                   |
16 |                                                                       |
17 +======================================================================*/
18 
19 /*======================================================================+
20 |                                                                       |
21 | Public Function                                                       |
22 |                                                                       |
23 | event_classes_exist                                                   |
24 |                                                                       |
25 | Returns true if the source is being used                              |
26 |                                                                       |
27 +======================================================================*/
28 FUNCTION event_classes_exist
29   (p_event                            IN VARCHAR2
30   ,p_application_id                   IN NUMBER
31   ,p_entity_code                      IN VARCHAR2)
32 RETURN BOOLEAN
33 
34 IS
35 
36    --
37    -- Private variables
38    --
39    l_count NUMBER(30) := 0;
40 
41    --
42    -- Cursor declarations
43    --
44    CURSOR check_event_classes
45    IS
46    SELECT count(1)
47      FROM xla_event_classes_vl
48     WHERE application_id   = p_application_id
49       AND entity_code      = p_entity_code;
50 
51    CURSOR check_enabled_event_classes
52    IS
53    SELECT count(1)
54      FROM xla_event_classes_vl
55     WHERE application_id   = p_application_id
56       AND entity_code      = p_entity_code
57       AND enabled_flag     = 'Y';
58 
59 BEGIN
60    xla_utility_pkg.trace('> xla_entity_types_pkg.event_classes_exist'                       , 10);
61 
62    xla_utility_pkg.trace('event               = '||p_event, 20);
63    xla_utility_pkg.trace('application_id      = '||p_application_id  , 20);
64    xla_utility_pkg.trace('entity_code         = '||p_entity_code     , 20);
65 
66    IF p_event = 'DELETE' THEN
67 
68       OPEN check_event_classes;
69       FETCH check_event_classes
70        INTO l_count;
71       CLOSE check_event_classes;
72 
73       IF l_count > 0 THEN
74          RETURN TRUE;
75       END IF;
76 
77    ELSIF p_event = 'DISABLE' THEN
78 
79       OPEN check_enabled_event_classes;
80       FETCH check_enabled_event_classes
81        INTO l_count;
82       CLOSE check_enabled_event_classes;
83 
84       IF l_count > 0 THEN
85          RETURN TRUE;
86       END IF;
87 
88    END IF;
89 
90    xla_utility_pkg.trace('< xla_entity_types_pkg.event_classes_exist'                       , 10);
91    RETURN FALSE;
92 
93 EXCEPTION
94    WHEN xla_exceptions_pkg.application_exception THEN
95       RAISE;
96 WHEN OTHERS                                   THEN
97    xla_exceptions_pkg.raise_message
98       (p_location   => 'xla_entity_types_pkg.event_classes_exist');
99 
100 END event_classes_exist;
101 
102 /*======================================================================+
103 |                                                                       |
104 | Public Procedure                                                      |
105 |                                                                       |
106 | delete_entity_details                                                 |
107 |                                                                       |
108 | Deletes all details of the entity                                     |
109 |                                                                       |
110 +======================================================================*/
111 
112 PROCEDURE delete_entity_details
113   (p_application_id                   IN NUMBER
114   ,p_entity_code                      IN VARCHAR2)
115 IS
116 
117 BEGIN
118 
119    xla_utility_pkg.trace('> xla_entity_types_pkg.delete_entity_details'        , 10);
120 
121    xla_utility_pkg.trace('application_id      = '||p_application_id  , 20);
122    xla_utility_pkg.trace('entity_code         = '||p_entity_code     , 20);
123 
124    DELETE
125      FROM xla_entity_id_mappings
126     WHERE application_id = p_application_id
127       AND entity_code    = p_entity_code;
128 
129    xla_utility_pkg.trace('< xla_entity_types_pkg.delete_entity_details'        , 10);
130 
131 EXCEPTION
132    WHEN xla_exceptions_pkg.application_exception THEN
133       RAISE;
134    WHEN OTHERS                                   THEN
135       xla_exceptions_pkg.raise_message
136         (p_location   => 'xla_entity_types_pkg.delete_entity_details');
137 
138 END delete_entity_details;
139 
140 /*======================================================================+
141 |                                                                       |
142 | Public Function                                                       |
143 |                                                                       |
144 | uncompile_definitions                                                 |
145 |                                                                       |
146 | Returns true if all the product rules for the entity are uncompiled   |
147 |                                                                       |
148 +======================================================================*/
149 
150 FUNCTION uncompile_definitions
151   (p_application_id                  IN NUMBER
152   ,p_entity_code                     IN VARCHAR2
153   ,x_product_rule_name               IN OUT NOCOPY VARCHAR2
154   ,x_product_rule_type               IN OUT NOCOPY VARCHAR2
155   ,x_event_class_name                IN OUT NOCOPY VARCHAR2
156   ,x_event_type_name                 IN OUT NOCOPY VARCHAR2
157   ,x_locking_status_flag             IN OUT NOCOPY VARCHAR2)
158 RETURN BOOLEAN
159 IS
160 
161    l_return   BOOLEAN := TRUE;
162    l_exist    VARCHAR2(1);
163 
164    l_application_name    varchar2(240) := null;
165    l_product_rule_name    varchar2(80) := null;
166    l_product_rule_type    varchar2(80) := null;
167    l_event_class_name     varchar2(80)  := null;
168    l_event_type_name      varchar2(80)  := null;
169    l_locking_status_flag  varchar2(1)   := null;
170 
171    -- Retrive any event class/type assignment of an AAD that is either
172    -- being locked or validating
173    CURSOR c_locked_aads IS
174     SELECT xpa.entity_code, xpa.event_class_code, xpa.event_type_code,
175            xpa.product_rule_type_code, xpa.product_rule_code,
176            xpa.amb_context_code, xpa.locking_status_flag
177       FROM xla_prod_acct_headers          xpa
178      WHERE xpa.application_id             = p_application_id
179        AND xpa.entity_code                = p_entity_code
180        AND (xpa.validation_status_code    NOT IN ('E', 'Y', 'N') OR
181             xpa.locking_status_flag       = 'Y');
182 
183    l_locked_aad   c_locked_aads%rowtype;
184 
185 BEGIN
186 
187    xla_utility_pkg.trace('> xla_entity_types_pkg.uncompile_definitions'   , 10);
188 
189    xla_utility_pkg.trace('application_id      = '||p_application_id  , 20);
190    xla_utility_pkg.trace('entity_code    = '||p_entity_code     , 20);
191 
192    OPEN c_locked_aads;
193    FETCH c_locked_aads INTO l_locked_aad;
194    IF (c_locked_aads%FOUND) THEN
195 
196       xla_validations_pkg.get_product_rule_info
197            (p_application_id          => p_application_id
198            ,p_amb_context_code        => l_locked_aad.amb_context_code
199            ,p_product_rule_type_code  => l_locked_aad.product_rule_type_code
200            ,p_product_rule_code       => l_locked_aad.product_rule_code
201            ,p_application_name        => l_application_name
202            ,p_product_rule_name       => l_product_rule_name
203            ,p_product_rule_type       => l_product_rule_type);
204 
205       xla_validations_pkg.get_event_class_info
206            (p_application_id          => p_application_id
207            ,p_entity_code             => l_locked_aad.entity_code
208            ,p_event_class_code        => l_locked_aad.event_class_code
209            ,p_event_class_name        => l_event_class_name);
210 
211       xla_validations_pkg.get_event_type_info
212            (p_application_id          => p_application_id
213            ,p_entity_code             => l_locked_aad.entity_code
214            ,p_event_class_code        => l_locked_aad.event_class_code
215            ,p_event_type_code         => l_locked_aad.event_type_code
216            ,p_event_type_name         => l_event_type_name);
217 
218       l_locking_status_flag := l_locked_aad.locking_status_flag;
219 
220       l_return := FALSE;
221    ELSE
222 
223       UPDATE xla_line_definitions_b     xld
224          SET validation_status_code     = 'N'
225        WHERE xld.application_id         = p_application_id
226          AND xld.event_class_code       IN (SELECT event_class_code
227                                               FROM xla_event_classes_b
228                                              WHERE entity_code = p_entity_code)
229          AND xld.validation_status_code <> 'N';
230 
231       UPDATE xla_prod_acct_headers      xpa
232          SET validation_status_code     = 'N'
233        WHERE xpa.application_id         = p_application_id
234          AND xpa.entity_code            = p_entity_code
235          AND xpa.validation_status_code <> 'N';
236 
237       UPDATE xla_product_rules_b        xpr
238          SET compile_status_code        = 'N'
239        WHERE xpr.application_id         = p_application_id
240          AND xpr.compile_status_code    <> 'N'
241          AND (xpr.amb_context_code
242              ,xpr.product_rule_type_code
243              ,xpr.product_rule_code)    IN
244              (SELECT xpa.amb_context_code
245                     ,xpa.product_rule_type_code
246                     ,xpa.product_rule_code
247                 FROM xla_prod_acct_headers  xpa
248                WHERE xpa.application_id         = p_application_id
249                  AND xpa.entity_code            = p_entity_code);
250 
251       l_return := TRUE;
252    END IF;
253    CLOSE c_locked_aads;
254 
255    x_product_rule_name   := l_product_rule_name;
256    x_product_rule_type   := l_product_rule_type;
257    x_event_class_name    := l_event_class_name;
258    x_event_type_name     := l_event_type_name;
259    x_locking_status_flag := l_locking_status_flag;
260 
261    xla_utility_pkg.trace('< xla_entity_types_pkg.uncompile_definitions'    , 10);
262 
263    return l_return;
264 
265 EXCEPTION
266    WHEN xla_exceptions_pkg.application_exception THEN
267       IF c_locked_aads%ISOPEN THEN
268          CLOSE c_locked_aads;
269       END IF;
270       RAISE;
271    WHEN OTHERS                                   THEN
272       IF c_locked_aads%ISOPEN THEN
273          CLOSE c_locked_aads;
274       END IF;
275 
276       xla_exceptions_pkg.raise_message
277         (p_location   => 'xla_entity_types_pkg.uncompile_definitions');
278 
279 END uncompile_definitions ;
280 
281 END xla_entity_types_pkg;