DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_VALIDATIONS_PKG

Source


1 PACKAGE BODY xla_validations_pkg AS
2 /* $Header: xlacmval.pkb 120.16 2006/04/21 18:14:54 wychan ship $ */
3 /*======================================================================+
4 |             Copyright (c) 1995-2002 Oracle Corporation                |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | PACKAGE NAME                                                          |
9 |    xla_validations_pkg                                                |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |    XLA Common Validations Package                                     |
13 |                                                                       |
14 | HISTORY                                                               |
15 |    22-May-02 Dimple Shah    Created                                   |
16 |                                                                       |
17 +======================================================================*/
18 
19 /*======================================================================+
20 |                                                                       |
21 | Public Function                                                       |
22 |                                                                       |
23 | object_name_is_valid                                                  |
24 |                                                                       |
25 | Checks whether the object name is valid                               |
26 |                                                                       |
27 +======================================================================*/
28 FUNCTION  object_name_is_valid
29   (p_object_name                  IN  VARCHAR2)
30 RETURN BOOLEAN
31 
32 IS
33 
34     --
35     -- Variable declarations
36     --
37     l_length     number      := 0;
38     l_char       varchar2(1) := null;
39     l_return     BOOLEAN     := TRUE;
40 
41 BEGIN
42 xla_utility_pkg.trace('> xla_validations_pkg.object_name_is_valid'          , 10);
43 
44 xla_utility_pkg.trace('Object Name               = '||p_object_name     , 20);
45 
46      SELECT length(p_object_name)
47        INTO l_length
48        FROM dual;
49 
50      FOR i in 1..l_length
51      LOOP
52        SELECT substr(p_object_name,i,1)
53          INTO l_char
54          FROM dual;
55        IF l_return = TRUE THEN
56           IF (l_char = '&' OR
57              l_char = '''') THEN
58              l_return := FALSE;
59           ELSE
60              l_return := TRUE;
61           END IF;
62        END IF;
63     END LOOP;
64 
65 xla_utility_pkg.trace('< xla_validations_pkg.object_name_is_valid'           , 10);
66 
67 RETURN l_return;
68 
69 EXCEPTION
70 WHEN xla_exceptions_pkg.application_exception THEN
71    RAISE;
72 WHEN OTHERS                                   THEN
73    xla_exceptions_pkg.raise_message
74       (p_location   => 'xla_validations_pkg.object_name_is_valid');
75 END object_name_is_valid;
76 
77 /*======================================================================+
78 |                                                                       |
79 | Public procedure                                                      |
80 |                                                                       |
81 | get_product_rule_info                                                 |
82 |                                                                       |
83 | Gets name and owner for the product rule code                         |
84 |                                                                       |
85 +======================================================================*/
86 PROCEDURE  get_product_rule_info
87   (p_application_id                  IN  NUMBER
88   ,p_amb_context_code                IN  VARCHAR2
89   ,p_product_rule_type_code          IN  VARCHAR2
90   ,p_product_rule_code               IN  VARCHAR2
91   ,p_application_name                IN OUT NOCOPY VARCHAR2
92   ,p_product_rule_name               IN OUT NOCOPY VARCHAR2
93   ,p_product_rule_type               IN OUT NOCOPY VARCHAR2)
94 
95 IS
96 
97     --
98     -- Cursor declarations
99     --
100     CURSOR c_prod_rule
101     IS
102     SELECT fat.application_name, xpr.name, xlk.meaning product_rule_type_dsp
103       FROM xla_product_rules_tl xpr
104          , fnd_application_tl   fat
105          , xla_lookups          xlk
106      WHERE xlk.lookup_type             = 'XLA_OWNER_TYPE'
107        AND xlk.lookup_code             = xpr.product_rule_type_code
108        AND fat.application_id          = xpr.application_id
109        AND fat.language                = USERENV('LANG')
110        AND xpr.application_id          = p_application_id
111        AND xpr.amb_context_code        = p_amb_context_code
112        AND xpr.product_rule_type_code  = p_product_rule_type_code
113        AND xpr.product_rule_code       = p_product_rule_code
114        AND xpr.language                = USERENV('LANG');
115 
116 BEGIN
117 xla_utility_pkg.trace('> xla_validations_pkg.get_product_rule_info'          , 10);
118 
119 xla_utility_pkg.trace('Application_id                = '||p_application_id     , 20);
120 xla_utility_pkg.trace('product_rule_type_code        = '||p_product_rule_type_code     , 20);
121 xla_utility_pkg.trace('product_rule_code        = '||p_product_rule_code     , 20);
122 
123    OPEN c_prod_rule;
124    FETCH c_prod_rule
125     INTO p_application_name, p_product_rule_name, p_product_rule_type;
126    CLOSE c_prod_rule;
127 
128 xla_utility_pkg.trace('< xla_validations_pkg.get_product_rule_info'           , 10);
129 
130 EXCEPTION
131 WHEN xla_exceptions_pkg.application_exception THEN
132    RAISE;
133 WHEN OTHERS                                   THEN
134    xla_exceptions_pkg.raise_message
135       (p_location   => 'xla_validations_pkg.get_product_rule_info');
136 
137 END get_product_rule_info;
138 
139 /*======================================================================+
140 |                                                                       |
141 | Public procedure                                                      |
142 |                                                                       |
143 | get_description_info                                                  |
144 |                                                                       |
145 | Gets name and owner for the description rule code                     |
146 |                                                                       |
147 +======================================================================*/
148 PROCEDURE  get_description_info
149   (p_application_id                 IN  NUMBER
150   ,p_amb_context_code               IN  VARCHAR2
151   ,p_description_type_code          IN  VARCHAR2
152   ,p_description_code               IN  VARCHAR2
153   ,p_application_name               IN OUT NOCOPY VARCHAR2
154   ,p_description_name               IN OUT NOCOPY VARCHAR2
155   ,p_description_type               IN OUT NOCOPY VARCHAR2)
156 
157 IS
158 
159     --
160     -- Cursor declarations
161     --
162     CURSOR c_desc_rule
163     IS
164     SELECT fat.application_name, xdt.name, xlk.meaning description_type_code_dsp
165       FROM xla_descriptions_tl  xdt
166          , fnd_application_tl   fat
167          , xla_lookups          xlk
168      WHERE xlk.lookup_type            = 'XLA_OWNER_TYPE'
169        AND xlk.lookup_code            = xdt.description_type_code
170        AND fat.application_id         = xdt.application_id
171        AND fat.language               = USERENV('LANG')
172        AND xdt.application_id         = p_application_id
173        AND xdt.amb_context_code       = p_amb_context_code
174        AND xdt.description_type_code  = p_description_type_code
175        AND xdt.description_code       = p_description_code
176        AND xdt.language               = USERENV('LANG');
177 
178 BEGIN
179 xla_utility_pkg.trace('> xla_validations_pkg.get_description_info'          , 10);
180 
181 xla_utility_pkg.trace('Application_id                = '||p_application_id     , 20);
182 xla_utility_pkg.trace('description_type_code        = '||p_description_type_code     , 20);
183 xla_utility_pkg.trace('description_code        = '||p_description_code     , 20);
184 
185    OPEN c_desc_rule;
186    FETCH c_desc_rule
187     INTO p_application_name, p_description_name, p_description_type;
188    CLOSE c_desc_rule;
189 
190 xla_utility_pkg.trace('< xla_validations_pkg.get_description_info'           , 10);
191 
192 EXCEPTION
193 WHEN xla_exceptions_pkg.application_exception THEN
194    RAISE;
195 WHEN OTHERS                                   THEN
196    xla_exceptions_pkg.raise_message
197       (p_location   => 'xla_validations_pkg.get_description_info');
198 
199 END get_description_info;
200 
201 /*======================================================================+
202 |                                                                       |
203 | Public procedure                                                      |
204 |                                                                       |
205 | get_segment_rule_info                                                 |
206 |                                                                       |
207 | Gets name and owner for the segment rule code                         |
208 |                                                                       |
209 +======================================================================*/
210 PROCEDURE  get_segment_rule_info
211   (p_application_id                  IN  NUMBER
212   ,p_amb_context_code                IN  VARCHAR2
213   ,p_segment_rule_type_code          IN  VARCHAR2
214   ,p_segment_rule_code               IN  VARCHAR2
215   ,p_application_name                IN OUT NOCOPY VARCHAR2
216   ,p_segment_rule_name               IN OUT NOCOPY VARCHAR2
217   ,p_segment_rule_type               IN OUT NOCOPY VARCHAR2)
218 
219 IS
220 
221     --
222     -- Cursor declarations
223     --
224     CURSOR c_seg_rule
225     IS
226     SELECT fat.application_name, xsr.name, xlk.meaning segment_rule_type_dsp
227       FROM xla_seg_rules_tl     xsr
228          , fnd_application_tl   fat
229          , xla_lookups          xlk
230      WHERE xlk.lookup_type             = 'XLA_OWNER_TYPE'
231        AND xlk.lookup_code             = xsr.segment_rule_type_code
232        AND fat.application_id          = xsr.application_id
233        AND fat.language                = USERENV('LANG')
234        AND xsr.application_id          = p_application_id
235        AND xsr.amb_context_code        = p_amb_context_code
236        AND xsr.segment_rule_type_code  = p_segment_rule_type_code
237        AND xsr.segment_rule_code       = p_segment_rule_code
238        AND xsr.language                = USERENV('LANG');
239 
240 BEGIN
241 xla_utility_pkg.trace('> xla_validations_pkg.get_segment_rule_info'          , 10);
242 
243 xla_utility_pkg.trace('Application_id                = '||p_application_id     , 20);
244 xla_utility_pkg.trace('segment_rule_type_code        = '||p_segment_rule_type_code     , 20
245 );
246 xla_utility_pkg.trace('segment_rule_code        = '||p_segment_rule_code     , 20);
247 
248    OPEN c_seg_rule;
249    FETCH c_seg_rule
250     INTO p_application_name, p_segment_rule_name, p_segment_rule_type;
251    CLOSE c_seg_rule;
252 
253 xla_utility_pkg.trace('< xla_validations_pkg.get_segment_rule_info'           , 10);
254 
255 EXCEPTION
256 WHEN xla_exceptions_pkg.application_exception THEN
257    RAISE;
258 WHEN OTHERS                                   THEN
259    xla_exceptions_pkg.raise_message
260       (p_location   => 'xla_validations_pkg.get_segment_rule_info');
261 
262 END get_segment_rule_info;
263 
264 /*======================================================================+
265 |                                                                       |
266 | Public procedure                                                      |
267 |                                                                       |
268 | get_line_type_info                                                    |
269 |                                                                       |
270 | Gets name and owner for the line type code                            |
271 |                                                                       |
272 +======================================================================*/
273 PROCEDURE  get_line_type_info
274   (p_application_id                     IN  NUMBER
275   ,p_amb_context_code                   IN  VARCHAR2
276   ,p_entity_code                        IN  VARCHAR2
277   ,p_event_class_code                   IN  VARCHAR2
278   ,p_accounting_line_type_code          IN  VARCHAR2
279   ,p_accounting_line_code               IN  VARCHAR2
280   ,p_application_name                   IN OUT NOCOPY VARCHAR2
281   ,p_accounting_line_type_name          IN OUT NOCOPY VARCHAR2
282   ,p_accounting_line_type               IN OUT NOCOPY VARCHAR2)
283 
284 IS
285 
286     --
287     -- Cursor declarations
288     --
289     CURSOR c_line_type
290     IS
291     SELECT fat.application_name, xal.name, xlk.meaning accounting_line_type_dsp
292       FROM xla_acct_line_types_tl   xal
293          , fnd_application_tl       fat
294          , xla_lookups              xlk
295      WHERE xlk.lookup_type                = 'XLA_OWNER_TYPE'
296        AND xlk.lookup_code                = xal.accounting_line_type_code
297        AND fat.application_id             = xal.application_id
298        AND fat.language                   = USERENV('LANG')
299        AND xal.application_id             = p_application_id
300        AND xal.amb_context_code           = p_amb_context_code
301        AND xal.entity_code                = p_entity_code
302        AND xal.event_class_code           = p_event_class_code
303        AND xal.accounting_line_type_code  = p_accounting_line_type_code
304        AND xal.accounting_line_code       = p_accounting_line_code
305        AND xal.language                   = USERENV('LANG');
306 
307 BEGIN
308 xla_utility_pkg.trace('> xla_validations_pkg.get_line_type_info'          , 10);
309 
310 xla_utility_pkg.trace('Application_id                = '||p_application_id     , 20);
311 xla_utility_pkg.trace('entity_code                     = '||p_entity_code     , 20);
312 xla_utility_pkg.trace('event_class_code                = '||p_event_class_code     , 20);
313 xla_utility_pkg.trace('accounting_line_type_code        = '||p_accounting_line_type_code     , 20
314 );
315 xla_utility_pkg.trace('accounting_line_code        = '||p_accounting_line_code     , 20);
316 
317    OPEN c_line_type;
318    FETCH c_line_type
319     INTO p_application_name, p_accounting_line_type_name, p_accounting_line_type;
320    CLOSE c_line_type;
321 
322 xla_utility_pkg.trace('< xla_validations_pkg.get_line_type_info'           , 10);
323 
324 EXCEPTION
325 WHEN xla_exceptions_pkg.application_exception THEN
326    RAISE;
327 WHEN OTHERS                                   THEN
328    xla_exceptions_pkg.raise_message
329       (p_location   => 'xla_validations_pkg.get_line_type_info');
330 
331 END get_line_type_info;
332 
333 /*======================================================================+
334 |                                                                       |
335 | Public procedure                                                      |
336 |                                                                       |
337 | get_event_class_info                                                  |
338 |                                                                       |
339 | Gets name for the event class                                         |
340 |                                                                       |
341 +======================================================================*/
342 PROCEDURE  get_event_class_info
343   (p_application_id                     IN  NUMBER
344   ,p_entity_code                        IN  VARCHAR2
345   ,p_event_class_code                   IN  VARCHAR2
346   ,p_event_class_name                   IN OUT NOCOPY VARCHAR2)
347 
348 IS
349 
350     --
351     -- Cursor declarations
352     --
353     CURSOR c_event_class
354     IS
355     SELECT name
356       FROM xla_event_classes_tl
357      WHERE application_id             = p_application_id
358        AND entity_code                = p_entity_code
359        AND event_class_code           = p_event_class_code
360        AND language                   = USERENV('LANG');
361 
362 BEGIN
363 xla_utility_pkg.trace('> xla_validations_pkg.get_event_class_info'          , 10);
364 
365 xla_utility_pkg.trace('Application_id                = '||p_application_id     , 20);
366 xla_utility_pkg.trace('entity_code                     = '||p_entity_code     , 20);
367 xla_utility_pkg.trace('event_class_code                = '||p_event_class_code     , 20);
368 
369    OPEN c_event_class;
370    FETCH c_event_class
371     INTO p_event_class_name;
372    CLOSE c_event_class;
373 
374 xla_utility_pkg.trace('< xla_validations_pkg.get_event_class_info'           , 10);
375 
376 EXCEPTION
377 WHEN xla_exceptions_pkg.application_exception THEN
378    RAISE;
379 WHEN OTHERS                                   THEN
380    xla_exceptions_pkg.raise_message
381       (p_location   => 'xla_validations_pkg.get_event_class_info');
382 
383 END get_event_class_info;
384 
385 /*======================================================================+
386 |                                                                       |
387 | Public procedure                                                      |
388 |                                                                       |
389 | get_event_type_info                                                   |
390 |                                                                       |
391 | Gets name for the event class                                         |
392 |                                                                       |
393 +======================================================================*/
394 PROCEDURE  get_event_type_info
395   (p_application_id                     IN  NUMBER
396   ,p_entity_code                        IN  VARCHAR2
397   ,p_event_class_code                   IN  VARCHAR2
398   ,p_event_type_code                    IN  VARCHAR2
399   ,p_event_type_name                    IN OUT NOCOPY VARCHAR2)
400 
401 IS
402 
403     --
404     -- Cursor declarations
405     --
406     CURSOR c_event_type
407     IS
408     SELECT name
409       FROM xla_event_types_tl
410      WHERE application_id             = p_application_id
411        AND entity_code                = p_entity_code
412        AND event_class_code           = p_event_class_code
413        AND event_type_code            = p_event_type_code
414        AND language                   = USERENV('LANG');
415 
416 BEGIN
417 xla_utility_pkg.trace('> xla_validations_pkg.get_event_type_info'          , 10);
418 
419 xla_utility_pkg.trace('Application_id                = '||p_application_id     , 20);
420 xla_utility_pkg.trace('entity_code                     = '||p_entity_code     , 20);
421 xla_utility_pkg.trace('event_class_code                = '||p_event_class_code     , 20);
422 xla_utility_pkg.trace('event_type_code                = '||p_event_type_code     , 20);
423 
424    OPEN c_event_type;
425    FETCH c_event_type
426     INTO p_event_type_name;
427    CLOSE c_event_type;
428 
429 xla_utility_pkg.trace('< xla_validations_pkg.get_event_type_info'           , 10);
430 
431 EXCEPTION
432 WHEN xla_exceptions_pkg.application_exception THEN
433    RAISE;
434 WHEN OTHERS                                   THEN
435    xla_exceptions_pkg.raise_message
436       (p_location   => 'xla_validations_pkg.get_event_type_info');
437 
438 END get_event_type_info;
439 
440 /*======================================================================+
441 |                                                                       |
442 | Public procedure                                                      |
443 |                                                                       |
444 | get_source_info                                                       |
445 |                                                                       |
446 | Gets name for the source                                              |
447 |                                                                       |
448 +======================================================================*/
449 PROCEDURE  get_source_info
450   (p_application_id                     IN  NUMBER
451   ,p_source_type_code                   IN  VARCHAR2
452   ,p_source_code                        IN  VARCHAR2
453   ,p_source_name                        IN OUT NOCOPY VARCHAR2
454   ,p_source_type                        IN OUT NOCOPY VARCHAR2)
455 
456 IS
457 
458     --
459     -- Cursor declarations
460     --
461     CURSOR c_source
462     IS
463     SELECT s.name, l.meaning source_type
464       FROM xla_sources_tl s, xla_lookups l
465      WHERE s.application_id             = p_application_id
466        AND s.source_type_code           = p_source_type_code
467        AND s.source_code                = p_source_code
468        AND s.language                   = USERENV('LANG')
469        AND s.source_type_code           = l.lookup_code
470        AND l.lookup_type                = 'XLA_SOURCE_TYPE';
471 
472 BEGIN
473 xla_utility_pkg.trace('> xla_validations_pkg.get_source_info'          , 10);
474 
475 xla_utility_pkg.trace('Application_id                  = '||p_application_id     , 20);
476 xla_utility_pkg.trace('source_code                     = '||p_source_code     , 20);
477 xla_utility_pkg.trace('source_type_code                = '||p_source_type_code     , 20);
478 
479    OPEN c_source;
480    FETCH c_source
481     INTO p_source_name, p_source_type;
482    CLOSE c_source;
483 
484 xla_utility_pkg.trace('< xla_validations_pkg.get_source_info'           , 10);
485 
486 EXCEPTION
487 WHEN xla_exceptions_pkg.application_exception THEN
488    RAISE;
489 WHEN OTHERS                                   THEN
490    xla_exceptions_pkg.raise_message
491       (p_location   => 'xla_validations_pkg.get_source_info');
492 
493 END get_source_info;
494 
495 /*======================================================================+
496 |                                                                       |
497 | Public procedure                                                      |
498 |                                                                       |
499 | get_analytical_criteria_info                                          |
500 |                                                                       |
501 | Gets name for the analytical criteria                                 |
502 |                                                                       |
503 +======================================================================*/
504 PROCEDURE  get_analytical_criteria_info
505   (p_amb_context_code                          IN  VARCHAR2
506   ,p_anal_criterion_type_code                  IN  VARCHAR2
507   ,p_analytical_criterion_code                 IN  VARCHAR2
508   ,p_analytical_criteria_name                  IN OUT NOCOPY VARCHAR2
509   ,p_analytical_criteria_type                  IN OUT NOCOPY VARCHAR2)
510 
511 IS
512 
513     --
514     -- Cursor declarations
515     --
516     CURSOR c_anc
517     IS
518     SELECT s.name, l.meaning analytical_criteria_type
519       FROM xla_analytical_hdrs_vl s, xla_lookups l
520      WHERE s.amb_context_code                 = p_amb_context_code
521        AND s.analytical_criterion_type_code    = p_anal_criterion_type_code
522        AND s.analytical_criterion_code         = p_analytical_criterion_code
523        AND s.analytical_criterion_type_code    = l.lookup_code
524        AND l.lookup_type                      = 'XLA_OWNER_TYPE';
525 
526 BEGIN
527 xla_utility_pkg.trace('> xla_validations_pkg.get_analytical_criteria_info'          , 10);
528 
529 xla_utility_pkg.trace('analytical_criteria_code          = '||p_analytical_criterion_code     , 20);
530 xla_utility_pkg.trace('anal_criteria_type_code           = '||p_anal_criterion_type_code     , 20);
531 
532    OPEN c_anc;
533    FETCH c_anc
534     INTO p_analytical_criteria_name, p_analytical_criteria_type;
535    CLOSE c_anc;
536 
537 xla_utility_pkg.trace('< xla_validations_pkg.get_analytical_criteria_info'           , 10);
538 
539 EXCEPTION
540 WHEN xla_exceptions_pkg.application_exception THEN
541    RAISE;
542 WHEN OTHERS                                   THEN
543    xla_exceptions_pkg.raise_message
544       (p_location   => 'xla_validations_pkg.get_analytical_criteria_info');
545 
546 END get_analytical_criteria_info;
547 
548 /*======================================================================+
549 |                                                                       |
550 | Public procedure                                                      |
551 |                                                                       |
552 | get_accounting_method_info                                            |
553 |                                                                       |
554 | Gets name for the accounting method                                   |
555 |                                                                       |
556 +======================================================================*/
557 PROCEDURE  get_accounting_method_info
558   (p_accounting_method_type_code             IN  VARCHAR2
559   ,p_accounting_method_code                  IN  VARCHAR2
560   ,p_accounting_method_name                  IN OUT NOCOPY VARCHAR2
561   ,p_accounting_method_type                  IN OUT NOCOPY VARCHAR2)
562 
563 IS
564 
565     --
566     -- Cursor declarations
567     --
568     CURSOR c_anc
569     IS
570     SELECT xam.name, xlk.meaning accounting_method_type
571       FROM xla_acctg_methods_tl xam
572          , xla_lookups          xlk
573      WHERE xlk.lookup_type                    = 'XLA_OWNER_TYPE'
574        AND xlk.lookup_code                    = xam.accounting_method_type_code
575        AND xam.accounting_method_type_code    = p_accounting_method_type_code
576        AND xam.accounting_method_code         = p_accounting_method_code
577        AND xam.language                       = USERENV('LANG');
578 
579 BEGIN
580 xla_utility_pkg.trace('> xla_validations_pkg.get_accounting_method_info'          , 10);
581 
582 xla_utility_pkg.trace('accounting_method_type_code      = '||p_accounting_method_type_code     , 20);
583 xla_utility_pkg.trace('accounting_method_code           = '||p_accounting_method_code     , 20);
584 
585    OPEN c_anc;
586    FETCH c_anc
587     INTO p_accounting_method_name, p_accounting_method_type;
588    CLOSE c_anc;
589 
590 xla_utility_pkg.trace('< xla_validations_pkg.get_accounting_method_info'           , 10);
591 
592 EXCEPTION
593 WHEN xla_exceptions_pkg.application_exception THEN
594    RAISE;
595 WHEN OTHERS                                   THEN
596    xla_exceptions_pkg.raise_message
597       (p_location   => 'xla_validations_pkg.get_accounting_method_info');
598 
599 END get_accounting_method_info;
600 
601 /*======================================================================+
602 |                                                                       |
603 | Public procedure                                                      |
604 |                                                                       |
605 | get_application_name                                                  |
606 |                                                                       |
607 | Gets name for the application                                         |
608 |                                                                       |
609 +======================================================================*/
610 PROCEDURE  get_application_name
611   (p_application_id             IN  NUMBER
612   ,p_application_name           IN OUT NOCOPY VARCHAR2)
613 
614 IS
615 
616     --
617     -- Cursor declarations
618     --
619     CURSOR c_application
620     IS
621     SELECT application_name
622       FROM fnd_application_tl
623      WHERE application_id    = p_application_id
624        AND language          = USERENV('LANG');
625 
626 BEGIN
627 xla_utility_pkg.trace('> xla_validations_pkg.get_application_name'          , 10);
628 
629 xla_utility_pkg.trace('application_id      = '||p_application_id     , 20);
630 
631    OPEN c_application;
632    FETCH c_application
633     INTO p_application_name;
634    CLOSE c_application;
635 
636 xla_utility_pkg.trace('< xla_validations_pkg.get_application_name'           , 10);
637 
638 EXCEPTION
639 WHEN xla_exceptions_pkg.application_exception THEN
640    RAISE;
641 WHEN OTHERS                                   THEN
642    xla_exceptions_pkg.raise_message
643       (p_location   => 'xla_validations_pkg.get_application_name');
644 
645 END get_application_name;
646 
647 /*======================================================================+
648 |                                                                       |
649 | Public procedure                                                      |
650 |                                                                       |
651 | get_ledger_name                                                       |
652 |                                                                       |
653 | Gets name for the ledger                                              |
654 |                                                                       |
655 +======================================================================*/
656 PROCEDURE  get_ledger_name
657   (p_ledger_id             IN  NUMBER
658   ,p_ledger_name           IN OUT NOCOPY VARCHAR2)
659 
660 IS
661 
662     --
663     -- Cursor declarations
664     --
665     CURSOR c_ledger
666     IS
667     SELECT name
668       FROM gl_ledgers
669      WHERE ledger_id    = p_ledger_id;
670 
671 BEGIN
672 xla_utility_pkg.trace('> xla_validations_pkg.get_ledger_name'          , 10);
673 
674 xla_utility_pkg.trace('ledger_id      = '||p_ledger_id     , 20);
675 
676    OPEN c_ledger;
677    FETCH c_ledger
678     INTO p_ledger_name;
679    CLOSE c_ledger;
680 
681 xla_utility_pkg.trace('< xla_validations_pkg.get_ledger_name'           , 10);
682 
683 EXCEPTION
684 WHEN xla_exceptions_pkg.application_exception THEN
685    RAISE;
686 WHEN OTHERS                                   THEN
687    xla_exceptions_pkg.raise_message
688       (p_location   => 'xla_validations_pkg.get_ledger_name');
689 
690 END get_ledger_name;
691 
692 /*======================================================================+
693 |                                                                       |
694 | Public Procedure                                                      |
695 |                                                                       |
696 | get_trx_acct_def_info                                                 |
697 |                                                                       |
698 | Get name and owner for the transaction account definition             |
699 |                                                                       |
700 +======================================================================*/
701 PROCEDURE  get_trx_acct_def_info
702   (p_application_id                  IN NUMBER
703   ,p_amb_context_code                IN VARCHAR2
704   ,p_account_definition_type_code    IN VARCHAR2
705   ,p_account_definition_code         IN VARCHAR2
706   ,p_application_name                IN OUT NOCOPY VARCHAR2
707   ,p_trx_acct_def                    IN OUT NOCOPY VARCHAR2
708   ,p_trx_acct_def_type               IN OUT NOCOPY VARCHAR2)
709 
710 IS
711 
712     --
713     -- Cursor declarations
714     --
715     CURSOR c_prod_rule
716     IS
717     SELECT a.application_name, p.name, l.meaning trx_acct_def_type
718       FROM xla_tab_acct_defs_vl p, fnd_application_vl a, xla_lookups l
719      WHERE p.application_id                = p_application_id
720        AND p.amb_context_code              = p_amb_context_code
721        AND p.account_definition_type_code  = p_account_definition_type_code
722        AND p.account_definition_code       = p_account_definition_code
723        AND a.application_id                = p_application_id
724        AND l.lookup_code                   = p_account_definition_type_code
725        AND l.lookup_type                   = 'XLA_OWNER_TYPE';
726 
727 BEGIN
728 
729 xla_utility_pkg.trace('> xla_validations_pkg.get_trx_acct_def_info'          , 10);
730 
731 xla_utility_pkg.trace('Application_id         = '||p_application_id     , 20);
732 xla_utility_pkg.trace('account_definition_type_code   = '||p_account_definition_type_code    , 20);
733 xla_utility_pkg.trace('account_definition_code   = '||p_account_definition_code     , 20);
734 
735    OPEN c_prod_rule;
736    FETCH c_prod_rule
737     INTO p_application_name, p_trx_acct_def, p_trx_acct_def_type;
738    CLOSE c_prod_rule;
739 
740 xla_utility_pkg.trace('< xla_validations_pkg.get_trx_acct_def_info'           , 10);
741 
742 EXCEPTION
743 WHEN xla_exceptions_pkg.application_exception THEN
744    RAISE;
745 WHEN OTHERS THEN
746    xla_exceptions_pkg.raise_message
747       (p_location   => 'xla_validations_pkg.get_trx_acct_def_info');
748 
749 END get_trx_acct_def_info;
750 
751 /*======================================================================+
752 |                                                                       |
753 | Public Procedure                                                      |
754 |                                                                       |
755 | get_trx_acct_type_info                                                |
756 |                                                                       |
757 | Get name for the transaction account type                             |
758 |                                                                       |
759 +======================================================================*/
760 PROCEDURE  get_trx_acct_type_info
761   (p_application_id                  IN  NUMBER
762   ,p_account_type_code               IN VARCHAR2
763   ,p_trx_acct_type                   IN OUT NOCOPY VARCHAR2)
764 
765 IS
766 
767     --
768     -- Cursor declarations
769     --
770     CURSOR c_type
771     IS
772     SELECT name
773       FROM xla_tab_acct_types_vl
774      WHERE application_id             = p_application_id
775        AND account_type_code          = p_account_type_code;
776 
777 BEGIN
778 xla_utility_pkg.trace('> xla_validations_pkg.get_trx_acct_type_info'          , 10);
779 xla_utility_pkg.trace('Application_id  =  '||p_application_id     , 20);
780 xla_utility_pkg.trace('account_type_code     = '||p_account_type_code     , 20);
781 
782    OPEN c_type;
783    FETCH c_type
784     INTO p_trx_acct_type;
785    CLOSE c_type;
786 
787 xla_utility_pkg.trace('< xla_validations_pkg.get_trx_acct_type_info'       , 10);
788 
789 EXCEPTION
790 WHEN xla_exceptions_pkg.application_exception THEN
791    RAISE;
792 WHEN OTHERS                                   THEN
793    xla_exceptions_pkg.raise_message
794       (p_location   => 'xla_validations_pkg.get_trx_acct_type_info');
795 
796 END get_trx_acct_type_info;
797 
798 /*======================================================================+
799 |                                                                       |
800 | Public Function                                                       |
801 |                                                                       |
802 | table_name_is_valid                                                   |
803 |                                                                       |
804 | Checks whether the table name is valid                                |
805 |                                                                       |
806 +======================================================================*/
807 FUNCTION  table_name_is_valid
808   (p_table_name                  IN  VARCHAR2)
809 RETURN BOOLEAN
810 
811 IS
812 
813     --
814     -- Variable declarations
815     --
816 
817     l_exist      varchar2(1) := null;
818     l_return     BOOLEAN     := TRUE;
819 
820    CURSOR c_user_objects
821    IS
822    SELECT 'x'
823      FROM user_objects o
824     WHERE o.object_name = p_table_name;
825 
826 BEGIN
827 xla_utility_pkg.trace('> xla_validations_pkg.table_name_is_valid'          , 10);
828 
829 xla_utility_pkg.trace('Table Name               = '||p_table_name     , 20);
830 
831      OPEN c_user_objects;
832      FETCH c_user_objects
833       INTO l_exist;
834      IF c_user_objects%found THEN
835         l_return := TRUE;
836      ELSE
837         l_return := FALSE;
838      END IF;
839      CLOSE c_user_objects;
840 
841 xla_utility_pkg.trace('< xla_validations_pkg.table_name_is_valid'           , 10);
842 
843 RETURN l_return;
844 
845 EXCEPTION
846 WHEN xla_exceptions_pkg.application_exception THEN
847    RAISE;
848 WHEN OTHERS                                   THEN
849    xla_exceptions_pkg.raise_message
850       (p_location   => 'xla_validations_pkg.table_name_is_valid');
851 END table_name_is_valid;
852 
853 /*======================================================================+
854 |                                                                       |
855 | Public Procedure                                                      |
856 |                                                                       |
857 | reference_is_valid                                                    |
858 |                                                                       |
859 | Check if reference object is not used by other transaction            |
860 | objects within the same event class.                                  |
861 +======================================================================*/
862 FUNCTION reference_is_valid
863   (p_table_name                     IN  VARCHAR2
864   ,p_event_class_code               IN  VARCHAR2)
865 RETURN BOOLEAN
866 
867 IS
868 
869     --
870     -- variable declarations
871     --
872 
873      l_exist   varchar2(1) := null;
874      l_return       BOOLEAN     := TRUE;
875 
876 
877    CURSOR c_reference_objects
878    IS
879    SELECT 'x'
880      FROM xla_reference_objects_f_v
881     WHERE event_class_code        = p_event_class_code
882       AND reference_object_name   = p_table_name;
883 
884 BEGIN
885 
886      OPEN c_reference_objects;
887      FETCH c_reference_objects
888       INTO l_exist;
889      IF c_reference_objects%found THEN
890         l_return := FALSE;
891      ELSE
892         l_return := TRUE;
893      END IF;
894      CLOSE c_reference_objects;
895 
896 RETURN l_return;
897 
898 EXCEPTION
899 
900 WHEN xla_exceptions_pkg.application_exception THEN
901    RAISE;
902 WHEN OTHERS                                   THEN
903    xla_exceptions_pkg.raise_message
904       (p_location   => 'xla_validations_pkg.reference_is_valid');
905 END reference_is_valid;
906 
907 /*======================================================================+
908 |                                                                       |
909 | Public Procedure                                                      |
910 |                                                                       |
911 | join_condition_is_valid                                               |
912 |                                                                       |
913 | Check if join condition is valid                                      |
914 |                                                                       |
915 +======================================================================*/
916 FUNCTION  join_condition_is_valid
917   (p_trx_object_name    IN  VARCHAR2
918   ,p_ref_object_name    IN  VARCHAR2
919   ,p_join_condition     IN  VARCHAR2
920   ,p_error_message      OUT NOCOPY VARCHAR2)
921 RETURN BOOLEAN IS
922 
923   l_sql        VARCHAR2(2000);
924   l_dummy      PLS_INTEGER;
925   l_return     BOOLEAN;
926 
927 BEGIN
928 
929 xla_utility_pkg.trace('> xla_validations_pkg.join_condition_is_valid'          , 10);
930 
931    BEGIN
932 
933       l_sql := 'SELECT 1 FROM '
934             || p_trx_object_name
935             || ','
936             || p_ref_object_name
937             || ' WHERE '
938             || p_join_condition
939             || ' AND 1 = 2';
940 
941       EXECUTE IMMEDIATE l_sql INTO l_dummy;
942 
943       xla_utility_pkg.trace('SQL               = '||l_sql   , 20);
944 
945    EXCEPTION
946    WHEN no_data_found THEN
947       l_return := TRUE;
948    WHEN OTHERS THEN
949       l_return        := FALSE;
950       p_error_message := SQLERRM;
951    END;
952 
953 xla_utility_pkg.trace('< xla_validations_pkg.join_condition_is_valid'           , 10);
954 
955    RETURN l_return;
956 
957 EXCEPTION
958 WHEN xla_exceptions_pkg.application_exception THEN
959    RAISE;
960 WHEN OTHERS                                   THEN
961    xla_exceptions_pkg.raise_message
962       (p_location   => 'xla_validations_pkg.join_condition_is_valid');
963 
964 END join_condition_is_valid;
965 
966 END xla_validations_pkg;