DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_SOURCES_PKG

Source


1 PACKAGE BODY xla_sources_pkg AS
2 /* $Header: xlaamdss.pkb 120.27 2006/01/09 14:24:00 vkasina ship $ */
3 /*======================================================================+
4 |             Copyright (c) 1995-2002 Oracle Corporation                |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | PACKAGE NAME                                                          |
9 |    xla_sources_pkg                                                    |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |    XLA Sources Package                                                |
13 |                                                                       |
14 | HISTORY                                                               |
15 |    01-May-01 Dimple Shah    Created                                   |
16 |    19-Oct-04 Wynne Chan     Changes for Journal Lines Definitions     |
17 |                                                                       |
18 +======================================================================*/
19 
20 --=============================================================================
21 --               *********** Local Trace Routine **********
22 --=============================================================================
23 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
24 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
25 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
26 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
27 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
28 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
29 
30 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
31 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_sources_pkg';
32 
33 g_log_level           NUMBER;
34 g_log_enabled         BOOLEAN;
35 
36 PROCEDURE trace
37   (p_msg                        IN VARCHAR2
38   ,p_module                     IN VARCHAR2
39   ,p_level                      IN NUMBER) IS
40 BEGIN
41   ----------------------------------------------------------------------------
42   -- Following is for FND log.
43   ----------------------------------------------------------------------------
44   IF (p_msg IS NULL AND p_level >= g_log_level) THEN
45     fnd_log.message(p_level, p_module);
46   ELSIF p_level >= g_log_level THEN
47     fnd_log.string(p_level, p_module, p_msg);
48   END IF;
49 
50 EXCEPTION
51   WHEN xla_exceptions_pkg.application_exception THEN
52     RAISE;
53 
54   WHEN OTHERS THEN
55     xla_exceptions_pkg.raise_message
56       (p_location   => 'xla_sources_pkg.trace');
57 END trace;
58 
59 
60 /*======================================================================+
61 |                                                                       |
62 | Private Function                                                      |
63 |                                                                       |
64 | uncompile_tad_for_der_source                                          |
65 |                                                                       |
66 | Sets status of assigned transaction account definition to uncompiled  |
67 | for a derived source                                                  |
68 |                                                                       |
69 +======================================================================*/
70 
71 FUNCTION uncompile_tad_for_der_source
72   (p_der_application_id                   IN NUMBER
73   ,p_der_source_code                      IN VARCHAR2
74   ,p_der_source_type_code                 IN VARCHAR2
75   ,p_trx_acct_def                         IN OUT NOCOPY VARCHAR2
76   ,p_trx_acct_def_type                    IN OUT NOCOPY VARCHAR2)
77 RETURN BOOLEAN
78 
79 IS
80    --
81    -- Private variables
82    --
83    l_exist   VARCHAR2(1) ;
84    l_return  BOOLEAN := TRUE;
85 
86    l_application_name     varchar2(240) := null;
87    l_trx_acct_def         varchar2(80)  := null;
88    l_trx_acct_def_type    varchar2(80)  := null;
89 
90    --
91    -- Cursor declarations
92    --
93    CURSOR c_seg_rules
94    IS
95    SELECT a.application_id, a.amb_context_code, a.segment_rule_type_code, a.segment_rule_code
96      FROM xla_seg_rules_b a
97     WHERE exists (SELECT 'x'
98                     FROM xla_seg_rule_details sd
99                    WHERE ((value_source_application_id      = p_der_application_id
100                      AND  value_source_type_code            = p_der_source_type_code
101                      AND  value_source_code                 = p_der_source_code)
102                       OR (input_source_application_id       = p_der_application_id
103                      AND  input_source_type_code            = p_der_source_type_code
104                      AND  input_source_code                 = p_der_source_code
105                      AND  input_source_code IS NOT NULL))
106                      AND sd.application_id                  = a.application_id
107                      AND sd.amb_context_code                = a.amb_context_code
108                      AND sd.segment_rule_type_code          = a.segment_rule_type_code
109                      AND sd.segment_rule_code               = a.segment_rule_code
110                   UNION
111                   SELECT 'x'
112                     FROM xla_conditions c, xla_seg_rule_details sd
113                    WHERE ((c.source_application_id      = p_der_application_id
114                      AND  c.source_code                 = p_der_source_code
115                      AND  c.source_type_code            = p_der_source_type_code)
116                       OR (c.value_source_application_id = p_der_application_id
117                      AND  c.value_source_type_code      = p_der_source_type_code
118                      AND  c.value_source_code           = p_der_source_code
119                      AND  c.value_source_code IS NOT NULL))
120                      AND c.segment_rule_detail_id       = sd.segment_rule_detail_id
121                      AND sd.application_id              = a.application_id
122                      AND sd.amb_context_code            = a.amb_context_code
123                      AND sd.segment_rule_type_code      = a.segment_rule_type_code
124                      AND sd.segment_rule_code           = a.segment_rule_code);
125 
126    l_seg_rule   c_seg_rules%rowtype;
127 
128    l_log_module VARCHAR2(240);
129 BEGIN
130   IF g_log_enabled THEN
131     l_log_module := C_DEFAULT_MODULE||'.uncompile_tad_for_der_source';
132   END IF;
133 
134   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135     trace(p_msg    => 'BEGIN of procedure uncompile_tad_for_der_source'
136          ,p_module => l_log_module
137          ,p_level  => C_LEVEL_PROCEDURE);
138   END IF;
139 
140   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141     trace(p_msg    => 'application_id = '||p_der_application_id||
142                       ',source_code = '||p_der_source_code||
143                       ',source_type_code = '||p_der_source_type_code||
144                       ',trx_acct_def = '||p_trx_acct_def||
145                       ',trx_acct_def_type = '||p_trx_acct_def_type
146          ,p_module => l_log_module
147          ,p_level  => C_LEVEL_STATEMENT);
148   END IF;
149 
150       OPEN c_seg_rules;
151       LOOP
152       FETCH c_seg_rules
153        INTO l_seg_rule;
154       EXIT WHEN c_seg_rules%NOTFOUND or l_return=FALSE;
155 
156          IF xla_seg_rules_pkg.uncompile_tran_acct_def
157               (p_application_id         => l_seg_rule.application_id
158               ,p_amb_context_code       => l_seg_rule.amb_context_code
159               ,p_segment_rule_type_code => l_seg_rule.segment_rule_type_code
160               ,p_segment_rule_code      => l_seg_rule.segment_rule_code
161               ,p_application_name       => l_application_name
162               ,p_trx_acct_def           => l_trx_acct_def
163               ,p_trx_acct_def_type      => l_trx_acct_def_type) THEN
164 
165             l_return := TRUE;
166          ELSE
167             l_return := FALSE;
168          END IF;
169       END LOOP;
170       CLOSE c_seg_rules;
171 
172    p_trx_acct_def      := l_trx_acct_def;
173    p_trx_acct_def_type := l_trx_acct_def_type;
174 
175   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176     trace(p_msg    => 'END of procedure uncompile_tad_for_der_source'
177          ,p_module => l_log_module
178          ,p_level  => C_LEVEL_PROCEDURE);
179   END IF;
180 
181 
182    return l_return;
183 
184 EXCEPTION
185    WHEN xla_exceptions_pkg.application_exception THEN
186       RAISE;
187 WHEN OTHERS                                   THEN
188    xla_exceptions_pkg.raise_message
189       (p_location   => 'xla_sources_pkg.uncompile_tad_for_der_source');
190 
191 END uncompile_tad_for_der_source;
192 
193 
194 /*======================================================================+
195 |                                                                       |
196 | Private Function                                                      |
197 |                                                                       |
198 | derived_source_locked_by_tab                                          |
199 |                                                                       |
200 | Returns true if the derived source is being used by a locked          |
201 | transaction account definition                                        |
202 |                                                                       |
203 +======================================================================*/
204 FUNCTION derived_source_locked_by_tab
205   (p_der_application_id                   IN NUMBER
206   ,p_der_source_code                      IN VARCHAR2
207   ,p_der_source_type_code                 IN VARCHAR2)
208 RETURN BOOLEAN
209 
210 IS
211 
212    --
213    -- Private variables
214    --
215    l_exist   VARCHAR2(1) ;
216    l_return  BOOLEAN;
217 
218    --
219    -- Cursor declarations
220    --
221 
222    CURSOR check_sr_conditions
223    IS
224    SELECT 'x'
225      FROM xla_conditions c
226     WHERE ((source_application_id       = p_der_application_id
227       AND  source_code                 = p_der_source_code
228       AND  source_type_code            = p_der_source_type_code)
229        OR (value_source_application_id = p_der_application_id
230       AND  value_source_type_code      = p_der_source_type_code
231       AND  value_source_code           = p_der_source_code
232       AND  value_source_code IS NOT NULL))
233       AND  exists (SELECT 'x'
234                     FROM xla_seg_rule_details sd,
235                          xla_tab_acct_def_details pl, xla_tab_acct_defs_b p
236                    WHERE sd.segment_rule_detail_id  = c.segment_rule_detail_id
237                      AND pl.application_id          = sd.application_id
238                      AND pl.amb_context_code        = sd.amb_context_code
239                      AND pl.segment_rule_type_code  = sd.segment_rule_type_code
240                      AND pl.segment_rule_code       = sd.segment_rule_code
241                      AND pl.application_id          = p.application_id
242                      AND pl.amb_context_code        = p.amb_context_code
243                      AND pl.account_definition_type_code  = p.account_definition_type_code
244                      AND pl.account_definition_code  = p.account_definition_code
245                      AND p.locking_status_flag       = 'Y');
246 
247 
248    CURSOR check_sr_details
249    IS
250    SELECT 'x'
251      FROM xla_seg_rule_details sd
252     WHERE ((value_source_application_id       = p_der_application_id
253       AND  value_source_type_code            = p_der_source_type_code
254       AND  value_source_code                 = p_der_source_code)
255        OR (input_source_application_id       = p_der_application_id
256       AND  input_source_type_code            = p_der_source_type_code
257       AND  input_source_code                 = p_der_source_code
258       AND  input_source_code IS NOT NULL))
259       AND  exists (SELECT 'x'
260                     FROM xla_tab_acct_def_details pl, xla_tab_acct_defs_b p
261                    WHERE pl.application_id          = sd.application_id
262                      AND pl.amb_context_code        = sd.amb_context_code
263                      AND pl.segment_rule_type_code  = sd.segment_rule_type_code
264                      AND pl.segment_rule_code       = sd.segment_rule_code
265                      AND pl.application_id          = p.application_id
266                      AND pl.amb_context_code        = p.amb_context_code
267                      AND pl.account_definition_type_code  = p.account_definition_type_code
268                      AND pl.account_definition_code  = p.account_definition_code
269                      AND p.locking_status_flag       = 'Y');
270 
271    l_log_module VARCHAR2(240);
272 BEGIN
273   IF g_log_enabled THEN
274     l_log_module := C_DEFAULT_MODULE||'.derived_source_locked_by_tab';
275   END IF;
276 
277   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278     trace(p_msg    => 'BEGIN of procedure derived_source_locked_by_tab'
279          ,p_module => l_log_module
280          ,p_level  => C_LEVEL_PROCEDURE);
281   END IF;
282 
283   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
284     trace(p_msg    => 'application_id = '||p_der_application_id||
285                       ',source_code = '||p_der_source_code||
286                       ',source_type_code = '||p_der_source_type_code
287          ,p_module => l_log_module
288          ,p_level  => C_LEVEL_STATEMENT);
289   END IF;
290 
291    IF p_der_source_type_code = 'D' THEN
292 
293          OPEN check_sr_conditions;
294          FETCH check_sr_conditions
295           INTO l_exist;
296          IF check_sr_conditions%found THEN
297             l_return := TRUE;
298          ELSE
299             l_return := FALSE;
300          END IF;
301          CLOSE check_sr_conditions;
302 
303       IF l_return = FALSE THEN
304 
305          OPEN check_sr_details;
306          FETCH check_sr_details
307           INTO l_exist;
308          IF check_sr_details%found THEN
309             l_return := TRUE;
310          ELSE
311             l_return := FALSE;
312          END IF;
313          CLOSE check_sr_details;
314       END IF;
315    END IF;
316 
317   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
318     trace(p_msg    => 'END of procedure derived_source_locked_by_tab'
319          ,p_module => l_log_module
320          ,p_level  => C_LEVEL_PROCEDURE);
321   END IF;
322 
323    RETURN l_return;
324 
325 EXCEPTION
326    WHEN xla_exceptions_pkg.application_exception THEN
327 
328       IF check_sr_details%ISOPEN THEN
329          CLOSE check_sr_details;
330       END IF;
331       IF check_sr_conditions%ISOPEN THEN
332          CLOSE check_sr_conditions;
333       END IF;
334 
335       RAISE;
336 
337 WHEN OTHERS                                   THEN
338 
339       IF check_sr_details%ISOPEN THEN
340          CLOSE check_sr_details;
341       END IF;
342       IF check_sr_conditions%ISOPEN THEN
343          CLOSE check_sr_conditions;
344       END IF;
345 
346    xla_exceptions_pkg.raise_message
347       (p_location   => 'xla_sources_pkg.derived_source_locked_by_tab');
348 
349 END derived_source_locked_by_tab;
350 
351 /*======================================================================+
352 |                                                                       |
353 | Private Function                                                      |
354 |                                                                       |
355 | uncompile_pad_for_der_source                                          |
356 |                                                                       |
357 | Sets status of assigned product rule to uncompiled for a              |
358 | derived source                                                        |
359 |                                                                       |
360 +======================================================================*/
361 
362 FUNCTION uncompile_pad_for_der_source
363   (p_der_application_id                   IN NUMBER
364   ,p_der_source_code                      IN VARCHAR2
365   ,p_der_source_type_code                 IN VARCHAR2
366   ,x_product_rule_name                    IN OUT NOCOPY VARCHAR2
367   ,x_product_rule_type                    IN OUT NOCOPY VARCHAR2
368   ,x_event_class_name                     IN OUT NOCOPY VARCHAR2
369   ,x_event_type_name                      IN OUT NOCOPY VARCHAR2
370   ,x_locking_status_flag                  IN OUT NOCOPY VARCHAR2)
371 RETURN BOOLEAN
372 
373 IS
374 
375    --
376    -- Private variables
377    --
378    l_exist   VARCHAR2(1) ;
379    l_return  BOOLEAN := TRUE;
380 
381    l_application_name       varchar2(240) := null;
382    l_product_rule_name      varchar2(80)  := null;
383    l_product_rule_type      varchar2(80)  := null;
384    l_event_class_name       varchar2(80)  := null;
385    l_event_type_name        varchar2(80)  := null;
386    l_line_definition_name   varchar2(80)  := null;
387    l_line_definition_owner  varchar2(80)  := NULL;
388    l_locking_status_flag    varchar2(1)   := NULL;
389 
390    --
391    -- Cursor declarations
392    --
393 
394    CURSOR c_analytical
395    IS
396    SELECT amb_context_code, analytical_criterion_code, analytical_criterion_type_code
397      FROM xla_analytical_hdrs_b a
398     WHERE exists (SELECT 'x'
399                     FROM xla_analytical_sources r
400                    WHERE source_application_id            = p_der_application_id
401                      AND source_code                      = p_der_source_code
402                      AND source_type_code                 = p_der_source_type_code
403                      AND r.analytical_criterion_code      = a.analytical_criterion_code
404                      AND r.analytical_criterion_type_code = a.analytical_criterion_type_code);
405 
406    l_analytical   c_analytical%rowtype;
407 
408 
409    CURSOR c_descriptions
410    IS
411    SELECT x.application_id, x.amb_context_code,
412           x.description_type_code, x.description_code
413      FROM xla_descriptions_b x
414     WHERE exists (SELECT 'x'
415                     FROM xla_descript_details_b d, xla_desc_priorities dp
416                    WHERE d.source_application_id   = p_der_application_id
417                      AND d.source_code             = p_der_source_code
418                      AND d.source_type_code        = p_der_source_type_code
419                      AND d.source_code is not null
420                      AND dp.description_prio_id    = d.description_prio_id
421                      AND dp.application_id         = x.application_id
422                      AND dp.amb_context_code       = x.amb_context_code
423                      AND dp.description_type_code  = x.description_type_code
424                      AND dp.description_code       = x.description_code
425                   UNION
426                   SELECT 'x'
427                     FROM xla_conditions c, xla_desc_priorities dp
428                    WHERE ((c.source_application_id      = p_der_application_id
429                      AND  c.source_code                 = p_der_source_code
430                      AND  c.source_type_code            = p_der_source_type_code)
431                       OR (c.value_source_application_id = p_der_application_id
432                      AND  c.value_source_type_code      = p_der_source_type_code
433                      AND  c.value_source_code           = p_der_source_code
434                      AND  c.value_source_code IS NOT NULL))
435                      AND dp.description_prio_id         = c.description_prio_id
436                      AND dp.application_id              = x.application_id
437                      AND dp.amb_context_code            = x.amb_context_code
438                      AND dp.description_type_code       = x.description_type_code
439                      AND dp.description_code            = x.description_code);
440 
441    l_description   c_descriptions%rowtype;
442 
443    CURSOR c_seg_rules
444    IS
445    SELECT a.application_id, a.amb_context_code, a.segment_rule_type_code, a.segment_rule_code
446      FROM xla_seg_rules_b a
447     WHERE exists (SELECT 'x'
448                     FROM xla_seg_rule_details sd
449                    WHERE ((value_source_application_id      = p_der_application_id
450                      AND  value_source_type_code            = p_der_source_type_code
451                      AND  value_source_code                 = p_der_source_code)
452                       OR (input_source_application_id       = p_der_application_id
453                      AND  input_source_type_code            = p_der_source_type_code
454                      AND  input_source_code                 = p_der_source_code
455                      AND  input_source_code IS NOT NULL))
456                      AND sd.application_id                  = a.application_id
457                      AND sd.amb_context_code                = a.amb_context_code
458                      AND sd.segment_rule_type_code          = a.segment_rule_type_code
459                      AND sd.segment_rule_code               = a.segment_rule_code
460                   UNION
461                   SELECT 'x'
462                     FROM xla_conditions c, xla_seg_rule_details sd
463                    WHERE ((c.source_application_id      = p_der_application_id
464                      AND  c.source_code                 = p_der_source_code
465                      AND  c.source_type_code            = p_der_source_type_code)
466                       OR (c.value_source_application_id = p_der_application_id
467                      AND  c.value_source_type_code      = p_der_source_type_code
468                      AND  c.value_source_code           = p_der_source_code
469                      AND  c.value_source_code IS NOT NULL))
470                      AND c.segment_rule_detail_id       = sd.segment_rule_detail_id
471                      AND sd.application_id              = a.application_id
472                      AND sd.amb_context_code            = a.amb_context_code
473                      AND sd.segment_rule_type_code      = a.segment_rule_type_code
474                      AND sd.segment_rule_code           = a.segment_rule_code);
475 
476    l_seg_rule   c_seg_rules%rowtype;
477 
478    CURSOR c_line_types
479    IS
480    SELECT a.application_id, a.amb_context_code, a.entity_code, a.event_class_code,
481           a.accounting_line_type_code, a.accounting_line_code
482      FROM xla_acct_line_types_b a
483          ,xla_conditions        c
484     WHERE a.application_id               = c.application_id
485       AND a.amb_context_code             = c.amb_context_code
486       AND a.entity_code                  = c.entity_code
487       AND a.event_class_code             = c.event_class_code
488       AND a.accounting_line_type_code    = c.accounting_line_type_code
489       AND a.accounting_line_code         = c.accounting_line_code
490   	  AND ((c.source_application_id      = p_der_application_id
491       AND c.source_code                  = p_der_source_code
492       AND c.source_type_code             = p_der_source_type_code)
493        OR (c.value_source_application_id = p_der_application_id
494 	  AND c.value_source_type_code       = p_der_source_type_code
495       AND c.value_source_code            = p_der_source_code
496       AND c.value_source_code IS NOT NULL))
497     UNION
498    SELECT a.application_id, a.amb_context_code, a.entity_code, a.event_class_code,
499           a.accounting_line_type_code, a.accounting_line_code
500      FROM xla_acct_line_types_b a
501          ,xla_jlt_acct_attrs    r
502     WHERE a.application_id               = r.application_id
503       AND a.amb_context_code             = r.amb_context_code
504       AND a.event_class_code             = r.event_class_code
505       AND a.accounting_line_type_code    = r.accounting_line_type_code
506       AND a.accounting_line_code         = r.accounting_line_code
507       AND r.source_application_id        = p_der_application_id
508       AND r.source_code                  = p_der_source_code
509       AND r.source_type_code             = p_der_source_type_code
510       AND r.source_code IS NOT NULL;
511 
512    l_line_type   c_line_types%rowtype;
513 
514    CURSOR c_aad
515    IS
516    SELECT application_id, amb_context_code, product_rule_type_code, product_rule_code
517      FROM xla_product_rules_b a
518     WHERE exists (SELECT 'x'
519                     FROM xla_aad_hdr_acct_attrs r
520                    WHERE source_application_id        = p_der_application_id
521                      AND source_code                  = p_der_source_code
522                      AND source_type_code             = p_der_source_type_code
523                      AND source_code is not null
524                      AND r.application_id             = a.application_id
525                      AND r.amb_context_code           = a.amb_context_code
526                      AND r.product_rule_type_code     = a.product_rule_type_code
527                      AND r.product_rule_code          = a.product_rule_code);
528 
529    l_aad   c_aad%rowtype;
530 
531 
532    l_log_module VARCHAR2(240);
533 BEGIN
534   IF g_log_enabled THEN
535     l_log_module := C_DEFAULT_MODULE||'.uncompile_pad_for_der_source';
536   END IF;
537 
538   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
539     trace(p_msg    => 'BEGIN of procedure uncompile_pad_for_der_source'
540          ,p_module => l_log_module
541          ,p_level  => C_LEVEL_PROCEDURE);
542   END IF;
543 
544   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
545     trace(p_msg    => 'application_id = '||p_der_application_id||
546                       ',source_code = '||p_der_source_code||
547                       ',source_type_code = '||p_der_source_type_code
548          ,p_module => l_log_module
549          ,p_level  => C_LEVEL_STATEMENT);
550   END IF;
551 
552    OPEN c_analytical;
553    LOOP
554    FETCH c_analytical
555     INTO l_analytical;
556    EXIT WHEN c_analytical%NOTFOUND or l_return=FALSE;
557 
558 
559       IF xla_analytical_hdrs_pkg.uncompile_definitions
560            (p_amb_context_code           => l_analytical.amb_context_code
561            ,p_analytical_criterion_code  => l_analytical.analytical_criterion_code
562            ,p_anal_criterion_type_code   => l_analytical.analytical_criterion_type_code
563            ,x_product_rule_name          => l_product_rule_name
564            ,x_product_rule_type          => l_product_rule_type
565            ,x_event_class_name           => l_event_class_name
566            ,x_event_type_name            => l_event_type_name
567            ,x_locking_status_flag        => l_locking_status_flag) THEN
568 
569          l_return := TRUE;
570       ELSE
571          l_return := FALSE;
572       END IF;
573    END LOOP;
574    CLOSE c_analytical;
575 
576    IF l_return = TRUE THEN
577       OPEN c_descriptions;
578       LOOP
579       FETCH c_descriptions
580        INTO l_description;
581       EXIT WHEN c_descriptions%NOTFOUND or l_return=FALSE;
582 
583          IF xla_descriptions_pkg.uncompile_definitions
584               (p_application_id        => l_description.application_id
585               ,p_amb_context_code      => l_description.amb_context_code
586               ,p_description_type_code => l_description.description_type_code
587               ,p_description_code      => l_description.description_code
588               ,x_product_rule_name     => l_product_rule_name
589               ,x_product_rule_type     => l_product_rule_type
590               ,x_event_class_name      => l_event_class_name
591               ,x_event_type_name       => l_event_type_name
592               ,x_locking_status_flag   => l_locking_status_flag) THEN
593 
594             l_return := TRUE;
595          ELSE
596             l_return := FALSE;
597          END IF;
598       END LOOP;
599 
600       CLOSE c_descriptions;
601    END IF;
602 
603 
604    IF l_return = TRUE THEN
605       OPEN c_seg_rules;
606       LOOP
607       FETCH c_seg_rules
608        INTO l_seg_rule;
609       EXIT WHEN c_seg_rules%NOTFOUND or l_return=FALSE;
610 
611          IF xla_seg_rules_pkg.uncompile_definitions
612               (p_application_id         => l_seg_rule.application_id
613               ,p_amb_context_code       => l_seg_rule.amb_context_code
614               ,p_segment_rule_type_code => l_seg_rule.segment_rule_type_code
615               ,p_segment_rule_code      => l_seg_rule.segment_rule_code
616               ,x_product_rule_name      => l_product_rule_name
617               ,x_product_rule_type      => l_product_rule_type
618               ,x_event_class_name       => l_event_class_name
619               ,x_event_type_name        => l_event_type_name
620               ,x_locking_status_flag    => l_locking_status_flag) THEN
621 
622             l_return := TRUE;
623          ELSE
624             l_return := FALSE;
625          END IF;
626       END LOOP;
627       CLOSE c_seg_rules;
628    END IF;
629 
630 
631    IF l_return = TRUE THEN
632       OPEN c_line_types;
633       LOOP
634       FETCH c_line_types
635        INTO l_line_type;
636       EXIT WHEN c_line_types%NOTFOUND or l_return=FALSE;
637 
638          IF xla_line_types_pkg.uncompile_definitions
639               (p_application_id            => l_line_type.application_id
640               ,p_amb_context_code          => l_line_type.amb_context_code
641               ,p_event_class_code          => l_line_type.event_class_code
642               ,p_accounting_line_type_code => l_line_type.accounting_line_type_code
643               ,p_accounting_line_code      => l_line_type.accounting_line_code
644               ,x_product_rule_name         => l_product_rule_name
645               ,x_product_rule_type         => l_product_rule_type
646               ,x_event_class_name          => l_event_class_name
647               ,x_event_type_name           => l_event_type_name
648               ,x_locking_status_flag       => l_locking_status_flag) THEN
649 
650             l_return := TRUE;
651          ELSE
652             l_return := FALSE;
653          END IF;
654       END LOOP;
655       CLOSE c_line_types;
656    END IF;
657 
658    IF l_return = TRUE THEN
659       OPEN c_aad;
660       LOOP
661       FETCH c_aad
662        INTO l_aad;
663       EXIT WHEN c_aad%NOTFOUND or l_return=FALSE;
664 
665          IF xla_product_rules_pkg.uncompile_product_rule
666               (p_application_id            => l_aad.application_id
667               ,p_amb_context_code          => l_aad.amb_context_code
668               ,p_product_rule_type_code    => l_aad.product_rule_type_code
669               ,p_product_rule_code         => l_aad.product_rule_code) THEN
670 
671             l_return := TRUE;
672          ELSE
673             xla_validations_pkg.get_product_rule_info
674               (p_application_id          => l_aad.application_id
675               ,p_amb_context_code        => l_aad.amb_context_code
676               ,p_product_rule_type_code  => l_aad.product_rule_type_code
677               ,p_product_rule_code       => l_aad.product_rule_code
678               ,p_application_name        => l_application_name
679               ,p_product_rule_name       => l_product_rule_name
680               ,p_product_rule_type       => l_product_rule_type);
681             l_return := FALSE;
682          END IF;
683       END LOOP;
684       CLOSE c_aad;
685    END IF;
686 
687    x_product_rule_name     := l_product_rule_name;
688    x_product_rule_type     := l_product_rule_type;
689    x_event_class_name      := l_event_class_name;
690    x_event_type_name       := l_event_type_name;
691    x_locking_status_flag   := l_locking_status_flag;
692 
693   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
694     trace(p_msg    => 'END of procedure uncompile_pad_for_der_source'
695          ,p_module => l_log_module
696          ,p_level  => C_LEVEL_PROCEDURE);
697   END IF;
698 
699    return l_return;
700 
701 EXCEPTION
702    WHEN xla_exceptions_pkg.application_exception THEN
703       RAISE;
704 WHEN OTHERS                                   THEN
705    xla_exceptions_pkg.raise_message
706       (p_location   => 'xla_sources_pkg.uncompile_pad_for_der_source');
707 
708 END uncompile_pad_for_der_source;
709 
710 /*======================================================================+
711 |                                                                       |
712 | Private Function                                                      |
713 |                                                                       |
714 | derived_source_is_locked                                              |
715 |                                                                       |
716 | Returns true if the derived source is being used by a locked          |
717 | product rule                                                          |
718 |                                                                       |
719 +======================================================================*/
720 FUNCTION derived_source_is_locked
721   (p_der_application_id                   IN NUMBER
722   ,p_der_source_code                      IN VARCHAR2
723   ,p_der_source_type_code                 IN VARCHAR2)
724 RETURN BOOLEAN
725 
726 IS
727 
728    --
729    -- Private variables
730    --
731    l_exist   VARCHAR2(1) ;
732    l_return  BOOLEAN;
733 
734    --
735    -- Cursor declarations
736    --
737    CURSOR check_analytical
738    IS
739    SELECT 'x'
740      FROM xla_analytical_sources xas
741     WHERE source_application_id   = p_der_application_id
742       AND source_code             = p_der_source_code
743       AND source_type_code        = p_der_source_type_code
744       AND exists (SELECT 'x'
745                     FROM xla_aad_header_ac_assgns xah
746                        , xla_prod_acct_headers    xpa
747                    WHERE xah.amb_context_code               = xas.amb_context_code
748                      AND xah.analytical_criterion_code      = xas.analytical_criterion_code
749                      AND xah.analytical_criterion_type_code = xas.analytical_criterion_type_code
750                      AND xpa.application_id                 = xah.application_id
751                      AND xpa.amb_context_code               = xah.amb_context_code
752                      AND xpa.product_rule_type_code         = xah.product_rule_type_code
753                      AND xpa.product_rule_code              = xah.product_rule_code
754                      AND xpa.event_class_code               = xah.event_class_code
755                      AND xpa.event_type_code                = xah.event_type_code
756                      AND xpa.locking_status_flag            = 'Y'
757                    UNION
758                   SELECT 'x'
759                     FROM xla_line_defn_ac_assgns  xld
760                        , xla_aad_line_defn_assgns xal
761                        , xla_prod_acct_headers    xpa
762                    WHERE xld.amb_context_code               = xas.amb_context_code
763                      AND xld.analytical_criterion_code      = xas.analytical_criterion_code
764                      AND xld.analytical_criterion_type_code = xas.analytical_criterion_type_code
765                      AND xal.application_id                 = xld.application_id
766                      AND xal.amb_context_code               = xld.amb_context_code
767                      AND xal.event_class_code               = xld.event_class_code
768                      AND xal.event_type_code                = xld.event_type_code
769                      AND xal.line_definition_owner_code     = xld.line_definition_owner_code
770                      AND xal.line_definition_code           = xld.line_definition_code
771                      AND xpa.application_id                 = xal.application_id
772                      AND xpa.amb_context_code               = xal.amb_context_code
773                      AND xpa.product_rule_type_code         = xal.product_rule_type_code
774                      AND xpa.product_rule_code              = xal.product_rule_code
775                      AND xpa.event_class_code               = xal.event_class_code
776                      AND xpa.event_type_code                = xal.event_type_code
777                      AND xpa.locking_status_flag            = 'Y');
778 
779    CURSOR check_descript_details
780    IS
781    SELECT 'x'
782      FROM xla_descript_details_b xdd
783     WHERE source_application_id   = p_der_application_id
784       AND source_code             = p_der_source_code
785       AND source_type_code        = p_der_source_type_code
786       AND source_code is not null
787       AND exists (SELECT 'x'
788                     FROM xla_desc_priorities      xdp
789                        , xla_line_defn_jlt_assgns xld
790                        , xla_aad_line_defn_assgns xal
791                        , xla_prod_acct_headers    xpa
792                    WHERE xdp.description_prio_id        = xdd.description_prio_id
793                      AND xld.application_id             = xdp.application_id
794                      AND xld.amb_context_code           = xdp.amb_context_code
795                      AND xld.description_type_code      = xdp.description_type_code
796                      AND xld.description_code           = xdp.description_code
797                      AND xal.application_id             = xld.application_id
798                      AND xal.amb_context_code           = xld.amb_context_code
799                      AND xal.event_class_code           = xld.event_class_code
800                      AND xal.event_type_code            = xld.event_type_code
801                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
802                      AND xal.line_definition_code       = xld.line_definition_code
803                      AND xpa.application_id             = xal.application_id
804                      AND xpa.amb_context_code           = xal.amb_context_code
805                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
806                      AND xpa.product_rule_code          = xal.product_rule_code
807                      AND xpa.event_class_code           = xal.event_class_code
808                      AND xpa.event_type_code            = xal.event_type_code
809                      AND xpa.locking_status_flag        = 'Y'
810                    UNION
811                   SELECT 'x'
812                     FROM xla_desc_priorities   xdp
813                        , xla_prod_acct_headers xpa
814                    WHERE xdp.description_prio_id     = xdd.description_prio_id
815                      AND xpa.application_id          = xdp.application_id
816                      AND xpa.amb_context_code        = xdp.amb_context_code
817                      AND xpa.description_type_code   = xdp.description_type_code
818                      AND xpa.description_code        = xdp.description_code
819                      AND xpa.locking_status_flag     = 'Y');
820 
821    CURSOR check_desc_conditions
822    IS
823    SELECT 'x'
824      FROM xla_conditions xco
825     WHERE ((source_application_id      = p_der_application_id
826       AND  source_code                 = p_der_source_code
827       AND  source_type_code            = p_der_source_type_code)
828        OR (value_source_application_id = p_der_application_id
829       AND  value_source_type_code      = p_der_source_type_code
830       AND  value_source_code           = p_der_source_code
831       AND  value_source_code IS NOT NULL))
832       AND  exists (SELECT 'x'
833                     FROM xla_desc_priorities      xdp,
834                          xla_line_defn_jlt_assgns xld,
835                          xla_aad_line_defn_assgns xal,
836                          xla_prod_acct_headers    xpa
837                    WHERE xdp.description_prio_id        = xco.description_prio_id
838                      AND xld.application_id             = xdp.application_id
839                      AND xld.amb_context_code           = xdp.amb_context_code
840                      AND xld.description_type_code      = xdp.description_type_code
841                      AND xld.description_code           = xdp.description_code
842                      AND xal.application_id             = xld.application_id
843                      AND xal.amb_context_code           = xld.amb_context_code
844                      AND xal.event_class_code           = xld.event_class_code
845                      AND xal.event_type_code            = xld.event_type_code
846                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
847                      AND xal.line_definition_code       = xld.line_definition_code
848                      AND xpa.application_id             = xal.application_id
849                      AND xpa.amb_context_code           = xal.amb_context_code
850                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
851                      AND xpa.product_rule_code          = xal.product_rule_code
852                      AND xpa.event_class_code           = xal.event_class_code
853                      AND xpa.event_type_code            = xal.event_type_code
854                      AND xpa.locking_status_flag        = 'Y');
855 
856    CURSOR check_sr_conditions
857    IS
858    SELECT 'x'
859      FROM xla_conditions xco
860     WHERE ((source_application_id      = p_der_application_id
861       AND  source_code                 = p_der_source_code
862       AND  source_type_code            = p_der_source_type_code)
863        OR (value_source_application_id = p_der_application_id
864       AND  value_source_type_code      = p_der_source_type_code
865       AND  value_source_code           = p_der_source_code
866       AND  value_source_code IS NOT NULL))
867       AND  exists (SELECT 'x'
868                     FROM xla_seg_rule_details     xsd,
869                          xla_line_defn_adr_assgns xld,
870                          xla_aad_line_defn_assgns xal,
871                          xla_prod_acct_headers    xpa
872                    WHERE xsd.segment_rule_detail_id     = xco.segment_rule_detail_id
873                      AND xld.application_id             = xsd.application_id
874                      AND xld.amb_context_code           = xsd.amb_context_code
875                      AND xld.segment_rule_type_code     = xsd.segment_rule_type_code
876                      AND xld.segment_rule_code          = xsd.segment_rule_code
877                      AND xal.application_id             = xld.application_id
878                      AND xal.amb_context_code           = xld.amb_context_code
879                      AND xal.event_class_code           = xld.event_class_code
880                      AND xal.event_type_code            = xld.event_type_code
881                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
882                      AND xal.line_definition_code       = xld.line_definition_code
883                      AND xpa.application_id             = xal.application_id
884                      AND xpa.amb_context_code           = xal.amb_context_code
885                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
886                      AND xpa.product_rule_code          = xal.product_rule_code
887                      AND xpa.event_class_code           = xal.event_class_code
888                      AND xpa.event_type_code            = xal.event_type_code
889                      AND xpa.locking_status_flag        = 'Y');
890 
891    CURSOR check_lt_conditions
892    IS
893    SELECT 'x'
894      FROM xla_conditions xco
895     WHERE ((source_application_id      = p_der_application_id
896       AND  source_code                 = p_der_source_code
897       AND  source_type_code            = p_der_source_type_code)
898        OR (value_source_application_id = p_der_application_id
899       AND  value_source_type_code      = p_der_source_type_code
900       AND  value_source_code           = p_der_source_code
901       AND  value_source_code IS NOT NULL))
902       AND  exists (SELECT 'x'
903                     FROM xla_line_defn_jlt_assgns xld,
904                          xla_aad_line_defn_assgns xal,
905                          xla_prod_acct_headers    xpa
906                    WHERE xld.application_id             = xco.application_id
907                      AND xld.amb_context_code           = xco.amb_context_code
908                      AND xld.event_class_code           = xco.event_class_code
909                      AND xld.accounting_line_type_code  = xco.accounting_line_type_code
910                      AND xld.accounting_line_code       = xco.accounting_line_code
911                      AND xal.application_id             = xld.application_id
912                      AND xal.amb_context_code           = xld.amb_context_code
913                      AND xal.event_class_code           = xld.event_class_code
914                      AND xal.event_type_code            = xld.event_type_code
915                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
916                      AND xal.line_definition_code       = xld.line_definition_code
917                      AND xpa.application_id             = xal.application_id
918                      AND xpa.amb_context_code           = xal.amb_context_code
919                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
920                      AND xpa.product_rule_code          = xal.product_rule_code
921                      AND xpa.event_class_code           = xal.event_class_code
922                      AND xpa.event_type_code            = xal.event_type_code
923                      AND xpa.locking_status_flag        = 'Y');
924 
925    CURSOR check_sr_details
926    IS
927    SELECT 'x'
928      FROM xla_seg_rule_details xsr
929     WHERE ((value_source_application_id      = p_der_application_id
930       AND  value_source_type_code            = p_der_source_type_code
931       AND  value_source_code                 = p_der_source_code)
932        OR (input_source_application_id       = p_der_application_id
933       AND  input_source_type_code            = p_der_source_type_code
934       AND  input_source_code                 = p_der_source_code
935       AND  input_source_code IS NOT NULL))
936       AND  exists (SELECT 'x'
937                     FROM xla_line_defn_adr_assgns xld,
938                          xla_aad_line_defn_assgns xal,
939                          xla_prod_acct_headers    xpa
940                    WHERE xld.application_id             = xsr.application_id
941                      AND xld.amb_context_code           = xsr.amb_context_code
942                      AND xld.segment_rule_type_code     = xsr.segment_rule_type_code
943                      AND xld.segment_rule_code          = xsr.segment_rule_code
944                      AND xal.application_id             = xld.application_id
945                      AND xal.amb_context_code           = xld.amb_context_code
946                      AND xal.event_class_code           = xld.event_class_code
947                      AND xal.event_type_code            = xld.event_type_code
948                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
949                      AND xal.line_definition_code       = xld.line_definition_code
950                      AND xpa.application_id             = xal.application_id
951                      AND xpa.amb_context_code           = xal.amb_context_code
952                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
953                      AND xpa.product_rule_code          = xal.product_rule_code
954                      AND xpa.event_class_code           = xal.event_class_code
955                      AND xpa.event_type_code            = xal.event_type_code
956                      AND xpa.locking_status_flag        = 'Y');
957 
958 
959 
960    CURSOR check_line_types
961    IS
962    SELECT 'x'
963      FROM xla_jlt_acct_attrs xja
964     WHERE source_application_id   = p_der_application_id
965       AND source_code             = p_der_source_code
966       AND source_type_code        = p_der_source_type_code
967       AND  exists (SELECT 'x'
968                     FROM xla_line_defn_jlt_assgns xld,
969                          xla_aad_line_defn_assgns xal,
970                          xla_prod_acct_headers    xpa
971                    WHERE xld.application_id             = xja.application_id
972                      AND xld.amb_context_code           = xja.amb_context_code
973                      AND xld.event_class_code           = xja.event_class_code
974                      AND xld.accounting_line_type_code  = xja.accounting_line_type_code
975                      AND xld.accounting_line_code       = xja.accounting_line_code
976                      AND xal.application_id             = xld.application_id
977                      AND xal.amb_context_code           = xld.amb_context_code
978                      AND xal.event_class_code           = xld.event_class_code
979                      AND xal.event_type_code            = xld.event_type_code
980                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
981                      AND xal.line_definition_code       = xld.line_definition_code
982                      AND xpa.application_id             = xal.application_id
983                      AND xpa.amb_context_code           = xal.amb_context_code
984                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
985                      AND xpa.product_rule_code          = xal.product_rule_code
986                      AND xpa.event_class_code           = xal.event_class_code
987                      AND xpa.event_type_code            = xal.event_type_code
988                      AND xpa.locking_status_flag        = 'Y');
989 
990    CURSOR check_aad
991    IS
992    SELECT 'x'
993      FROM DUAL
994     WHERE EXISTS (SELECT 'x'
995                     FROM xla_aad_hdr_acct_attrs xah, xla_prod_acct_headers xpa
996                    WHERE xah.source_application_id   = p_der_application_id
997                      AND xah.source_code             = p_der_source_code
998                      AND xah.source_type_code        = p_der_source_type_code
999                      AND xah.source_type_code        IS NOT NULL
1000                      AND xpa.application_id          = xah.application_id
1001                      AND xpa.amb_context_code        = xah.amb_context_code
1002                      AND xpa.product_rule_type_code  = xah.product_rule_type_code
1003                      AND xpa.product_rule_code       = xah.product_rule_code
1004                      AND xpa.event_class_code        = xah.event_class_code
1005                      AND xpa.event_type_code         = xah.event_type_code
1006                      AND xpa.locking_status_flag     = 'Y');
1007 
1008 
1009    l_log_module VARCHAR2(240);
1010 BEGIN
1011   IF g_log_enabled THEN
1012     l_log_module := C_DEFAULT_MODULE||'.derived_source_is_locked';
1013   END IF;
1014 
1015   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1016     trace(p_msg    => 'BEGIN of procedure derived_source_is_locked'
1017          ,p_module => l_log_module
1018          ,p_level  => C_LEVEL_PROCEDURE);
1019   END IF;
1020 
1021   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1022     trace(p_msg    => 'application_id = '||p_der_application_id||
1023                       ',source_code = '||p_der_source_code||
1024                       ',source_type_code = '||p_der_source_type_code
1025          ,p_module => l_log_module
1026          ,p_level  => C_LEVEL_STATEMENT);
1027   END IF;
1028 
1029    IF p_der_source_type_code = 'D' THEN
1030 
1031       OPEN check_analytical;
1032       FETCH check_analytical
1033        INTO l_exist;
1034       IF check_analytical%found THEN
1035          l_return := TRUE;
1036       ELSE
1037          l_return := FALSE;
1038       END IF;
1039       CLOSE check_analytical;
1040 
1041       IF l_return = FALSE THEN
1042 
1043          OPEN check_descript_details;
1044          FETCH check_descript_details
1045           INTO l_exist;
1046          IF check_descript_details%found THEN
1047             l_return := TRUE;
1048          ELSE
1049             l_return := FALSE;
1050          END IF;
1051          CLOSE check_descript_details;
1052       END IF;
1053 
1054       IF l_return = FALSE THEN
1055 
1056          OPEN check_desc_conditions;
1057          FETCH check_desc_conditions
1058           INTO l_exist;
1059          IF check_desc_conditions%found THEN
1060             l_return := TRUE;
1061          ELSE
1062             l_return := FALSE;
1063          END IF;
1064          CLOSE check_desc_conditions;
1065       END IF;
1066 
1067       IF l_return = FALSE THEN
1068 
1069          OPEN check_sr_conditions;
1070          FETCH check_sr_conditions
1071           INTO l_exist;
1072          IF check_sr_conditions%found THEN
1073             l_return := TRUE;
1074          ELSE
1075             l_return := FALSE;
1076          END IF;
1077          CLOSE check_sr_conditions;
1078       END IF;
1079 
1080 
1081       IF l_return = FALSE THEN
1082 
1083          OPEN check_lt_conditions;
1084          FETCH check_lt_conditions
1085           INTO l_exist;
1086          IF check_lt_conditions%found THEN
1087             l_return := TRUE;
1088          ELSE
1089             l_return := FALSE;
1090          END IF;
1091          CLOSE check_lt_conditions;
1092       END IF;
1093 
1094       IF l_return = FALSE THEN
1095 
1096          OPEN check_sr_details;
1097          FETCH check_sr_details
1098           INTO l_exist;
1099          IF check_sr_details%found THEN
1100             l_return := TRUE;
1101          ELSE
1102             l_return := FALSE;
1103          END IF;
1104          CLOSE check_sr_details;
1105       END IF;
1106 
1107 
1108       IF l_return = FALSE THEN
1109 
1110          OPEN check_line_types;
1111          FETCH check_line_types
1112           INTO l_exist;
1113          IF check_line_types%found THEN
1114             l_return := TRUE;
1115          ELSE
1116             l_return := FALSE;
1117          END IF;
1118          CLOSE check_line_types;
1119       END IF;
1120 
1121       IF l_return = FALSE THEN
1122 
1123          OPEN check_aad;
1124          FETCH check_aad
1125           INTO l_exist;
1126          IF check_aad%found THEN
1127             l_return := TRUE;
1128          ELSE
1129             l_return := FALSE;
1130          END IF;
1131          CLOSE check_aad;
1132       END IF;
1133 
1134    END IF;
1135 
1136   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1137     trace(p_msg    => 'END of procedure derived_source_is_locked'
1138          ,p_module => l_log_module
1139          ,p_level  => C_LEVEL_PROCEDURE);
1140   END IF;
1141 
1142    RETURN l_return;
1143 
1144 EXCEPTION
1145    WHEN xla_exceptions_pkg.application_exception THEN
1146 
1147       IF check_analytical%ISOPEN THEN
1148          CLOSE check_analytical;
1149       END IF;
1150       IF check_descript_details%ISOPEN THEN
1151          CLOSE check_descript_details;
1152       END IF;
1153       IF check_sr_details%ISOPEN THEN
1154          CLOSE check_sr_details;
1155       END IF;
1156       IF check_lt_conditions%ISOPEN THEN
1157          CLOSE check_lt_conditions;
1158       END IF;
1159       IF check_sr_conditions%ISOPEN THEN
1160          CLOSE check_sr_conditions;
1161       END IF;
1162       IF check_desc_conditions%ISOPEN THEN
1163          CLOSE check_desc_conditions;
1164       END IF;
1165       IF check_line_types%ISOPEN THEN
1166          CLOSE check_line_types;
1167       END IF;
1168 
1169       RAISE;
1170 
1171 WHEN OTHERS                                   THEN
1172 
1173       IF check_analytical%ISOPEN THEN
1174          CLOSE check_analytical;
1175       END IF;
1176       IF check_sr_details%ISOPEN THEN
1177          CLOSE check_sr_details;
1178       END IF;
1179       IF check_lt_conditions%ISOPEN THEN
1180          CLOSE check_lt_conditions;
1181       END IF;
1182       IF check_sr_conditions%ISOPEN THEN
1183          CLOSE check_sr_conditions;
1184       END IF;
1185       IF check_desc_conditions%ISOPEN THEN
1186          CLOSE check_desc_conditions;
1187       END IF;
1188       IF check_descript_details%ISOPEN THEN
1189          CLOSE check_descript_details;
1190       END IF;
1191       IF check_line_types%ISOPEN THEN
1192          CLOSE check_line_types;
1193       END IF;
1194 
1195    xla_exceptions_pkg.raise_message
1196       (p_location   => 'xla_sources_pkg.derived_source_is_locked');
1197 
1198 END derived_source_is_locked;
1199 
1200 /*======================================================================+
1201 |                                                                       |
1202 | Public Function                                                       |
1203 |                                                                       |
1204 | source_in_use                                                         |
1205 |                                                                       |
1206 | Returns true if the source is being used                              |
1207 |                                                                       |
1208 +======================================================================*/
1209 FUNCTION source_in_use
1210   (p_event                            IN VARCHAR2
1211   ,p_application_id                   IN NUMBER
1212   ,p_source_code                      IN VARCHAR2
1213   ,p_source_type_code                 IN VARCHAR2
1214   ,p_source_msg                       OUT NOCOPY VARCHAR2)
1215 RETURN BOOLEAN
1216 
1217 IS
1218 
1219    --
1220    -- Private variables
1221    --
1222    l_exist   VARCHAR2(1) ;
1223    l_return  BOOLEAN;
1224 
1225    --
1226    -- Cursor declarations
1227    --
1228    CURSOR check_entity_sources
1229    IS
1230    SELECT 'x'
1231      FROM xla_event_sources
1232     WHERE source_application_id   = p_application_id
1233       AND source_code             = p_source_code
1234       AND source_type_code        = p_source_type_code;
1235 
1236    CURSOR check_ssa_acctg_sources
1237    IS
1238    SELECT 'x'
1239      FROM xla_evt_class_acct_attrs
1240     WHERE source_application_id   = p_application_id
1241       AND source_code             = p_source_code
1242       AND source_type_code        = p_source_type_code;
1243 
1244    CURSOR check_source_params
1245    IS
1246    SELECT 'x'
1247      FROM xla_source_params
1248     WHERE ref_source_application_id   = p_application_id
1249       AND ref_source_code             = p_source_code
1250       AND ref_source_type_code        = p_source_type_code;
1251 
1252    CURSOR check_analytical
1253    IS
1254    SELECT 'x'
1255      FROM xla_analytical_sources
1256     WHERE source_application_id   = p_application_id
1257       AND source_code             = p_source_code
1258       AND source_type_code        = p_source_type_code;
1259 
1260    CURSOR check_acct_line_sources
1261    IS
1262    SELECT 'x'
1263      FROM xla_jlt_acct_attrs
1264     WHERE source_application_id   = p_application_id
1265       AND source_code             = p_source_code
1266       AND source_type_code        = p_source_type_code;
1267 
1268    CURSOR check_aad_acct_attr
1269    IS
1270    SELECT 'x'
1271      FROM xla_aad_hdr_acct_attrs
1272     WHERE source_application_id   = p_application_id
1273       AND source_code             = p_source_code
1274       AND source_type_code        = p_source_type_code;
1275 
1276    CURSOR check_descript_details
1277    IS
1278    SELECT 'x'
1279      FROM xla_descript_details_b
1280     WHERE source_application_id   = p_application_id
1281       AND source_code             = p_source_code
1282       AND source_type_code        = p_source_type_code
1283       AND source_code is not null;
1284 
1285    CURSOR check_seg_rule_details
1286    IS
1287    SELECT 'x'
1288      FROM DUAL
1289     WHERE EXISTS
1290           (SELECT 'x'
1291              FROM xla_seg_rule_details
1292             WHERE value_source_application_id = p_application_id
1293               AND value_source_code           = p_source_code
1294               AND value_source_type_code      = p_source_type_code
1295               AND value_source_code is not null
1296            UNION
1297            SELECT 'x'
1298              FROM xla_seg_rule_details
1299             WHERE input_source_application_id = p_application_id
1300               AND input_source_code           = p_source_code
1301               AND input_source_type_code      = p_source_type_code
1302               AND input_source_code is not null);
1303 
1304    CURSOR check_conditions
1305    IS
1306    SELECT 'x'
1307      FROM DUAL
1308     WHERE EXISTS
1309           (SELECT 'x'
1310              FROM xla_conditions
1311             WHERE source_application_id = p_application_id
1312               AND source_code           = p_source_code
1313               AND source_type_code      = p_source_type_code
1314            UNION
1315            SELECT 'x'
1316              FROM xla_conditions
1317             WHERE value_source_application_id = p_application_id
1318               AND value_source_code           = p_source_code
1319               AND value_source_type_code      = p_source_type_code
1320               AND value_source_code is not null);
1321 
1322    CURSOR check_input_source
1323    IS
1324    SELECT 'x'
1325      FROM xla_seg_rule_details
1326     WHERE input_source_application_id   = p_application_id
1327       AND input_source_code             = p_source_code
1328       AND input_source_type_code        = p_source_type_code
1329       AND input_source_code is not null;
1330 
1331    l_log_module VARCHAR2(240);
1332 BEGIN
1333   IF g_log_enabled THEN
1334     l_log_module := C_DEFAULT_MODULE||'.source_in_use';
1335   END IF;
1336 
1337   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1338     trace(p_msg    => 'BEGIN of procedure source_in_use'
1339          ,p_module => l_log_module
1340          ,p_level  => C_LEVEL_PROCEDURE);
1341   END IF;
1342 
1343   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1344     trace(p_msg    => 'event = '||p_event||
1345                       ',application_id = '||p_application_id||
1346                       ',source_code = '||p_source_code||
1347                       ',source_type_code = '||p_source_type_code
1348          ,p_module => l_log_module
1349          ,p_level  => C_LEVEL_STATEMENT);
1350   END IF;
1351 
1352    IF p_source_type_code = 'S' THEN
1353 
1354       IF p_event in ('DELETE', 'DISABLE') THEN
1355 
1356          OPEN check_entity_sources;
1357          FETCH check_entity_sources
1358           INTO l_exist;
1359          IF check_entity_sources%found THEN
1360             l_return := TRUE;
1361             p_source_msg := 'XLA_AB_SOURCE_IN_ENTITIES';
1362          ELSE
1363             l_return := FALSE;
1364          END IF;
1365          CLOSE check_entity_sources;
1366 
1367          IF l_return = FALSE THEN
1368 
1369             OPEN check_source_params;
1370             FETCH check_source_params
1371              INTO l_exist;
1372             IF check_source_params%found THEN
1373                l_return := TRUE;
1374                p_source_msg := 'XLA_AB_SOURCE_IN_CUSTOM_PARAMS';
1375             ELSE
1376                l_return := FALSE;
1377             END IF;
1378             CLOSE check_source_params;
1379          END IF;
1380 
1381          IF l_return = FALSE THEN
1382 
1383             OPEN check_acct_line_sources;
1384             FETCH check_acct_line_sources
1385              INTO l_exist;
1386             IF check_acct_line_sources%found THEN
1387                l_return := TRUE;
1388                p_source_msg := 'XLA_AB_SOURCE_IN_JOURNAL_TYPE';
1389             ELSE
1390                l_return := FALSE;
1391             END IF;
1392             CLOSE check_acct_line_sources;
1393          END IF;
1394 
1395          IF l_return = FALSE THEN
1396 
1397             OPEN check_aad_acct_attr;
1398             FETCH check_aad_acct_attr
1399              INTO l_exist;
1400             IF check_aad_acct_attr%found THEN
1401                l_return := TRUE;
1402                p_source_msg := 'XLA_AB_SOURCE_IN_HEADER_ASSGN';
1403             ELSE
1404                l_return := FALSE;
1405             END IF;
1406             CLOSE check_aad_acct_attr;
1407          END IF;
1408 
1409          IF l_return = FALSE THEN
1410 
1411             OPEN check_analytical;
1412             FETCH check_analytical
1413              INTO l_exist;
1414             IF check_analytical%found THEN
1415                l_return := TRUE;
1416                p_source_msg := 'XLA_AB_SOURCE_IN_ANALYTICAL';
1417             ELSE
1418                l_return := FALSE;
1419             END IF;
1420             CLOSE check_analytical;
1421          END IF;
1422 
1423          IF l_return = FALSE THEN
1424 
1425             OPEN check_descript_details;
1426             FETCH check_descript_details
1427              INTO l_exist;
1428             IF check_descript_details%found THEN
1429                l_return := TRUE;
1430                p_source_msg := 'XLA_AB_SOURCE_IN_DESCRIPTIONS';
1431             ELSE
1432                l_return := FALSE;
1433             END IF;
1434             CLOSE check_descript_details;
1435          END IF;
1436 
1437          IF l_return = FALSE THEN
1438 
1439             OPEN check_seg_rule_details;
1440             FETCH check_seg_rule_details
1441              INTO l_exist;
1442             IF check_seg_rule_details%found THEN
1443                l_return := TRUE;
1444                p_source_msg := 'XLA_AB_SOURCE_IN_ADR';
1445             ELSE
1446                l_return := FALSE;
1447             END IF;
1448             CLOSE check_seg_rule_details;
1449          END IF;
1450 
1451          IF l_return = FALSE THEN
1452 
1453             OPEN check_conditions;
1454             FETCH check_conditions
1455              INTO l_exist;
1456             IF check_conditions%found THEN
1457                l_return := TRUE;
1458                p_source_msg := 'XLA_AB_SOURCE_IN_CONDITIONS';
1459             ELSE
1460                l_return := FALSE;
1461             END IF;
1462             CLOSE check_conditions;
1463          END IF;
1464 
1465       ELSIF p_event  = 'UPDATE_DT' THEN
1466 
1467          OPEN check_ssa_acctg_sources;
1468          FETCH check_ssa_acctg_sources
1469           INTO l_exist;
1470          IF check_ssa_acctg_sources%found THEN
1471             l_return := TRUE;
1472             p_source_msg := 'XLA_AB_SOURCE_IN_EVENT_CLASS';
1473          ELSE
1474             l_return := FALSE;
1475          END IF;
1476          CLOSE check_ssa_acctg_sources;
1477 
1478          IF l_return = FALSE THEN
1479 
1480             OPEN check_source_params;
1481             FETCH check_source_params
1482              INTO l_exist;
1483             IF check_source_params%found THEN
1484                l_return := TRUE;
1485                p_source_msg := 'XLA_AB_SOURCE_IN_CUSTOM_PARAMS';
1486             ELSE
1487                l_return := FALSE;
1488             END IF;
1489             CLOSE check_source_params;
1490          END IF;
1491 
1492          IF l_return = FALSE THEN
1493 
1494             OPEN check_acct_line_sources;
1495             FETCH check_acct_line_sources
1496              INTO l_exist;
1497             IF check_acct_line_sources%found THEN
1498                l_return := TRUE;
1499                p_source_msg := 'XLA_AB_SOURCE_IN_JOURNAL_TYPE';
1500             ELSE
1501                l_return := FALSE;
1502             END IF;
1503             CLOSE check_acct_line_sources;
1504          END IF;
1505 
1506          IF l_return = FALSE THEN
1507 
1508             OPEN check_aad_acct_attr;
1509             FETCH check_aad_acct_attr
1510              INTO l_exist;
1511             IF check_aad_acct_attr%found THEN
1512                l_return := TRUE;
1513                p_source_msg := 'XLA_AB_SOURCE_IN_HEADER_ASSGN';
1514             ELSE
1515                l_return := FALSE;
1516             END IF;
1517             CLOSE check_aad_acct_attr;
1518          END IF;
1519 
1520          IF l_return = FALSE THEN
1521 
1522             OPEN check_analytical;
1523             FETCH check_analytical
1524              INTO l_exist;
1525             IF check_analytical%found THEN
1526                l_return := TRUE;
1527                p_source_msg := 'XLA_AB_SOURCE_IN_ANALYTICAL';
1528             ELSE
1529                l_return := FALSE;
1530             END IF;
1531             CLOSE check_analytical;
1532          END IF;
1533 
1534          IF l_return = FALSE THEN
1535 
1536             OPEN check_descript_details;
1537             FETCH check_descript_details
1538              INTO l_exist;
1539             IF check_descript_details%found THEN
1540                l_return := TRUE;
1541                p_source_msg := 'XLA_AB_SOURCE_IN_DESCRIPTIONS';
1542             ELSE
1543                l_return := FALSE;
1544             END IF;
1545             CLOSE check_descript_details;
1546          END IF;
1547 
1548          IF l_return = FALSE THEN
1549 
1550             OPEN check_seg_rule_details;
1551             FETCH check_seg_rule_details
1552              INTO l_exist;
1553             IF check_seg_rule_details%found THEN
1554                l_return := TRUE;
1555                p_source_msg := 'XLA_AB_SOURCE_IN_ADR';
1556             ELSE
1557                l_return := FALSE;
1558             END IF;
1559             CLOSE check_seg_rule_details;
1560          END IF;
1561          IF l_return = FALSE THEN
1562 
1563             OPEN check_conditions;
1564             FETCH check_conditions
1565              INTO l_exist;
1566             IF check_conditions%found THEN
1567                l_return := TRUE;
1568                p_source_msg := 'XLA_AB_SOURCE_IN_CONDITIONS';
1569             ELSE
1570                l_return := FALSE;
1571             END IF;
1572             CLOSE check_conditions;
1573          END IF;
1574 
1575       ELSIF p_event = ('UPDATE_VS') THEN
1576 
1577          OPEN check_input_source;
1578          FETCH check_input_source
1579           INTO l_exist;
1580          IF check_input_source%found THEN
1581             l_return := TRUE;
1582             p_source_msg := 'XLA_AB_SOURCE_IN_DESCRIPTIONS';
1583          ELSE
1584             l_return := FALSE;
1585          END IF;
1586          CLOSE check_input_source;
1587 
1588          IF l_return = FALSE THEN
1589 
1590             OPEN check_conditions;
1591             FETCH check_conditions
1592              INTO l_exist;
1593             IF check_conditions%found THEN
1594                l_return := TRUE;
1595                p_source_msg := 'XLA_AB_SOURCE_IN_CONDITIONS';
1596             ELSE
1597                l_return := FALSE;
1598             END IF;
1599             CLOSE check_conditions;
1600          END IF;
1601 
1602       END IF;
1603 
1604    ELSIF p_source_type_code = 'D' THEN
1605 
1606       IF p_event in ('DELETE', 'DISABLE', 'UPDATE_DT') THEN
1607 
1608          OPEN check_acct_line_sources;
1609          FETCH check_acct_line_sources
1610           INTO l_exist;
1611          IF check_acct_line_sources%found THEN
1612             l_return := TRUE;
1613             p_source_msg := 'XLA_AB_SOURCE_IN_JOURNAL_TYPE';
1614          ELSE
1615             l_return := FALSE;
1616          END IF;
1617          CLOSE check_acct_line_sources;
1618 
1619          IF l_return = FALSE THEN
1620 
1621             OPEN check_aad_acct_attr;
1622             FETCH check_aad_acct_attr
1623              INTO l_exist;
1624             IF check_aad_acct_attr%found THEN
1625                l_return := TRUE;
1626                p_source_msg := 'XLA_AB_SOURCE_IN_HEADER_ASSGN';
1627             ELSE
1628                l_return := FALSE;
1629             END IF;
1630             CLOSE check_aad_acct_attr;
1631          END IF;
1632 
1633          IF l_return = FALSE THEN
1634 
1635             OPEN check_ssa_acctg_sources;
1636             FETCH check_ssa_acctg_sources
1637              INTO l_exist;
1638             IF check_ssa_acctg_sources%found THEN
1639                l_return := TRUE;
1640                p_source_msg := 'XLA_AB_SOURCE_IN_EVENT_CLASS';
1641             ELSE
1642                l_return := FALSE;
1643             END IF;
1644             CLOSE check_ssa_acctg_sources;
1645          END IF;
1646 
1647          IF l_return = FALSE THEN
1648 
1649             OPEN check_analytical;
1650             FETCH check_analytical
1651              INTO l_exist;
1652             IF check_analytical%found THEN
1653                l_return := TRUE;
1654                p_source_msg := 'XLA_AB_SOURCE_IN_ANALYTICAL';
1655             ELSE
1656                l_return := FALSE;
1657             END IF;
1658             CLOSE check_analytical;
1659          END IF;
1660 
1661          IF l_return = FALSE THEN
1662 
1663             OPEN check_descript_details;
1664             FETCH check_descript_details
1665              INTO l_exist;
1666             IF check_descript_details%found THEN
1667                l_return := TRUE;
1668                p_source_msg := 'XLA_AB_SOURCE_IN_DESCRIPTIONS';
1669             ELSE
1670                l_return := FALSE;
1671             END IF;
1672             CLOSE check_descript_details;
1673          END IF;
1674 
1675          IF l_return = FALSE THEN
1676 
1677             OPEN check_seg_rule_details;
1678             FETCH check_seg_rule_details
1679              INTO l_exist;
1680             IF check_seg_rule_details%found THEN
1681                l_return := TRUE;
1682                p_source_msg := 'XLA_AB_SOURCE_IN_ADR';
1683             ELSE
1684                l_return := FALSE;
1685             END IF;
1686             CLOSE check_seg_rule_details;
1687          END IF;
1688 
1689          IF l_return = FALSE THEN
1690 
1691             OPEN check_conditions;
1692             FETCH check_conditions
1693              INTO l_exist;
1694             IF check_conditions%found THEN
1695                l_return := TRUE;
1696                p_source_msg := 'XLA_AB_SOURCE_IN_CONDITIONS';
1697             ELSE
1698                l_return := FALSE;
1699             END IF;
1700             CLOSE check_conditions;
1701          END IF;
1702 
1703       END IF;
1704    END IF;
1705 
1706   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1707     trace(p_msg    => 'END of procedure source_in_use'
1708          ,p_module => l_log_module
1709          ,p_level  => C_LEVEL_PROCEDURE);
1710   END IF;
1711 
1712    RETURN l_return;
1713 
1714 EXCEPTION
1715    WHEN xla_exceptions_pkg.application_exception THEN
1716       IF check_acct_line_sources%ISOPEN THEN
1717          CLOSE check_acct_line_sources;
1718       END IF;
1719       IF check_analytical%ISOPEN THEN
1720          CLOSE check_analytical;
1721       END IF;
1722       IF check_conditions%ISOPEN THEN
1723          CLOSE check_conditions;
1724       END IF;
1725       IF check_input_source%ISOPEN THEN
1726          CLOSE check_input_source;
1727       END IF;
1728       IF check_seg_rule_details%ISOPEN THEN
1729          CLOSE check_seg_rule_details;
1730       END IF;
1731       IF check_descript_details%ISOPEN THEN
1732          CLOSE check_descript_details;
1733       END IF;
1734       IF check_source_params%ISOPEN THEN
1735          CLOSE check_source_params;
1736       END IF;
1737       IF check_entity_sources%ISOPEN THEN
1738          CLOSE check_entity_sources;
1739       END IF;
1740 
1741       RAISE;
1742 
1743 WHEN OTHERS                                   THEN
1744       IF check_acct_line_sources%ISOPEN THEN
1745          CLOSE check_acct_line_sources;
1746       END IF;
1747       IF check_analytical%ISOPEN THEN
1748          CLOSE check_analytical;
1749       END IF;
1750       IF check_conditions%ISOPEN THEN
1751          CLOSE check_conditions;
1752       END IF;
1753       IF check_input_source%ISOPEN THEN
1754          CLOSE check_input_source;
1755       END IF;
1756       IF check_seg_rule_details%ISOPEN THEN
1757          CLOSE check_seg_rule_details;
1758       END IF;
1759       IF check_descript_details%ISOPEN THEN
1760          CLOSE check_descript_details;
1761       END IF;
1762       IF check_source_params%ISOPEN THEN
1763          CLOSE check_source_params;
1764       END IF;
1765       IF check_entity_sources%ISOPEN THEN
1766          CLOSE check_entity_sources;
1767       END IF;
1768 
1769    xla_exceptions_pkg.raise_message
1770       (p_location   => 'xla_sources_pkg.source_in_use');
1771 
1772 END source_in_use;
1773 
1774 /*======================================================================+
1775 |                                                                       |
1776 | Public Function                                                       |
1777 |                                                                       |
1778 | source_is_locked                                                      |
1779 |                                                                       |
1780 | Returns true if the source is being used by a locked product rule     |
1781 |                                                                       |
1782 +======================================================================*/
1783 FUNCTION source_is_locked
1784   (p_application_id                   IN NUMBER
1785   ,p_source_code                      IN VARCHAR2
1786   ,p_source_type_code                 IN VARCHAR2)
1787 RETURN BOOLEAN
1788 
1789 IS
1790 
1791    --
1792    -- Private variables
1793    --
1794    l_exist   VARCHAR2(1);
1795    l_return  BOOLEAN;
1796 
1797    --
1798    -- Cursor declarations
1799    --
1800 
1801    CURSOR check_analytical
1802    IS
1803    SELECT 'x'
1804      FROM xla_analytical_sources xas
1805     WHERE source_application_id   = p_application_id
1806       AND source_code             = p_source_code
1807       AND source_type_code        = p_source_type_code
1808       AND exists (SELECT 'x'
1809                     FROM xla_aad_header_ac_assgns xah
1810                        , xla_prod_acct_headers    xpa
1811                    WHERE xah.amb_context_code               = xas.amb_context_code
1812                      AND xah.analytical_criterion_code      = xas.analytical_criterion_code
1813                      AND xah.analytical_criterion_type_code = xas.analytical_criterion_type_code
1814                      AND xpa.application_id                 = xah.application_id
1815                      AND xpa.amb_context_code               = xah.amb_context_code
1816                      AND xpa.product_rule_type_code         = xah.product_rule_type_code
1817                      AND xpa.product_rule_code              = xah.product_rule_code
1818                      AND xpa.event_class_code               = xah.event_class_code
1819                      AND xpa.event_type_code                = xah.event_type_code
1820                      AND xpa.locking_status_flag            = 'Y'
1821                    UNION
1822                   SELECT 'x'
1823                     FROM xla_line_defn_ac_assgns  xad
1824                        , xla_aad_line_defn_assgns xal
1825                        , xla_prod_acct_headers    xpa
1826                    WHERE xad.amb_context_code               = xas.amb_context_code
1827                      AND xad.analytical_criterion_code      = xas.analytical_criterion_code
1828                      AND xad.analytical_criterion_type_code = xas.analytical_criterion_type_code
1829                      AND xal.application_id                 = xad.application_id
1830                      AND xal.amb_context_code               = xad.amb_context_code
1831                      AND xal.event_class_code               = xad.event_class_code
1832                      AND xal.event_type_code                = xad.event_type_code
1833                      AND xal.line_definition_owner_code     = xad.line_definition_owner_code
1834                      AND xal.line_definition_code           = xad.line_definition_code
1835                      AND xpa.application_id                 = xal.application_id
1836                      AND xpa.amb_context_code               = xal.amb_context_code
1837                      AND xpa.event_class_code               = xal.event_class_code
1838                      AND xpa.event_type_code                = xal.event_type_code
1839                      AND xpa.product_rule_type_code         = xal.product_rule_type_code
1840                      AND xpa.product_rule_code              = xal.product_rule_code
1841                      AND xpa.locking_status_flag            = 'Y');
1842 
1843    CURSOR check_descript_details
1844    IS
1845    SELECT 'x'
1846      FROM xla_descript_details_b  xdd
1847     WHERE source_application_id   = p_application_id
1848       AND source_code             = p_source_code
1849       AND source_type_code        = p_source_type_code
1850       AND source_code is not null
1851       AND exists (SELECT 'x'
1852                     FROM xla_desc_priorities      xdp
1853                         ,xla_line_defn_jlt_assgns xjl
1854                         ,xla_aad_line_defn_assgns xal
1855                         ,xla_prod_acct_headers    xpa
1856                    WHERE xdp.description_prio_id        = xdd.description_prio_id
1857                      AND xjl.application_id             = xdp.application_id
1858                      AND xjl.amb_context_code           = xdp.amb_context_code
1859                      AND xjl.description_type_code      = xdp.description_type_code
1860                      AND xjl.description_code           = xdp.description_code
1861                      AND xal.application_id             = xjl.application_id
1862                      AND xal.amb_context_code           = xjl.amb_context_code
1863                      AND xal.event_class_code           = xjl.event_class_code
1864                      AND xal.event_type_code            = xjl.event_type_code
1865                      AND xal.line_definition_owner_code = xjl.line_definition_owner_code
1866                      AND xal.line_definition_code       = xjl.line_definition_code
1867                      AND xpa.application_id             = xal.application_id
1868                      AND xpa.amb_context_code           = xal.amb_context_code
1869                      AND xpa.event_class_code           = xal.event_class_code
1870                      AND xpa.event_type_code            = xal.event_type_code
1871                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
1872                      AND xpa.product_rule_code          = xal.product_rule_code
1873                      AND xpa.locking_status_flag        = 'Y'
1874                    UNION
1875                   SELECT 'x'
1876                     FROM xla_desc_priorities   xdp
1877                        , xla_prod_acct_headers xpa
1878                    WHERE xdp.description_prio_id     = xdd.description_prio_id
1879                      AND xpa.application_id          = xdp.application_id
1880                      AND xpa.amb_context_code        = xdp.amb_context_code
1881                      AND xpa.description_type_code   = xdp.description_type_code
1882                      AND xpa.description_code        = xdp.description_code
1883                      AND xpa.locking_status_flag     = 'Y');
1884 
1885    CURSOR check_desc_conditions
1886    IS
1887    SELECT 'x'
1888      FROM xla_conditions xco
1889     WHERE ((source_application_id      = p_application_id
1890       AND  source_code                 = p_source_code
1891       AND  source_type_code            = p_source_type_code)
1892        OR (value_source_application_id = p_application_id
1893       AND  value_source_type_code      = p_source_type_code
1894       AND  value_source_code           = p_source_code
1895       AND  value_source_code IS NOT NULL))
1896       AND  exists (SELECT 'x'
1897                     FROM xla_desc_priorities      xdp
1898                         ,xla_line_defn_jlt_assgns xld
1899                         ,xla_aad_line_defn_assgns xal
1900                         ,xla_prod_acct_headers    xpa
1901                    WHERE xdp.description_prio_id        = xco.description_prio_id
1902                      AND xld.application_id             = xdp.application_id
1903                      AND xld.amb_context_code           = xdp.amb_context_code
1904                      AND xld.description_type_code      = xdp.description_type_code
1905                      AND xld.description_code           = xdp.description_code
1906                      AND xal.application_id             = xld.application_id
1907                      AND xal.amb_context_code           = xld.amb_context_code
1908                      AND xal.event_class_code           = xld.event_class_code
1909                      AND xal.event_type_code            = xld.event_type_code
1910                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
1911                      AND xal.line_definition_code       = xld.line_definition_code
1912                      AND xpa.application_id             = xal.application_id
1913                      AND xpa.amb_context_code           = xal.amb_context_code
1914                      AND xpa.event_class_code           = xal.event_class_code
1915                      AND xpa.event_type_code            = xal.event_type_code
1916                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
1917                      AND xpa.product_rule_code          = xal.product_rule_code
1918                      AND xpa.locking_status_flag        = 'Y');
1919 
1920 
1921    CURSOR check_sr_conditions
1922    IS
1923    SELECT 'x'
1924      FROM xla_conditions xco
1925     WHERE ((source_application_id       = p_application_id
1926       AND  source_code                 = p_source_code
1927       AND  source_type_code            = p_source_type_code)
1928        OR (value_source_application_id = p_application_id
1929       AND  value_source_type_code      = p_source_type_code
1930       AND  value_source_code           = p_source_code
1931       AND  value_source_code IS NOT NULL))
1932       AND  exists (SELECT 'x'
1933                     FROM xla_seg_rule_details     xsr
1934                         ,xla_line_defn_adr_assgns xld
1935                         ,xla_aad_line_defn_assgns xal
1936                         ,xla_prod_acct_headers    xpa
1937                    WHERE xsr.segment_rule_detail_id     = xco.segment_rule_detail_id
1938                      AND xld.application_id             = xsr.application_id
1939                      AND xld.amb_context_code           = xsr.amb_context_code
1940                      AND xld.segment_rule_type_code     = xsr.segment_rule_type_code
1941                      AND xld.segment_rule_code          = xsr.segment_rule_code
1942                      AND xal.application_id             = xld.application_id
1943                      AND xal.amb_context_code           = xld.amb_context_code
1944                      AND xal.event_class_code           = xld.event_class_code
1945                      AND xal.event_type_code            = xld.event_type_code
1946                      AND xal.line_definition_owner_code = xld.line_definition_owner_code
1947                      AND xal.line_definition_code       = xld.line_definition_code
1948                      AND xpa.application_id             = xal.application_id
1949                      AND xpa.amb_context_code           = xal.amb_context_code
1950                      AND xpa.event_class_code           = xal.event_class_code
1951                      AND xpa.event_type_code            = xal.event_type_code
1952                      AND xpa.product_rule_type_code     = xal.product_rule_type_code
1953                      AND xpa.product_rule_code          = xal.product_rule_code
1954                      AND xpa.locking_status_flag        = 'Y');
1955 
1956 
1957    CURSOR check_lt_conditions
1958    IS
1959    SELECT 'x'
1960      FROM xla_conditions c
1961     WHERE ((source_application_id       = p_application_id
1962       AND  source_code                 = p_source_code
1963       AND  source_type_code            = p_source_type_code)
1964        OR (value_source_application_id = p_application_id
1965       AND  value_source_type_code      = p_source_type_code
1966       AND  value_source_code           = p_source_code
1967       AND  value_source_code IS NOT NULL))
1968       AND  exists (SELECT 'x'
1969                     FROM xla_line_defn_jlt_assgns pl
1970                         ,xla_aad_line_defn_assgns p
1971                         ,xla_prod_acct_headers    xpa
1972                    WHERE pl.application_id             = c.application_id
1973                      AND pl.amb_context_code           = c.amb_context_code
1974                      AND pl.event_class_code           = c.event_class_code
1975                      AND pl.accounting_line_type_code  = c.accounting_line_type_code
1976                      AND pl.accounting_line_code       = c.accounting_line_code
1977                      AND pl.application_id             = p.application_id
1978                      AND pl.amb_context_code           = p.amb_context_code
1979                      AND pl.event_class_code           = p.event_class_code
1980                      AND pl.event_type_code            = p.event_type_code
1981                      AND pl.line_definition_owner_code = p.line_definition_owner_code
1982                      AND pl.line_definition_code       = p.line_definition_code
1983                      AND xpa.application_id            = p.application_id
1984                      AND xpa.amb_context_code          = p.amb_context_code
1985                      AND xpa.event_class_code          = p.event_class_code
1986                      AND xpa.event_type_code           = p.event_type_code
1987                      AND xpa.product_rule_type_code    = p.product_rule_type_code
1988                      AND xpa.product_rule_code         = p.product_rule_code
1989                      AND xpa.locking_status_flag       = 'Y');
1990 
1991    CURSOR check_sr_details
1992    IS
1993    SELECT 'x'
1994      FROM xla_seg_rule_details sd
1995     WHERE ((value_source_application_id       = p_application_id
1996       AND  value_source_type_code            = p_source_type_code
1997       AND  value_source_code                 = p_source_code)
1998        OR (input_source_application_id       = p_application_id
1999       AND  input_source_type_code            = p_source_type_code
2000       AND  input_source_code                 = p_source_code
2001       AND  input_source_code IS NOT NULL))
2002       AND  exists (SELECT 'x'
2003                     FROM xla_line_defn_adr_assgns pl
2004                         ,xla_aad_line_defn_assgns p
2005                         ,xla_prod_acct_headers    xpa
2006                    WHERE pl.application_id             = sd.application_id
2007                      AND pl.amb_context_code           = sd.amb_context_code
2008                      AND pl.segment_rule_type_code     = sd.segment_rule_type_code
2009                      AND pl.segment_rule_code          = sd.segment_rule_code
2010                      AND pl.application_id             = p.application_id
2011                      AND pl.amb_context_code           = p.amb_context_code
2012                      AND pl.event_class_code           = p.event_class_code
2013                      AND pl.event_type_code            = p.event_type_code
2014                      AND pl.line_definition_owner_code = p.line_definition_owner_code
2015                      AND pl.line_definition_code       = p.line_definition_code
2016                      AND xpa.application_id            = p.application_id
2017                      AND xpa.amb_context_code          = p.amb_context_code
2018                      AND xpa.event_class_code          = p.event_class_code
2019                      AND xpa.event_type_code           = p.event_type_code
2020                      AND xpa.product_rule_type_code    = p.product_rule_type_code
2021                      AND xpa.product_rule_code         = p.product_rule_code
2022                      AND xpa.locking_status_flag       = 'Y');
2023 
2024    CURSOR check_line_types
2025    IS
2026    SELECT 'x'
2027      FROM xla_jlt_acct_attrs r
2028     WHERE source_application_id   = p_application_id
2029       AND source_code             = p_source_code
2030       AND source_type_code        = p_source_type_code
2031       AND exists (SELECT 'x'
2032                     FROM xla_line_defn_jlt_assgns pl
2033                         ,xla_aad_line_defn_assgns p
2034                         ,xla_prod_acct_headers    xpa
2035                    WHERE pl.application_id             = r.application_id
2036                      AND pl.amb_context_code           = r.amb_context_code
2037                      AND pl.event_class_code           = r.event_class_code
2038                      AND pl.accounting_line_type_code  = r.accounting_line_type_code
2039                      AND pl.accounting_line_code       = r.accounting_line_code
2040                      AND pl.application_id             = p.application_id
2041                      AND pl.amb_context_code           = p.amb_context_code
2042                      AND pl.event_class_code           = p.event_class_code
2043                      AND pl.event_type_code            = p.event_type_code
2044                      AND pl.line_definition_owner_code = p.line_definition_owner_code
2045                      AND pl.line_definition_code       = p.line_definition_code
2046                      AND xpa.application_id            = p.application_id
2047                      AND xpa.amb_context_code          = p.amb_context_code
2048                      AND xpa.event_class_code          = p.event_class_code
2049                      AND xpa.event_type_code           = p.event_type_code
2050                      AND xpa.product_rule_type_code    = p.product_rule_type_code
2051                      AND xpa.product_rule_code         = p.product_rule_code
2052                      AND xpa.locking_status_flag       = 'Y');
2053 
2054    CURSOR check_aad
2055    IS
2056    SELECT 'x'
2057      FROM DUAL
2058     WHERE EXISTS (SELECT 'x'
2059                     FROM xla_aad_hdr_acct_attrs r, xla_prod_acct_headers p
2060                    WHERE r.source_application_id   = p_application_id
2061                      AND r.source_code             = p_source_code
2062                      AND r.source_type_code        = p_source_type_code
2063                      AND r.source_type_code        IS NOT NULL
2064                      AND p.application_id          = r.application_id
2065                      AND p.amb_context_code        = r.amb_context_code
2066                      AND p.product_rule_type_code  = r.product_rule_type_code
2067                      AND p.product_rule_code       = r.product_rule_code
2068                      AND p.event_class_code        = r.event_class_code
2069                      AND p.event_type_code         = r.event_type_code
2070                      AND p.locking_status_flag     = 'Y');
2071 
2072    CURSOR c_check_derived_sources
2073    IS
2074    SELECT application_id, source_type_code, source_code
2075      FROM xla_sources_b r
2076     WHERE exists (SELECT 'x'
2077                     FROM xla_source_params p
2078                    WHERE p.ref_source_application_id   = p_application_id
2079                      AND p.ref_source_code             = p_source_code
2080                      AND p.ref_source_type_code        = p_source_type_code
2081                      AND p.application_id              = r.application_id
2082                      AND p.source_type_code            = r.source_type_code
2083                      AND p.source_code                 = r.source_code);
2084 
2085    l_check_derived_sources    c_check_derived_sources%rowtype;
2086 
2087    l_log_module VARCHAR2(240);
2088 BEGIN
2089   IF g_log_enabled THEN
2090     l_log_module := C_DEFAULT_MODULE||'.source_is_locked';
2091   END IF;
2092 
2093   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2094     trace(p_msg    => 'BEGIN of procedure source_is_locked'
2095          ,p_module => l_log_module
2096          ,p_level  => C_LEVEL_PROCEDURE);
2097   END IF;
2098 
2099   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2100     trace(p_msg    => 'application_id = '||p_application_id||
2101                       ',source_code = '||p_source_code||
2102                       ',source_type_code = '||p_source_type_code
2103          ,p_module => l_log_module
2104          ,p_level  => C_LEVEL_STATEMENT);
2105   END IF;
2106 
2107    IF p_source_type_code = 'S' THEN
2108 
2109       OPEN check_analytical;
2110       FETCH check_analytical
2111        INTO l_exist;
2112       IF check_analytical%found THEN
2113          l_return := TRUE;
2114       ELSE
2115          l_return := FALSE;
2116       END IF;
2117       CLOSE check_analytical;
2118 
2119       IF l_return = FALSE THEN
2120 
2121          OPEN check_descript_details;
2122          FETCH check_descript_details
2123           INTO l_exist;
2124          IF check_descript_details%found THEN
2125             l_return := TRUE;
2126          ELSE
2127             l_return := FALSE;
2128          END IF;
2129          CLOSE check_descript_details;
2130       END IF;
2131 
2132       IF l_return = FALSE THEN
2133 
2134          OPEN check_desc_conditions;
2135          FETCH check_desc_conditions
2136           INTO l_exist;
2137          IF check_desc_conditions%found THEN
2138             l_return := TRUE;
2139          ELSE
2140             l_return := FALSE;
2141          END IF;
2142          CLOSE check_desc_conditions;
2143       END IF;
2144 
2145       IF l_return = FALSE THEN
2146 
2147          OPEN check_sr_conditions;
2148          FETCH check_sr_conditions
2149           INTO l_exist;
2150          IF check_sr_conditions%found THEN
2151             l_return := TRUE;
2152          ELSE
2153             l_return := FALSE;
2154          END IF;
2155          CLOSE check_sr_conditions;
2156       END IF;
2157 
2158       IF l_return = FALSE THEN
2159 
2160          OPEN check_lt_conditions;
2161          FETCH check_lt_conditions
2162           INTO l_exist;
2163          IF check_lt_conditions%found THEN
2164             l_return := TRUE;
2165          ELSE
2166             l_return := FALSE;
2167          END IF;
2168          CLOSE check_lt_conditions;
2169       END IF;
2170 
2171       IF l_return = FALSE THEN
2172 
2173          OPEN check_sr_details;
2174          FETCH check_sr_details
2175           INTO l_exist;
2176          IF check_sr_details%found THEN
2177             l_return := TRUE;
2178          ELSE
2179             l_return := FALSE;
2180          END IF;
2181          CLOSE check_sr_details;
2182       END IF;
2183 
2184       IF l_return = FALSE THEN
2185 
2186          OPEN check_line_types;
2187          FETCH check_line_types
2188           INTO l_exist;
2189          IF check_line_types%found THEN
2190             l_return := TRUE;
2191          ELSE
2192             l_return := FALSE;
2193          END IF;
2194          CLOSE check_line_types;
2195       END IF;
2196 
2197       IF l_return = FALSE THEN
2198 
2199          OPEN check_aad;
2200          FETCH check_aad
2201           INTO l_exist;
2202          IF check_aad%found THEN
2203             l_return := TRUE;
2204          ELSE
2205             l_return := FALSE;
2206          END IF;
2207          CLOSE check_aad;
2208       END IF;
2209 
2210       IF l_return = FALSE THEN
2211 
2212          OPEN c_check_derived_sources;
2213          LOOP
2214          FETCH c_check_derived_sources
2215           INTO l_check_derived_sources;
2216          EXIT WHEN c_check_derived_sources%notfound or l_return = TRUE;
2217 
2218          IF derived_source_is_locked
2219               (p_der_application_id      => l_check_derived_sources.application_id
2220               ,p_der_source_type_code    => l_check_derived_sources.source_type_code
2221               ,p_der_source_code         => l_check_derived_sources.source_code) THEN
2222 
2223             l_return := TRUE;
2224          ELSE
2225             l_return := FALSE;
2226          END IF;
2227          END LOOP;
2228          CLOSE c_check_derived_sources;
2229       END IF;
2230 
2231    ELSIF p_source_type_code = 'D' THEN
2232 
2233       IF derived_source_is_locked
2234            (p_der_application_id      => p_application_id
2235            ,p_der_source_type_code    => p_source_type_code
2236            ,p_der_source_code         => p_source_code) THEN
2237 
2238          l_return := TRUE;
2239       ELSE
2240          l_return := FALSE;
2241       END IF;
2242    END IF;
2243 
2244   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2245     trace(p_msg    => 'END of procedure source_is_locked'
2246          ,p_module => l_log_module
2247          ,p_level  => C_LEVEL_PROCEDURE);
2248   END IF;
2249 
2250    RETURN l_return;
2251 
2252 EXCEPTION
2253    WHEN xla_exceptions_pkg.application_exception THEN
2254 
2255       IF check_analytical%ISOPEN THEN
2256          CLOSE check_analytical;
2257       END IF;
2258       IF check_descript_details%ISOPEN THEN
2259          CLOSE check_descript_details;
2260       END IF;
2261       IF check_sr_details%ISOPEN THEN
2262          CLOSE check_sr_details;
2263       END IF;
2264       IF check_lt_conditions%ISOPEN THEN
2265          CLOSE check_lt_conditions;
2266       END IF;
2267       IF check_sr_conditions%ISOPEN THEN
2268          CLOSE check_sr_conditions;
2269       END IF;
2270       IF check_desc_conditions%ISOPEN THEN
2271          CLOSE check_desc_conditions;
2272       END IF;
2273       IF check_line_types%ISOPEN THEN
2274          CLOSE check_line_types;
2275       END IF;
2276 
2277       RAISE;
2278 
2279 WHEN OTHERS                                   THEN
2280 
2281       IF check_analytical%ISOPEN THEN
2282          CLOSE check_analytical;
2283       END IF;
2284       IF check_sr_details%ISOPEN THEN
2285          CLOSE check_sr_details;
2286       END IF;
2287       IF check_lt_conditions%ISOPEN THEN
2288          CLOSE check_lt_conditions;
2289       END IF;
2290       IF check_sr_conditions%ISOPEN THEN
2291          CLOSE check_sr_conditions;
2292       END IF;
2293       IF check_desc_conditions%ISOPEN THEN
2294          CLOSE check_desc_conditions;
2295       END IF;
2296       IF check_descript_details%ISOPEN THEN
2297          CLOSE check_descript_details;
2298       END IF;
2299       IF check_line_types%ISOPEN THEN
2300          CLOSE check_line_types;
2301       END IF;
2302 
2303    xla_exceptions_pkg.raise_message
2304       (p_location   => 'xla_sources_pkg.source_is_locked');
2305 
2306 END source_is_locked;
2307 
2308 /*======================================================================+
2309 |                                                                       |
2310 | Public Procedure                                                      |
2311 |                                                                       |
2312 | uncompile_prod_rule                                                   |
2313 |                                                                       |
2314 | Wrapper for uncompile_definitions                                     |
2315 | Provided for backward-compatibility, to be obsoleted                  |
2316 |                                                                       |
2317 +======================================================================*/
2318 
2319 FUNCTION uncompile_prod_rule
2320   (p_application_id                   IN NUMBER
2321   ,p_source_code                      IN VARCHAR2
2322   ,p_source_type_code                 IN VARCHAR2
2323   ,p_product_rule_name                IN OUT NOCOPY VARCHAR2
2324   ,p_product_rule_type                IN OUT NOCOPY VARCHAR2)
2325 RETURN BOOLEAN
2326 
2327 IS
2328    l_event_class_name       varchar2(80)  := NULL;
2329    l_event_type_name        varchar2(80)  := NULL;
2330    l_locking_status_flag    varchar2(1)   := NULL;
2331    l_return                 BOOLEAN := TRUE;
2332 
2333    l_log_module VARCHAR2(240);
2334 BEGIN
2335   IF g_log_enabled THEN
2336     l_log_module := C_DEFAULT_MODULE||'.uncompile_prod_rule';
2337   END IF;
2338 
2339   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2340     trace(p_msg    => 'BEGIN of procedure uncompile_prod_rule'
2341          ,p_module => l_log_module
2342          ,p_level  => C_LEVEL_PROCEDURE);
2343   END IF;
2344 
2345   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2346     trace(p_msg    => 'application_id = '||p_application_id||
2347                       ',source_code = '||p_source_code||
2348                       ',source_type_code = '||p_source_type_code
2349          ,p_module => l_log_module
2350          ,p_level  => C_LEVEL_STATEMENT);
2351   END IF;
2352 
2353   l_return := uncompile_definitions
2354                          (p_application_id        => p_application_id
2355                          ,p_source_code           => p_source_code
2356                          ,p_source_type_code      => p_source_type_code
2357                          ,x_product_rule_name     => p_product_rule_name
2358                          ,x_product_rule_type     => p_product_rule_type
2359                          ,x_event_class_name      => l_event_class_name
2360                          ,x_event_type_name       => l_event_type_name
2361                          ,x_locking_status_flag   => l_locking_status_flag);
2362 
2363 
2364   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2365     trace(p_msg    => 'END of procedure uncompile_prod_rule'
2366          ,p_module => l_log_module
2367          ,p_level  => C_LEVEL_PROCEDURE);
2368   END IF;
2369 
2370    return l_return;
2371 
2372 EXCEPTION
2373    WHEN xla_exceptions_pkg.application_exception THEN
2374       RAISE;
2375 WHEN OTHERS                                   THEN
2376    xla_exceptions_pkg.raise_message
2377       (p_location   => 'xla_sources_pkg.uncompile_prod_rule');
2378 
2379 END uncompile_prod_rule;
2380 
2381 
2382 
2383 /*======================================================================+
2384 |                                                                       |
2385 | Public Procedure                                                      |
2386 |                                                                       |
2387 | uncompile_definitions                                                 |
2388 |                                                                       |
2389 | Sets status of assigned application accounting definitions and journ  |
2390 | lines definitions to uncompiled                                       |
2391 |                                                                       |
2392 +======================================================================*/
2393 
2394 FUNCTION uncompile_definitions
2395   (p_application_id                   IN NUMBER
2396   ,p_source_code                      IN VARCHAR2
2397   ,p_source_type_code                 IN VARCHAR2
2398   ,x_product_rule_name                IN OUT NOCOPY VARCHAR2
2399   ,x_product_rule_type                IN OUT NOCOPY VARCHAR2
2400   ,x_event_class_name                 IN OUT NOCOPY VARCHAR2
2401   ,x_event_type_name                  IN OUT NOCOPY VARCHAR2
2402   ,x_locking_status_flag              IN OUT NOCOPY VARCHAR2)
2403 RETURN BOOLEAN
2404 
2405 IS
2406 
2407    --
2408    -- Private variables
2409    --
2410    l_exist   VARCHAR2(1) ;
2411    l_return  BOOLEAN := TRUE;
2412 
2413    l_application_name       varchar2(240) := null;
2414    l_line_definition_name   varchar2(80)  := null;
2415    l_line_definition_owner  varchar2(80)  := NULL;
2416    l_product_rule_name      varchar2(80)  := null;
2417    l_product_rule_type      varchar2(80)  := NULL;
2418    l_event_class_name       varchar2(80)  := NULL;
2419    l_event_type_name        varchar2(80)  := NULL;
2420    l_locking_status_flag    varchar2(1)   := NULL;
2421    --
2422    -- Cursor declarations
2423    --
2424 
2425    CURSOR c_analytical
2426    IS
2427    SELECT amb_context_code, analytical_criterion_code, analytical_criterion_type_code
2428      FROM xla_analytical_hdrs_b a
2429     WHERE exists (SELECT 'x'
2430                     FROM xla_analytical_sources r
2431                    WHERE source_application_id            = p_application_id
2432                      AND source_code                      = p_source_code
2433                      AND source_type_code                 = p_source_type_code
2434                      AND r.amb_context_code               = a.amb_context_code
2435                      AND r.analytical_criterion_code      = a.analytical_criterion_code
2436                      AND r.analytical_criterion_type_code = a.analytical_criterion_type_code);
2437 
2438    l_analytical   c_analytical%rowtype;
2439 
2440    CURSOR c_descriptions
2441    IS
2442    SELECT x.application_id, x.amb_context_code,
2443           x.description_type_code, x.description_code
2444      FROM xla_descriptions_b x
2445     WHERE exists (SELECT 'x'
2446                     FROM xla_descript_details_b d, xla_desc_priorities dp
2447                    WHERE d.source_application_id   = p_application_id
2448                      AND d.source_code             = p_source_code
2449                      AND d.source_type_code        = p_source_type_code
2450                      AND d.source_code is not null
2451                      AND dp.description_prio_id    = d.description_prio_id
2452                      AND dp.application_id         = x.application_id
2453                      AND dp.amb_context_code       = x.amb_context_code
2454                      AND dp.description_type_code  = x.description_type_code
2455                      AND dp.description_code       = x.description_code
2456                   UNION
2457                   SELECT 'x'
2458                     FROM xla_conditions c, xla_desc_priorities dp
2459                    WHERE ((c.source_application_id      = p_application_id
2460                      AND  c.source_code                 = p_source_code
2461                      AND  c.source_type_code            = p_source_type_code)
2462                       OR (c.value_source_application_id = p_application_id
2463                      AND  c.value_source_type_code      = p_source_type_code
2464                      AND  c.value_source_code           = p_source_code
2465                      AND  c.value_source_code IS NOT NULL))
2466                      AND dp.description_prio_id         = c.description_prio_id
2467                      AND dp.application_id         = x.application_id
2468                      AND dp.amb_context_code       = x.amb_context_code
2469                      AND dp.description_type_code  = x.description_type_code
2470                      AND dp.description_code       = x.description_code);
2471 
2472    l_description   c_descriptions%rowtype;
2473 
2474    CURSOR c_seg_rules
2475    IS
2476    SELECT a.application_id, a.amb_context_code, a.segment_rule_type_code, a.segment_rule_code
2477      FROM xla_seg_rules_b a
2478     WHERE exists (SELECT 'x'
2479                     FROM xla_seg_rule_details sd
2480                    WHERE ((value_source_application_id      = p_application_id
2481                      AND  value_source_type_code            = p_source_type_code
2482                      AND  value_source_code                 = p_source_code)
2483                       OR (input_source_application_id       = p_application_id
2484                      AND  input_source_type_code            = p_source_type_code
2485                      AND  input_source_code                 = p_source_code
2486                      AND  input_source_code IS NOT NULL))
2487                      AND sd.application_id                  = a.application_id
2488                      AND sd.amb_context_code                = a.amb_context_code
2489                      AND sd.segment_rule_type_code          = a.segment_rule_type_code
2490                      AND sd.segment_rule_code               = a.segment_rule_code
2491                   UNION
2492                   SELECT 'x'
2493                     FROM xla_conditions c, xla_seg_rule_details sd
2494                    WHERE ((c.source_application_id      = p_application_id
2495                      AND  c.source_code                 = p_source_code
2496                      AND  c.source_type_code            = p_source_type_code)
2497                       OR (c.value_source_application_id = p_application_id
2498                      AND  c.value_source_type_code      = p_source_type_code
2499                      AND  c.value_source_code           = p_source_code
2500                      AND  c.value_source_code IS NOT NULL))
2501                      AND c.segment_rule_detail_id       = sd.segment_rule_detail_id
2502                      AND sd.application_id              = a.application_id
2503                      AND sd.amb_context_code            = a.amb_context_code
2504                      AND sd.segment_rule_type_code      = a.segment_rule_type_code
2505                      AND sd.segment_rule_code           = a.segment_rule_code);
2506 
2507    l_seg_rule   c_seg_rules%rowtype;
2508 
2509    CURSOR c_line_types
2510    IS
2511    SELECT application_id, a.amb_context_code, entity_code, event_class_code,
2512           accounting_line_type_code, accounting_line_code
2513      FROM xla_acct_line_types_b a
2514     WHERE exists (SELECT 'x'
2515                     FROM xla_conditions c
2516                    WHERE ((source_application_id      = p_application_id
2517                      AND  source_code                 = p_source_code
2518                      AND  source_type_code            = p_source_type_code)
2519                       OR (value_source_application_id = p_application_id
2520                      AND  value_source_type_code      = p_source_type_code
2521                      AND  value_source_code           = p_source_code
2522                      AND  value_source_code IS NOT NULL))
2523                      AND c.application_id             = a.application_id
2524                      AND c.amb_context_code           = a.amb_context_code
2525                      AND c.entity_code                = a.entity_code
2526                      AND c.event_class_code           = a.event_class_code
2527                      AND c.accounting_line_type_code  = a.accounting_line_type_code
2528                      AND c.accounting_line_code       = a.accounting_line_code
2529                   UNION
2530                   SELECT 'x'
2531                     FROM xla_jlt_acct_attrs r
2532                    WHERE source_application_id        = p_application_id
2533                      AND source_code                  = p_source_code
2534                      AND source_type_code             = p_source_type_code
2535                      AND r.application_id             = a.application_id
2536                      AND r.amb_context_code           = a.amb_context_code
2537                      AND r.event_class_code           = a.event_class_code
2538                      AND r.accounting_line_type_code  = a.accounting_line_type_code
2539                      AND r.accounting_line_code       = a.accounting_line_code);
2540 
2541    l_line_type   c_line_types%rowtype;
2542 
2543    CURSOR c_aad
2544    IS
2545    SELECT application_id, amb_context_code,
2546           product_rule_type_code, product_rule_code
2547      FROM xla_product_rules_b a
2548     WHERE exists (SELECT 'x'
2549                     FROM xla_aad_hdr_acct_attrs r
2550                    WHERE source_application_id        = p_application_id
2551                      AND source_code                  = p_source_code
2552                      AND source_type_code             = p_source_type_code
2553                      AND source_code is not null
2554                      AND r.application_id             = a.application_id
2555                      AND r.amb_context_code           = a.amb_context_code
2556                      AND r.product_rule_type_code     = a.product_rule_type_code
2557                      AND r.product_rule_code          = a.product_rule_code);
2558 
2559    l_aad   c_aad%rowtype;
2560 
2561    CURSOR c_check_derived_sources
2562    IS
2563    SELECT application_id, source_type_code, source_code
2564      FROM xla_sources_b r
2565     WHERE exists (SELECT 'x'
2566                     FROM xla_source_params p
2567                    WHERE p.ref_source_application_id   = p_application_id
2568                      AND p.ref_source_code             = p_source_code
2569                      AND p.ref_source_type_code        = p_source_type_code
2570                      AND p.application_id              = r.application_id
2571                      AND p.source_type_code            = r.source_type_code
2572                      AND p.source_code                 = r.source_code);
2573 
2574    l_check_derived_sources    c_check_derived_sources%rowtype;
2575 
2576    l_log_module VARCHAR2(240);
2577 BEGIN
2578   IF g_log_enabled THEN
2579     l_log_module := C_DEFAULT_MODULE||'.uncompile_definitions';
2580   END IF;
2581 
2582   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2583     trace(p_msg    => 'BEGIN of procedure uncompile_definitions'
2584          ,p_module => l_log_module
2585          ,p_level  => C_LEVEL_PROCEDURE);
2586   END IF;
2587 
2588   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2589     trace(p_msg    => 'application_id = '||p_application_id||
2590                       ',source_code = '||p_source_code||
2591                       ',source_type_code = '||p_source_type_code
2592          ,p_module => l_log_module
2593          ,p_level  => C_LEVEL_STATEMENT);
2594   END IF;
2595 
2596    IF p_source_type_code = 'S' THEN
2597 
2598       OPEN c_analytical;
2599       LOOP
2600       FETCH c_analytical
2601        INTO l_analytical;
2602       EXIT WHEN c_analytical%NOTFOUND or l_return=FALSE;
2603 
2604          IF xla_analytical_hdrs_pkg.uncompile_definitions
2605               (p_amb_context_code           => l_analytical.amb_context_code
2606               ,p_analytical_criterion_code  => l_analytical.analytical_criterion_code
2607               ,p_anal_criterion_type_code   => l_analytical.analytical_criterion_type_code
2608               ,x_product_rule_name          => l_product_rule_name
2609               ,x_product_rule_type          => l_product_rule_type
2610               ,x_event_class_name           => l_event_class_name
2611               ,x_event_type_name            => l_event_type_name
2612               ,x_locking_status_flag        => l_locking_status_flag) THEN
2613 
2614             l_return := TRUE;
2615          ELSE
2616             l_return := FALSE;
2617          END IF;
2618       END LOOP;
2619       CLOSE c_analytical;
2620 
2621       IF l_return = TRUE THEN
2622          OPEN c_descriptions;
2623          LOOP
2624          FETCH c_descriptions
2625           INTO l_description;
2626          EXIT WHEN c_descriptions%NOTFOUND or l_return=FALSE;
2627 
2628             IF xla_descriptions_pkg.uncompile_definitions
2629                  (p_application_id        => l_description.application_id
2630                  ,p_amb_context_code      => l_description.amb_context_code
2631                  ,p_description_type_code => l_description.description_type_code
2632                  ,p_description_code      => l_description.description_code
2633                  ,x_product_rule_name     => l_product_rule_name
2634                  ,x_product_rule_type     => l_product_rule_type
2635                  ,x_event_class_name      => l_event_class_name
2636                  ,x_event_type_name       => l_event_type_name
2637                  ,x_locking_status_flag   => l_locking_status_flag) THEN
2638 
2639                l_return := TRUE;
2640             ELSE
2641             l_return := FALSE;
2642             END IF;
2643          END LOOP;
2644          CLOSE c_descriptions;
2645       END IF;
2646 
2647 
2648       IF l_return = TRUE THEN
2649          OPEN c_seg_rules;
2650          LOOP
2651          FETCH c_seg_rules
2652           INTO l_seg_rule;
2653          EXIT WHEN c_seg_rules%NOTFOUND or l_return=FALSE;
2654 
2655             IF xla_seg_rules_pkg.uncompile_definitions
2656                  (p_application_id         => l_seg_rule.application_id
2657                  ,p_amb_context_code       => l_seg_rule.amb_context_code
2658                  ,p_segment_rule_type_code => l_seg_rule.segment_rule_type_code
2659                  ,p_segment_rule_code      => l_seg_rule.segment_rule_code
2660                  ,x_product_rule_name      => l_product_rule_name
2661                  ,x_product_rule_type      => l_product_rule_type
2662                  ,x_event_class_name       => l_event_class_name
2663                  ,x_event_type_name        => l_event_type_name
2664                  ,x_locking_status_flag    => l_locking_status_flag) THEN
2665 
2666                l_return := TRUE;
2667             ELSE
2668                l_return := FALSE;
2669             END IF;
2670          END LOOP;
2671          CLOSE c_seg_rules;
2672       END IF;
2673 
2674 
2675       IF l_return = TRUE THEN
2676          OPEN c_line_types;
2677          LOOP
2678          FETCH c_line_types
2679           INTO l_line_type;
2680          EXIT WHEN c_line_types%NOTFOUND or l_return=FALSE;
2681 
2682             IF xla_line_types_pkg.uncompile_definitions
2683                  (p_application_id            => l_line_type.application_id
2684                  ,p_amb_context_code          => l_line_type.amb_context_code
2685                  ,p_event_class_code          => l_line_type.event_class_code
2686                  ,p_accounting_line_type_code => l_line_type.accounting_line_type_code
2687                  ,p_accounting_line_code      => l_line_type.accounting_line_code
2688                  ,x_product_rule_name         => l_product_rule_name
2689                  ,x_product_rule_type         => l_product_rule_type
2690                  ,x_event_class_name          => l_event_class_name
2691                  ,x_event_type_name           => l_event_type_name
2692                  ,x_locking_status_flag       => l_locking_status_flag) THEN
2693 
2694                l_return := TRUE;
2695             ELSE
2696                l_return := FALSE;
2697             END IF;
2698          END LOOP;
2699          CLOSE c_line_types;
2700       END IF;
2701 
2702    IF l_return = TRUE THEN
2703       OPEN c_aad;
2704       LOOP
2705       FETCH c_aad
2706        INTO l_aad;
2707       EXIT WHEN c_aad%NOTFOUND or l_return=FALSE;
2708 
2709          IF xla_product_rules_pkg.uncompile_product_rule
2710               (p_application_id            => l_aad.application_id
2711               ,p_amb_context_code          => l_aad.amb_context_code
2712               ,p_product_rule_type_code    => l_aad.product_rule_type_code
2713               ,p_product_rule_code         => l_aad.product_rule_code) THEN
2714 
2715             l_return := TRUE;
2716          ELSE
2717             xla_validations_pkg.get_product_rule_info
2718               (p_application_id          => l_aad.application_id
2719               ,p_amb_context_code        => l_aad.amb_context_code
2720               ,p_product_rule_type_code  => l_aad.product_rule_type_code
2721               ,p_product_rule_code       => l_aad.product_rule_code
2722               ,p_application_name        => l_application_name
2723               ,p_product_rule_name       => l_product_rule_name
2724               ,p_product_rule_type       => l_product_rule_type);
2725 
2726             l_return := FALSE;
2727          END IF;
2728       END LOOP;
2729       CLOSE c_aad;
2730    END IF;
2731 
2732       IF l_return = TRUE THEN
2733 
2734          OPEN c_check_derived_sources;
2735          LOOP
2736          FETCH c_check_derived_sources
2737           INTO l_check_derived_sources;
2738          EXIT WHEN c_check_derived_sources%notfound or l_return = FALSE;
2739 
2740            IF uncompile_pad_for_der_source
2741                 (p_der_application_id    => l_check_derived_sources.application_id
2742                 ,p_der_source_type_code  => l_check_derived_sources.source_type_code
2743                 ,p_der_source_code       => l_check_derived_sources.source_code
2744                 ,x_product_rule_name     => l_product_rule_name
2745                 ,x_product_rule_type     => l_product_rule_type
2746                 ,x_event_class_name      => l_event_class_name
2747                 ,x_event_type_name       => l_event_type_name
2748                 ,x_locking_status_flag   => l_locking_status_flag) THEN
2749 
2750                l_return := TRUE;
2751             ELSE
2752                l_return := FALSE;
2753             END IF;
2754          END LOOP;
2755          CLOSE c_check_derived_sources;
2756      END IF;
2757 
2758    ELSIF p_source_type_code = 'D' THEN
2759 
2760       IF uncompile_pad_for_der_source
2761            (p_der_application_id    => p_application_id
2762            ,p_der_source_type_code  => p_source_type_code
2763            ,p_der_source_code       => p_source_code
2764            ,x_product_rule_name     => l_product_rule_name
2765            ,x_product_rule_type     => l_product_rule_type
2766            ,x_event_class_name      => l_event_class_name
2767            ,x_event_type_name       => l_event_type_name
2768            ,x_locking_status_flag   => l_locking_status_flag) THEN
2769 
2770          l_return := TRUE;
2771       ELSE
2772          l_return := FALSE;
2773       END IF;
2774 
2775    END IF;
2776 
2777    x_product_rule_name     := l_product_rule_name;
2778    x_product_rule_type     := l_product_rule_type;
2779    x_event_class_name      := l_event_class_name;
2780    x_event_type_name       := l_event_type_name;
2781    x_locking_status_flag   := l_locking_status_flag;
2782 
2783    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2784      trace(p_msg    => 'END of procedure uncompile_definitions'
2785           ,p_module => l_log_module
2786           ,p_level  => C_LEVEL_PROCEDURE);
2787    END IF;
2788 
2789    return l_return;
2790 
2791 EXCEPTION
2792    WHEN xla_exceptions_pkg.application_exception THEN
2793       RAISE;
2794 WHEN OTHERS                                   THEN
2795    xla_exceptions_pkg.raise_message
2796       (p_location   => 'xla_sources_pkg.uncompile_definitions');
2797 
2798 END uncompile_definitions;
2799 
2800 /*======================================================================+
2801 |                                                                       |
2802 | Public Procedure                                                      |
2803 |                                                                       |
2804 | delete_derived_source_details                                         |
2805 |                                                                       |
2806 | Deletes details of the derived source when the source is deleted      |
2807 |                                                                       |
2808 +======================================================================*/
2809 PROCEDURE delete_derived_source_details
2810   (p_application_id                   IN NUMBER
2811   ,p_source_code                      IN VARCHAR2
2812   ,p_source_type_code                 IN VARCHAR2)
2813 
2814 IS
2815 
2816    l_log_module VARCHAR2(240);
2817 BEGIN
2818   IF g_log_enabled THEN
2819     l_log_module := C_DEFAULT_MODULE||'.delete_derived_source_details';
2820   END IF;
2821 
2822   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2823     trace(p_msg    => 'BEGIN of procedure delete_derived_source_details'
2824          ,p_module => l_log_module
2825          ,p_level  => C_LEVEL_PROCEDURE);
2826   END IF;
2827 
2828   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2829     trace(p_msg    => 'application_id = '||p_application_id||
2830                       ',source_code = '||p_source_code||
2831                       ',source_type_code = '||p_source_type_code
2832          ,p_module => l_log_module
2833          ,p_level  => C_LEVEL_STATEMENT);
2834   END IF;
2835 
2836    DELETE
2837      FROM xla_source_params
2838     WHERE application_id      = p_application_id
2839       AND source_type_code    = p_source_type_code
2840       AND source_code         = p_source_code;
2841 
2842    DELETE
2843      FROM xla_event_sources
2844     WHERE source_application_id = p_application_id
2845       AND source_type_code      = p_source_type_code
2846       AND source_code           = p_source_code;
2847 
2848   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2849     trace(p_msg    => 'END of procedure delete_derived_source_details'
2850          ,p_module => l_log_module
2851          ,p_level  => C_LEVEL_PROCEDURE);
2852   END IF;
2853 
2854 
2855 EXCEPTION
2856    WHEN xla_exceptions_pkg.application_exception THEN
2857       RAISE;
2858 WHEN OTHERS                                   THEN
2859    xla_exceptions_pkg.raise_message
2860       (p_location   => 'xla_sources_pkg.delete_derived_source_details');
2861 
2862 END delete_derived_source_details;
2863 
2864 /*======================================================================+
2865 |                                                                       |
2866 | Public Function                                                       |
2867 |                                                                       |
2868 | derived_source_is_invalid                                             |
2869 |                                                                       |
2870 | Returns true if the derived source has seeded sources that do not     |
2871 | belong to the entity or event class                                   |
2872 |                                                                       |
2873 +======================================================================*/
2874 FUNCTION derived_source_is_invalid
2875   (p_application_id                   IN NUMBER
2876   ,p_derived_source_code              IN VARCHAR2
2877   ,p_derived_source_type_code         IN VARCHAR2
2878   ,p_event_class_code                 IN VARCHAR2
2879   ,p_level                            IN VARCHAR2)
2880 RETURN VARCHAR2
2881 
2882 IS
2883 
2884    --
2885    -- Private variables
2886    --
2887    l_exist   VARCHAR2(1) ;
2888    l_return  VARCHAR2(30);
2889 
2890    --
2891    -- Cursor declarations
2892    --
2893 
2894    CURSOR check_header_source
2895    IS
2896    SELECT 'x'
2897      FROM xla_source_params r
2898     WHERE application_id       = p_application_id
2899       AND source_code          = p_derived_source_code
2900       AND source_type_code     = p_derived_source_type_code
2901       AND ref_source_code is not null
2902       AND ref_source_type_code = 'S'
2903       AND not exists (SELECT 'x'
2904                         FROM xla_event_sources s
2905                        WHERE s.source_application_id   = r.ref_source_application_id
2906                          AND s.source_type_code        = r.ref_source_type_code
2907                          AND s.source_code             = r.ref_source_code
2908                          AND s.application_id          = p_application_id
2909                          AND s.event_class_code        = p_event_class_code
2910                          AND s.active_flag            = 'Y'
2911                          AND s.level_code              = 'H');
2912 
2913    CURSOR check_line_source
2914    IS
2915    SELECT 'x'
2916      FROM xla_source_params r
2917     WHERE application_id       = p_application_id
2918       AND source_code          = p_derived_source_code
2919       AND source_type_code     = p_derived_source_type_code
2920       AND ref_source_code is not null
2921       AND ref_source_type_code = 'S'
2922       AND not exists (SELECT 'x'
2923                         FROM xla_event_sources s
2924                        WHERE s.source_application_id   = r.ref_source_application_id
2925                          AND s.source_type_code        = r.ref_source_type_code
2926                          AND s.source_code             = r.ref_source_code
2927                          AND s.application_id          = p_application_id
2928                          AND s.event_class_code        = p_event_class_code
2929                          AND s.active_flag            = 'Y');
2930 
2931    l_log_module VARCHAR2(240);
2932 BEGIN
2933   IF g_log_enabled THEN
2934     l_log_module := C_DEFAULT_MODULE||'.derived_source_is_invalid';
2935   END IF;
2936 
2937   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2938     trace(p_msg    => 'BEGIN of procedure derived_source_is_invalid'
2939          ,p_module => l_log_module
2940          ,p_level  => C_LEVEL_PROCEDURE);
2941   END IF;
2942 
2943   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2944     trace(p_msg    => 'application_id = '||p_application_id||
2945                       ',source_code = '||p_derived_source_code||
2946                       ',source_type_code = '||p_derived_source_type_code||
2947                       ',event_class_code = '||p_event_class_code||
2948                       ',level = '||p_event_class_code
2949          ,p_module => l_log_module
2950          ,p_level  => C_LEVEL_STATEMENT);
2951   END IF;
2952 
2953    IF p_level = 'H' THEN
2954 
2955       OPEN check_header_source;
2956       FETCH check_header_source
2957        INTO l_exist;
2958       IF check_header_source%found THEN
2959          l_return := 'TRUE';
2960       ELSE
2961          l_return := 'FALSE';
2962       END IF;
2963       CLOSE check_header_source;
2964 
2965    ELSE
2966 
2967       OPEN check_line_source;
2968       FETCH check_line_source
2969        INTO l_exist;
2970       IF check_line_source%found THEN
2971          l_return := 'TRUE';
2972       ELSE
2973          l_return := 'FALSE';
2974       END IF;
2975       CLOSE check_line_source;
2976 
2977    END IF;
2978 
2979   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2980     trace(p_msg    => 'END of procedure derived_source_is_invalid'
2981          ,p_module => l_log_module
2982          ,p_level  => C_LEVEL_PROCEDURE);
2983   END IF;
2984 
2985 
2986    RETURN l_return;
2987 
2988 EXCEPTION
2989    WHEN xla_exceptions_pkg.application_exception THEN
2990 
2991       IF check_header_source%ISOPEN THEN
2992          CLOSE check_header_source;
2993       END IF;
2994       IF check_line_source%ISOPEN THEN
2995          CLOSE check_line_source;
2996       END IF;
2997 
2998       RAISE;
2999 
3000 WHEN OTHERS                                   THEN
3001 
3002       IF check_header_source%ISOPEN THEN
3003          CLOSE check_header_source;
3004       END IF;
3005       IF check_line_source%ISOPEN THEN
3006          CLOSE check_line_source;
3007       END IF;
3008 
3009    xla_exceptions_pkg.raise_message
3010       (p_location   => 'xla_sources_pkg.derived_source_is_invalid');
3011 
3012 END derived_source_is_invalid;
3013 
3014 
3015 FUNCTION derived_source_is_invalid
3016   (p_application_id                   IN NUMBER
3017   ,p_derived_source_code              IN VARCHAR2
3018   ,p_derived_source_type_code         IN VARCHAR2
3019   ,p_entity_code                      IN VARCHAR2
3020   ,p_event_class_code                 IN VARCHAR2
3021   ,p_level                            IN VARCHAR2)
3022 RETURN VARCHAR2
3023 IS
3024    l_return  VARCHAR2(30);
3025 
3026    l_log_module VARCHAR2(240);
3027 BEGIN
3028   IF g_log_enabled THEN
3029     l_log_module := C_DEFAULT_MODULE||'.derived_source_is_invalid';
3030   END IF;
3031 
3032   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3033     trace(p_msg    => 'BEGIN of procedure derived_source_is_invalid'
3034          ,p_module => l_log_module
3035          ,p_level  => C_LEVEL_PROCEDURE);
3036   END IF;
3037 
3038   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3039     trace(p_msg    => 'application_id = '||p_application_id||
3040                       ',source_code = '||p_derived_source_code||
3041                       ',source_type_code = '||p_derived_source_type_code||
3042                       ',event_class_code = '||p_event_class_code||
3043                       ',entity_code = '||p_entity_code||
3044                       ',level = '||p_event_class_code
3045          ,p_module => l_log_module
3046          ,p_level  => C_LEVEL_STATEMENT);
3047   END IF;
3048 
3049    l_return := derived_source_is_invalid
3050                 (p_application_id             => p_application_id
3051                 ,p_derived_source_code        => p_derived_source_code
3052                 ,p_derived_source_type_code   => p_derived_source_type_code
3053                 ,p_event_class_code           => p_event_class_code
3054                 ,p_level                      => p_level);
3055 
3056   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3057     trace(p_msg    => 'END of procedure derived_source_is_invalid'
3058          ,p_module => l_log_module
3059          ,p_level  => C_LEVEL_PROCEDURE);
3060   END IF;
3061 
3062    RETURN l_return;
3063 
3064 EXCEPTION
3065    WHEN xla_exceptions_pkg.application_exception THEN
3066 
3067       RAISE;
3068 
3069 WHEN OTHERS                                   THEN
3070 
3071    xla_exceptions_pkg.raise_message
3072       (p_location   => 'xla_sources_pkg.derived_source_is_invalid');
3073 
3074 END derived_source_is_invalid;
3075 
3076 
3077 /*======================================================================+
3078 |                                                                       |
3079 | Public Function                                                       |
3080 |                                                                       |
3081 | source_in_use_by_tab                                                  |
3082 |                                                                       |
3083 | Returns true if the source is being used                              |
3084 |                                                                       |
3085 +======================================================================*/
3086 FUNCTION source_in_use_by_tab
3087   (p_event                            IN VARCHAR2
3088   ,p_application_id                   IN NUMBER
3089   ,p_source_code                      IN VARCHAR2
3090   ,p_source_type_code                 IN VARCHAR2)
3091 RETURN BOOLEAN
3092 IS
3093 
3094    --
3095    -- Private variables
3096    --
3097    l_exist   VARCHAR2(1) ;
3098    l_return  BOOLEAN := FALSE;
3099 
3100    --
3101    -- Cursor declarations
3102    --
3103    CURSOR check_trx_acct_type
3104    IS
3105    SELECT 'x'
3106      FROM xla_tab_acct_type_srcs
3107     WHERE source_application_id   = p_application_id
3108       AND source_code             = p_source_code
3109       AND source_type_code        = p_source_type_code;
3110 
3111    l_log_module VARCHAR2(240);
3112 BEGIN
3113   IF g_log_enabled THEN
3114     l_log_module := C_DEFAULT_MODULE||'.source_in_use_by_tab';
3115   END IF;
3116 
3117   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3118     trace(p_msg    => 'BEGIN of procedure source_in_use_by_tab'
3119          ,p_module => l_log_module
3120          ,p_level  => C_LEVEL_PROCEDURE);
3121   END IF;
3122 
3123   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3124     trace(p_msg    => 'application_id = '||p_application_id||
3125                       ',source_code = '||p_source_code||
3126                       ',source_type_code = '||p_source_type_code||
3127                       ',event = '||p_event
3128          ,p_module => l_log_module
3129          ,p_level  => C_LEVEL_STATEMENT);
3130   END IF;
3131 
3132    IF p_source_type_code = 'S' THEN
3133 
3134       IF p_event in ('DELETE', 'DISABLE') THEN
3135 
3136          OPEN check_trx_acct_type;
3137          FETCH check_trx_acct_type
3138           INTO l_exist;
3139          IF check_trx_acct_type%found THEN
3140             l_return := TRUE;
3141          ELSE
3142             l_return := FALSE;
3143          END IF;
3144          CLOSE check_trx_acct_type;
3145       END IF;
3146    END IF;
3147 
3148   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3149     trace(p_msg    => 'END of procedure source_in_use_by_tab'
3150          ,p_module => l_log_module
3151          ,p_level  => C_LEVEL_PROCEDURE);
3152   END IF;
3153 
3154    RETURN l_return;
3155 
3156 EXCEPTION
3157    WHEN xla_exceptions_pkg.application_exception THEN
3158       IF check_trx_acct_type%ISOPEN THEN
3159          CLOSE check_trx_acct_type;
3160       END IF;
3161       RAISE;
3162 
3163 WHEN OTHERS                                   THEN
3164       IF check_trx_acct_type%ISOPEN THEN
3165          CLOSE check_trx_acct_type;
3166       END IF;
3167 
3168    xla_exceptions_pkg.raise_message
3169       (p_location   => 'xla_sources_pkg.source_in_use_by_tab');
3170 
3171 END source_in_use_by_tab;
3172 
3173 /*======================================================================+
3174 |                                                                       |
3175 | Public Function                                                       |
3176 |                                                                       |
3177 | source_is_locked_by_tab                                               |
3178 |                                                                       |
3179 | Returns true if the source is being used by a locked TAD              |
3180 |                                                                       |
3181 +======================================================================*/
3182 FUNCTION source_is_locked_by_tab
3183   (p_application_id                   IN NUMBER
3184   ,p_source_code                      IN VARCHAR2
3185   ,p_source_type_code                 IN VARCHAR2)
3186 RETURN BOOLEAN
3187 
3188 IS
3189 
3190    --
3191    -- Private variables
3192    --
3193    l_exist   VARCHAR2(1) ;
3194    l_return  BOOLEAN;
3195 
3196    --
3197    -- Cursor declarations
3198    --
3199 
3200    CURSOR check_sr_conditions
3201    IS
3202    SELECT 'x'
3203      FROM xla_conditions c
3204     WHERE ((source_application_id       = p_application_id
3205       AND  source_code                 = p_source_code
3206       AND  source_type_code            = p_source_type_code)
3207        OR (value_source_application_id = p_application_id
3208       AND  value_source_type_code      = p_source_type_code
3209       AND  value_source_code           = p_source_code
3210       AND  value_source_code IS NOT NULL))
3211       AND  exists (SELECT 'x'
3212                     FROM xla_seg_rule_details sd,
3213                          xla_tab_acct_def_details pl, xla_tab_acct_defs_b p
3214                    WHERE sd.segment_rule_detail_id  = c.segment_rule_detail_id
3215                      AND pl.application_id          = sd.application_id
3216                      AND pl.amb_context_code        = sd.amb_context_code
3217                      AND pl.segment_rule_type_code  = sd.segment_rule_type_code
3218                      AND pl.segment_rule_code       = sd.segment_rule_code
3219                      AND pl.application_id          = p.application_id
3220                      AND pl.amb_context_code        = p.amb_context_code
3221                      AND pl.account_definition_type_code  = p.account_definition_type_code
3222                      AND pl.account_definition_code  = p.account_definition_code
3223                      AND p.locking_status_flag       = 'Y');
3224 
3225    CURSOR check_sr_details
3226    IS
3227    SELECT 'x'
3228      FROM xla_seg_rule_details sd
3229     WHERE ((value_source_application_id       = p_application_id
3230       AND  value_source_type_code            = p_source_type_code
3231       AND  value_source_code                 = p_source_code)
3232        OR (input_source_application_id       = p_application_id
3233       AND  input_source_type_code            = p_source_type_code
3234       AND  input_source_code                 = p_source_code
3235       AND  input_source_code IS NOT NULL))
3236       AND  exists (SELECT 'x'
3237                     FROM xla_tab_acct_def_details pl, xla_tab_acct_defs_b p
3238                    WHERE pl.application_id          = sd.application_id
3239                      AND pl.amb_context_code        = sd.amb_context_code
3240                      AND pl.segment_rule_type_code  = sd.segment_rule_type_code
3241                      AND pl.segment_rule_code       = sd.segment_rule_code
3242                      AND pl.application_id          = p.application_id
3243                      AND pl.amb_context_code        = p.amb_context_code
3244                      AND pl.account_definition_type_code  = p.account_definition_type_code
3245                      AND pl.account_definition_code  = p.account_definition_code
3246                      AND p.locking_status_flag       = 'Y');
3247 
3248    CURSOR c_check_derived_sources
3249    IS
3250    SELECT application_id, source_type_code, source_code
3251      FROM xla_sources_b r
3252     WHERE exists (SELECT 'x'
3253                     FROM xla_source_params p
3254                    WHERE p.ref_source_application_id   = p_application_id
3255                      AND p.ref_source_code             = p_source_code
3256                      AND p.ref_source_type_code        = p_source_type_code
3257                      AND p.application_id              = r.application_id
3258                      AND p.source_type_code            = r.source_type_code
3259                      AND p.source_code                 = r.source_code);
3260 
3261    l_check_derived_sources    c_check_derived_sources%rowtype;
3262 
3263    l_log_module VARCHAR2(240);
3264 BEGIN
3265   IF g_log_enabled THEN
3266     l_log_module := C_DEFAULT_MODULE||'.source_is_locked_by_tab';
3267   END IF;
3268 
3269   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3270     trace(p_msg    => 'BEGIN of procedure source_is_locked_by_tab'
3271          ,p_module => l_log_module
3272          ,p_level  => C_LEVEL_PROCEDURE);
3273   END IF;
3274 
3275   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3276     trace(p_msg    => 'application_id = '||p_application_id||
3277                       ',source_code = '||p_source_code||
3278                       ',source_type_code = '||p_source_type_code
3279          ,p_module => l_log_module
3280          ,p_level  => C_LEVEL_STATEMENT);
3281   END IF;
3282 
3283    IF p_source_type_code = 'S' THEN
3284 
3285          OPEN check_sr_conditions;
3286          FETCH check_sr_conditions
3287           INTO l_exist;
3288          IF check_sr_conditions%found THEN
3289             l_return := TRUE;
3290          ELSE
3291             l_return := FALSE;
3292          END IF;
3293          CLOSE check_sr_conditions;
3294 
3295       IF l_return = FALSE THEN
3296 
3297          OPEN check_sr_details;
3298          FETCH check_sr_details
3299           INTO l_exist;
3300          IF check_sr_details%found THEN
3301             l_return := TRUE;
3302          ELSE
3303             l_return := FALSE;
3304          END IF;
3305          CLOSE check_sr_details;
3306       END IF;
3307 
3308       IF l_return = FALSE THEN
3309 
3310          OPEN c_check_derived_sources;
3311          LOOP
3312          FETCH c_check_derived_sources
3313           INTO l_check_derived_sources;
3314          EXIT WHEN c_check_derived_sources%notfound or l_return = TRUE;
3315 
3316          IF derived_source_locked_by_tab
3317               (p_der_application_id      => l_check_derived_sources.application_id
3318               ,p_der_source_type_code    => l_check_derived_sources.source_type_code
3319               ,p_der_source_code         => l_check_derived_sources.source_code)
3320  THEN
3321 
3322             l_return := TRUE;
3323          ELSE
3324             l_return := FALSE;
3325          END IF;
3326          END LOOP;
3327          CLOSE c_check_derived_sources;
3328       END IF;
3329 
3330    ELSIF p_source_type_code = 'D' THEN
3331 
3332       IF derived_source_locked_by_tab
3333            (p_der_application_id      => p_application_id
3334            ,p_der_source_type_code    => p_source_type_code
3335            ,p_der_source_code         => p_source_code) THEN
3336 
3337          l_return := TRUE;
3338       ELSE
3339          l_return := FALSE;
3340       END IF;
3341    END IF;
3342 
3343   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3344     trace(p_msg    => 'END of procedure source_is_locked_by_tab'
3345          ,p_module => l_log_module
3346          ,p_level  => C_LEVEL_PROCEDURE);
3347   END IF;
3348 
3349    RETURN l_return;
3350 
3351 EXCEPTION
3352    WHEN xla_exceptions_pkg.application_exception THEN
3353 
3354       IF check_sr_conditions%ISOPEN THEN
3355          CLOSE check_sr_conditions;
3356       END IF;
3357       IF check_sr_details%ISOPEN THEN
3358          CLOSE check_sr_details;
3359       END IF;
3360       IF c_check_derived_sources%ISOPEN THEN
3361          CLOSE c_check_derived_sources;
3362       END IF;
3363 
3364       RAISE;
3365 
3366    WHEN OTHERS                                   THEN
3367       IF check_sr_conditions%ISOPEN THEN
3368          CLOSE check_sr_conditions;
3369       END IF;
3370       IF check_sr_details%ISOPEN THEN
3371          CLOSE check_sr_details;
3372       END IF;
3373       IF c_check_derived_sources%ISOPEN THEN
3374          CLOSE c_check_derived_sources;
3375       END IF;
3376 
3377    xla_exceptions_pkg.raise_message
3378       (p_location   => 'xla_sources_pkg.source_is_locked_by_tab');
3379 
3380 END source_is_locked_by_tab;
3381 
3382 /*======================================================================+
3383 |                                                                       |
3384 | Public Function                                                       |
3385 |                                                                       |
3386 | uncompile_tran_acct_def                                               |
3387 |                                                                       |
3388 | Sets status of the assigned transaction account definition            |
3389 | to uncompiled                                                         |
3390 |                                                                       |
3391 +======================================================================*/
3392 FUNCTION uncompile_tran_acct_def
3393   (p_application_id                   IN NUMBER
3394   ,p_source_code                      IN VARCHAR2
3395   ,p_source_type_code                 IN VARCHAR2
3396   ,p_trx_acct_def                     IN OUT NOCOPY VARCHAR2
3397   ,p_trx_acct_def_type                IN OUT NOCOPY VARCHAR2)
3398 RETURN BOOLEAN
3399 
3400 IS
3401 
3402    --
3403    -- Private variables
3404    --
3405    l_exist   VARCHAR2(1) ;
3406    l_return  BOOLEAN := TRUE;
3407 
3408    l_application_name   varchar2(240) := null;
3409    l_trx_acct_def  varchar2(80)  := null;
3410    l_trx_acct_def_type  varchar2(80)  := NULL;
3411    --
3412    -- Cursor declarations
3413    --
3414    CURSOR c_seg_rules
3415    IS
3416    SELECT a.application_id, a.amb_context_code, a.segment_rule_type_code, a.segment_rule_code
3417      FROM xla_seg_rules_b a
3418     WHERE exists (SELECT 'x'
3419                     FROM xla_seg_rule_details sd
3420                    WHERE ((value_source_application_id      = p_application_id
3421                      AND  value_source_type_code            = p_source_type_code
3422                      AND  value_source_code                 = p_source_code)
3423                       OR (input_source_application_id       = p_application_id
3424                      AND  input_source_type_code            = p_source_type_code
3425                      AND  input_source_code                 = p_source_code
3426                      AND  input_source_code IS NOT NULL))
3427                      AND sd.application_id                  = a.application_id
3428                      AND sd.amb_context_code                = a.amb_context_code
3429                      AND sd.segment_rule_type_code          = a.segment_rule_type_code
3430                      AND sd.segment_rule_code               = a.segment_rule_code
3431                   UNION
3432                   SELECT 'x'
3433                     FROM xla_conditions c, xla_seg_rule_details sd
3434                    WHERE ((c.source_application_id      = p_application_id
3435                      AND  c.source_code                 = p_source_code
3436                      AND  c.source_type_code            = p_source_type_code)
3437                       OR (c.value_source_application_id = p_application_id
3438                      AND  c.value_source_type_code      = p_source_type_code
3439                      AND  c.value_source_code           = p_source_code
3440                      AND  c.value_source_code IS NOT NULL))
3441                      AND c.segment_rule_detail_id       = sd.segment_rule_detail_id
3442                      AND sd.application_id              = a.application_id
3443                      AND sd.amb_context_code            = a.amb_context_code
3444                      AND sd.segment_rule_type_code      = a.segment_rule_type_code
3445                      AND sd.segment_rule_code           = a.segment_rule_code);
3446 
3447    l_seg_rule   c_seg_rules%rowtype;
3448 
3449    CURSOR c_check_derived_sources
3450    IS
3451    SELECT application_id, source_type_code, source_code
3452      FROM xla_sources_b r
3453     WHERE exists (SELECT 'x'
3454                     FROM xla_source_params p
3455                    WHERE p.ref_source_application_id   = p_application_id
3456                      AND p.ref_source_code             = p_source_code
3457                      AND p.ref_source_type_code        = p_source_type_code
3458                      AND p.application_id              = r.application_id
3459                      AND p.source_type_code            = r.source_type_code
3460                      AND p.source_code                 = r.source_code);
3461 
3462    l_check_derived_sources    c_check_derived_sources%rowtype;
3463 
3464 
3465    l_log_module VARCHAR2(240);
3466 BEGIN
3467   IF g_log_enabled THEN
3468     l_log_module := C_DEFAULT_MODULE||'.uncompile_tran_acct_def';
3469   END IF;
3470 
3471   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3472     trace(p_msg    => 'BEGIN of procedure uncompile_tran_acct_def'
3473          ,p_module => l_log_module
3474          ,p_level  => C_LEVEL_PROCEDURE);
3475   END IF;
3476 
3477   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3478     trace(p_msg    => 'application_id = '||p_application_id||
3479                       ',source_code = '||p_source_code||
3480                       ',source_type_code = '||p_source_type_code
3481          ,p_module => l_log_module
3482          ,p_level  => C_LEVEL_STATEMENT);
3483   END IF;
3484 
3485    IF p_source_type_code = 'S' THEN
3486 
3487          OPEN c_seg_rules;
3488          LOOP
3489          FETCH c_seg_rules
3490           INTO l_seg_rule;
3491          EXIT WHEN c_seg_rules%NOTFOUND or l_return=FALSE;
3492 
3493             IF xla_seg_rules_pkg.uncompile_tran_acct_def
3494                  (p_application_id         => l_seg_rule.application_id
3495                  ,p_amb_context_code       => l_seg_rule.amb_context_code
3496                  ,p_segment_rule_type_code => l_seg_rule.segment_rule_type_code
3497                  ,p_segment_rule_code      => l_seg_rule.segment_rule_code
3498                  ,p_application_name       => l_application_name
3499                  ,p_trx_acct_def           => l_trx_acct_def
3500                  ,p_trx_acct_def_type      => l_trx_acct_def_type) THEN
3501 
3502                l_return := TRUE;
3503             ELSE
3504                l_return := FALSE;
3505             END IF;
3506          END LOOP;
3507          CLOSE c_seg_rules;
3508 
3509       IF l_return = TRUE THEN
3510 
3511          OPEN c_check_derived_sources;
3512          LOOP
3513          FETCH c_check_derived_sources
3514           INTO l_check_derived_sources;
3515          EXIT WHEN c_check_derived_sources%notfound or l_return = FALSE;
3516 
3517            IF uncompile_tad_for_der_source
3518                 (p_der_application_id    => l_check_derived_sources.application_id
3519                 ,p_der_source_type_code  => l_check_derived_sources.source_type_code
3520                 ,p_der_source_code       => l_check_derived_sources.source_code
3521                 ,p_trx_acct_def           => l_trx_acct_def
3522                 ,p_trx_acct_def_type      => l_trx_acct_def_type) THEN
3523 
3524                l_return := TRUE;
3525             ELSE
3526                l_return := FALSE;
3527             END IF;
3528          END LOOP;
3529 
3530          CLOSE c_check_derived_sources;
3531      END IF;
3532 
3533    ELSIF p_source_type_code = 'D' THEN
3534 
3535       IF uncompile_tad_for_der_source
3536            (p_der_application_id    => p_application_id
3537            ,p_der_source_type_code  => p_source_type_code
3538            ,p_der_source_code       => p_source_code
3539            ,p_trx_acct_def           => l_trx_acct_def
3540            ,p_trx_acct_def_type      => l_trx_acct_def_type) THEN
3541 
3542          l_return := TRUE;
3543       ELSE
3544          l_return := FALSE;
3545       END IF;
3546 
3547    END IF;
3548 
3549    p_trx_acct_def := l_trx_acct_def;
3550    p_trx_acct_def_type := l_trx_acct_def_type;
3551 
3552   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3553     trace(p_msg    => 'END of procedure uncompile_tran_acct_def'
3554          ,p_module => l_log_module
3555          ,p_level  => C_LEVEL_PROCEDURE);
3556   END IF;
3557 
3558    return l_return;
3559 
3560 EXCEPTION
3561    WHEN xla_exceptions_pkg.application_exception THEN
3562       RAISE;
3563 WHEN OTHERS                                   THEN
3564    xla_exceptions_pkg.raise_message
3565       (p_location   => 'xla_sources_pkg.uncompile_tran_acct_def');
3566 
3567 END uncompile_tran_acct_def;
3568 
3569 /*======================================================================+
3570 |                                                                       |
3571 | Public Function                                                       |
3572 |                                                                       |
3573 | source_in_use_by_tad                                                  |
3574 |                                                                       |
3575 | Returns true if the source is being used by a transaction account     |
3576 | definition                                                            |
3577 |                                                                       |
3578 +======================================================================*/
3579 FUNCTION source_in_use_by_tad
3580   (p_application_id                   IN NUMBER
3581   ,p_source_code                      IN VARCHAR2
3582   ,p_source_type_code                 IN VARCHAR2
3583   ,p_account_type_code                IN VARCHAR2)
3584 RETURN VARCHAR2
3585 
3586 IS
3587 
3588    CURSOR check_det_value_source
3589    IS
3590    SELECT 'x'
3591      FROM xla_seg_rule_details s
3592     WHERE s.value_source_application_id = p_application_id
3593       AND s.value_source_code           = p_source_code
3594       AND s.value_source_type_code      = p_source_type_code
3595       AND s.value_source_code is not null
3596       AND exists (SELECT 'x'
3597                     FROM xla_tab_acct_def_details d
3598                    WHERE s.application_id              = d.application_id
3599                      AND d.account_type_code           = p_account_type_code
3600                      AND s.amb_context_code            = d.amb_context_code
3601                      AND s.segment_rule_code           = d.segment_rule_code
3602                      AND s.segment_rule_type_code      = d.segment_rule_type_code);
3603 
3604    CURSOR check_det_input_source
3605    IS
3606    SELECT 'x'
3607      FROM xla_seg_rule_details s
3608     WHERE s.input_source_application_id = p_application_id
3609       AND s.input_source_code           = p_source_code
3610       AND s.input_source_type_code      = p_source_type_code
3611       AND s.input_source_code is not null
3612       AND exists (SELECT 'x'
3613                     FROM xla_tab_acct_def_details d
3614                    WHERE s.application_id              = d.application_id
3615                      AND d.account_type_code           = p_account_type_code
3616                      AND s.amb_context_code            = d.amb_context_code
3617                      AND s.segment_rule_code           = d.segment_rule_code
3618                      AND s.segment_rule_type_code      = d.segment_rule_type_code);
3619 
3620 
3621 
3622    CURSOR check_con_source
3623    IS
3624    SELECT 'x'
3625      FROM xla_conditions c
3626     WHERE c.source_application_id = p_application_id
3627       AND c.source_code           = p_source_code
3628       AND c.source_type_code      = p_source_type_code
3629       AND exists (SELECT 'x'
3630                     FROM xla_tab_acct_def_details d, xla_seg_rule_details s
3631                    WHERE s.application_id              = d.application_id
3632                      AND d.account_type_code           = p_account_type_code
3633                      AND s.amb_context_code            = d.amb_context_code
3634                      AND s.segment_rule_code           = d.segment_rule_code
3635                      AND s.segment_rule_type_code      = d.segment_rule_type_code
3636                      AND s.segment_rule_detail_id = c.segment_rule_detail_id);
3637 
3638    CURSOR check_con_value_source
3639    IS
3640    SELECT 'x'
3641      FROM xla_conditions c
3642     WHERE value_source_application_id = p_application_id
3643       AND value_source_code           = p_source_code
3644       AND value_source_type_code      = p_source_type_code
3645       AND value_source_code is not null
3646       AND exists (SELECT 'x'
3647                     FROM xla_tab_acct_def_details d, xla_seg_rule_details s
3648                    WHERE s.application_id              = d.application_id
3649                      AND d.account_type_code           = p_account_type_code
3650                      AND s.amb_context_code            = d.amb_context_code
3651                      AND s.segment_rule_code           = d.segment_rule_code
3652                      AND s.segment_rule_type_code      = d.segment_rule_type_code
3653                      AND s.segment_rule_detail_id = c.segment_rule_detail_id);
3654 
3655 
3656    l_exist    VARCHAR2(1);
3657    l_return   VARCHAR2(30);
3658 
3659    l_log_module VARCHAR2(240);
3660 BEGIN
3661 
3662   l_return	:= 'FALSE';
3663 
3664   IF g_log_enabled THEN
3665     l_log_module := C_DEFAULT_MODULE||'.source_in_use_by_tad';
3666   END IF;
3667 
3668   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3669     trace(p_msg    => 'BEGIN of procedure source_in_use_by_tad'
3670          ,p_module => l_log_module
3671          ,p_level  => C_LEVEL_PROCEDURE);
3672   END IF;
3673 
3674   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3675     trace(p_msg    => 'application_id = '||p_application_id||
3676                       ',source_code = '||p_source_code||
3677                       ',source_type_code = '||p_source_type_code||
3678                       ',account_type_code = '||p_account_type_code
3679          ,p_module => l_log_module
3680          ,p_level  => C_LEVEL_STATEMENT);
3681   END IF;
3682 
3683    OPEN check_det_value_source;
3684    FETCH check_det_value_source
3685     INTO l_exist;
3686    IF check_det_value_source%found THEN
3687       l_return := 'TRUE';
3688    ELSE
3689       l_return := 'FALSE';
3690    END IF;
3691    CLOSE check_det_value_source;
3692 
3693    IF l_return = 'FALSE' THEN
3694 
3695       OPEN check_det_input_source;
3696       FETCH check_det_input_source
3697        INTO l_exist;
3698       IF check_det_input_source%found THEN
3699          l_return := 'TRUE';
3700       ELSE
3701          l_return := 'FALSE';
3702       END IF;
3703       CLOSE check_det_input_source;
3704    END IF;
3705 
3706    IF l_return = 'FALSE' THEN
3707 
3708       OPEN check_con_source;
3709       FETCH check_con_source
3710        INTO l_exist;
3711       IF check_con_source%found THEN
3712          l_return := 'TRUE';
3713       ELSE
3714          l_return := 'FALSE';
3715       END IF;
3716       CLOSE check_con_source;
3717    END IF;
3718 
3719    IF l_return = 'FALSE' THEN
3720 
3721       OPEN check_con_value_source;
3722       FETCH check_con_value_source
3723        INTO l_exist;
3724       IF check_con_value_source%found THEN
3725          l_return := 'TRUE';
3726       ELSE
3727          l_return := 'FALSE';
3728       END IF;
3729       CLOSE check_con_value_source;
3730    END IF;
3731 
3732   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3733     trace(p_msg    => 'END of procedure source_in_use_by_tad'
3734          ,p_module => l_log_module
3735          ,p_level  => C_LEVEL_PROCEDURE);
3736   END IF;
3737 
3738    RETURN l_return;
3739 
3740 EXCEPTION
3741    WHEN xla_exceptions_pkg.application_exception THEN
3742       RAISE;
3743 
3744    WHEN OTHERS                                   THEN
3745       xla_exceptions_pkg.raise_message
3746          (p_location   => 'xla_sources_pkg.source_in_use_by_tad');
3747 
3748 END source_in_use_by_tad;
3749 
3750 /*======================================================================+
3751 |                                                                       |
3752 | Public Function                                                       |
3753 |                                                                       |
3754 | get_derived_source_level                                              |
3755 |                                                                       |
3756 | Gets the level of derived source if the source belongs to the event   |
3757 | class                                                                 |
3758 |                                                                       |
3759 +======================================================================*/
3760 FUNCTION get_derived_source_level
3761   (p_application_id                   IN NUMBER
3762   ,p_derived_source_type_code         IN VARCHAR2
3763   ,p_derived_source_code              IN VARCHAR2
3764   ,p_event_class_code                 IN VARCHAR2)
3765 RETURN VARCHAR2
3766 
3767 IS
3768 
3769    --
3770    -- Private variables
3771    --
3772    l_exist   VARCHAR2(1) ;
3773    l_level   VARCHAR2(30);
3774 
3775    --
3776    -- Cursor declarations
3777    --
3778 
3779    CURSOR class_source
3780    IS
3781    SELECT 'x'
3782      FROM xla_source_params r
3783     WHERE application_id       = p_application_id
3784       AND source_code          = p_derived_source_code
3785       AND source_type_code     = p_derived_source_type_code
3786       AND ref_source_code is not null
3787       AND ref_source_type_code = 'S'
3788       AND not exists (SELECT 'x'
3789                         FROM xla_event_sources s
3790                        WHERE s.source_application_id   = r.ref_source_application_id
3791                          AND s.source_type_code        = r.ref_source_type_code
3792                          AND s.source_code             = r.ref_source_code
3793                          AND s.application_id          = p_application_id
3794                          AND s.event_class_code        = p_event_class_code
3795                          AND s.active_flag            = 'Y');
3796 
3797    CURSOR lc_source
3798    IS
3799    SELECT 'x'
3800      FROM xla_source_params r
3801     WHERE application_id       = p_application_id
3802       AND source_code          = p_derived_source_code
3803       AND source_type_code     = p_derived_source_type_code
3804       AND ref_source_code is not null
3805       AND ref_source_type_code = 'S'
3806       AND exists (SELECT 'x'
3807                     FROM xla_event_sources s
3808                    WHERE s.source_application_id   = r.ref_source_application_id
3809                      AND s.source_type_code        = r.ref_source_type_code
3810                      AND s.source_code             = r.ref_source_code
3811                      AND s.application_id          = p_application_id
3812                      AND s.event_class_code        = p_event_class_code
3813                      AND s.active_flag             = 'Y'
3814                      AND s.level_code              = 'C');
3815 
3816    CURSOR line_source
3817    IS
3818    SELECT 'x'
3819      FROM xla_source_params r
3820     WHERE application_id       = p_application_id
3821       AND source_code          = p_derived_source_code
3822       AND source_type_code     = p_derived_source_type_code
3823       AND ref_source_code is not null
3824       AND ref_source_type_code = 'S'
3825       AND exists (SELECT 'x'
3826                     FROM xla_event_sources s
3827                    WHERE s.source_application_id   = r.ref_source_application_id
3828                      AND s.source_type_code        = r.ref_source_type_code
3829                      AND s.source_code             = r.ref_source_code
3830                      AND s.application_id          = p_application_id
3831                      AND s.event_class_code        = p_event_class_code
3832                      AND s.active_flag             = 'Y'
3833                      AND s.level_code              = 'L');
3834 
3835    l_log_module VARCHAR2(240);
3836 BEGIN
3837 
3838   l_level	:= 'H';
3839 
3840   IF g_log_enabled THEN
3841     l_log_module := C_DEFAULT_MODULE||'.get_derived_source_level';
3842   END IF;
3843 
3844   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3845     trace(p_msg    => 'BEGIN of procedure get_derived_source_level'
3846          ,p_module => l_log_module
3847          ,p_level  => C_LEVEL_PROCEDURE);
3848   END IF;
3849 
3850   IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3851     trace(p_msg    => 'application_id = '||p_application_id||
3852                       ',source_code = '||p_derived_source_code||
3853                       ',source_type_code = '||p_derived_source_type_code||
3854                       ',event_class_code = '||p_event_class_code
3855          ,p_module => l_log_module
3856          ,p_level  => C_LEVEL_STATEMENT);
3857   END IF;
3858 
3859    OPEN class_source;
3860    FETCH class_source
3861     INTO l_exist;
3862    IF class_source%found THEN
3863       l_level := 'X';
3864    END IF;
3865    CLOSE class_source;
3866 
3867    IF l_level <> 'X' THEN
3868 
3869       OPEN lc_source;
3870       FETCH lc_source
3871        INTO l_exist;
3872       IF lc_source%found THEN
3873          l_level := 'C';
3874       ELSE
3875          OPEN line_source;
3876          FETCH line_source
3877           INTO l_exist;
3878          IF line_source%found THEN
3879             l_level := 'L';
3880          END IF;
3881          CLOSE line_source;
3882       END IF;
3883       CLOSE lc_source;
3884    END IF;
3885 
3886   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3887     trace(p_msg    => 'END of procedure get_derived_source_level'
3888          ,p_module => l_log_module
3889          ,p_level  => C_LEVEL_PROCEDURE);
3890   END IF;
3891 
3892 
3893    RETURN l_level;
3894 
3895 EXCEPTION
3896    WHEN xla_exceptions_pkg.application_exception THEN
3897       RAISE;
3898 
3899 WHEN OTHERS                                   THEN
3900    xla_exceptions_pkg.raise_message
3901       (p_location   => 'xla_sources_pkg.get_derived_source_level');
3902 
3903 END get_derived_source_level;
3904 
3905 --=============================================================================
3906 --
3907 -- Following code is executed when the package body is referenced for the first
3908 -- time
3909 --
3910 --=============================================================================
3911 BEGIN
3912    g_log_level          := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3913    g_log_enabled        := fnd_log.test
3914                           (log_level  => g_log_level
3915                           ,module     => C_DEFAULT_MODULE);
3916 
3917    IF NOT g_log_enabled THEN
3918       g_log_level := C_LEVEL_LOG_DISABLED;
3919    END IF;
3920 
3921 END xla_sources_pkg;