[Home] [Help]
PACKAGE BODY: APPS.XLA_DESCRIPTIONS_PKG
Source
1 PACKAGE BODY xla_descriptions_pkg AS
2 /* $Header: xlaamdad.pkb 120.20 2005/04/28 18:42:32 masada ship $ */
3 /*======================================================================+
4 | Copyright (c) 1995-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +=======================================================================+
8 | PACKAGE NAME |
9 | xla_descriptions_pkg |
10 | |
11 | DESCRIPTION |
12 | XLA Descriptions Package |
13 | |
14 | HISTORY |
15 | 01-May-01 Dimple Shah Created |
16 | |
17 +======================================================================*/
18
19 TYPE t_array_codes IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
20 TYPE t_array_type_codes IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
21
22 --=============================================================================
23 -- *********** Local Trace Routine **********
24 --=============================================================================
25 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
26 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
27 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
28 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
29 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
30 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
31
32 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
33 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_descriptions_pkg';
34
35 g_log_level NUMBER;
36 g_log_enabled BOOLEAN;
37
38 PROCEDURE trace
39 (p_msg IN VARCHAR2
40 ,p_module IN VARCHAR2
41 ,p_level IN NUMBER) IS
42 BEGIN
43 ----------------------------------------------------------------------------
44 -- Following is for FND log.
45 ----------------------------------------------------------------------------
46 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
47 fnd_log.message(p_level, p_module);
48 ELSIF p_level >= g_log_level THEN
49 fnd_log.string(p_level, p_module, p_msg);
50 END IF;
51
52 EXCEPTION
53 WHEN xla_exceptions_pkg.application_exception THEN
54 RAISE;
55
56 WHEN OTHERS THEN
57 xla_exceptions_pkg.raise_message
61
58 (p_location => 'xla_descriptions_pkg.trace');
59 END trace;
60
62 /*======================================================================+
63 | |
64 | Public Procedure |
65 | |
66 | delete_description_details |
67 | |
68 | Deletes all details of the description |
69 | |
70 +======================================================================*/
71
72 PROCEDURE delete_description_details
73 (p_application_id IN NUMBER
74 ,p_amb_context_code IN VARCHAR2
75 ,p_description_type_code IN VARCHAR2
76 ,p_description_code IN VARCHAR2)
77 IS
78
79 l_description_prio_id NUMBER(38);
80
81 CURSOR c_description_priorities
82 IS
83 SELECT description_prio_id
84 FROM xla_desc_priorities
85 WHERE application_id = p_application_id
86 AND amb_context_code = p_amb_context_code
87 AND description_type_code = p_description_type_code
88 AND description_code = p_description_code;
89
90 l_log_module VARCHAR2(240);
91 BEGIN
92 IF g_log_enabled THEN
93 l_log_module := C_DEFAULT_MODULE||'.delete_description_details';
94 END IF;
95
96 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97 trace(p_msg => 'BEGIN of procedure delete_description_details'
98 ,p_module => l_log_module
99 ,p_level => C_LEVEL_PROCEDURE);
100 END IF;
101
102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103 trace(p_msg => 'application_id = '||p_application_id||
104 ',amb_context_code = '||p_amb_context_code||
105 ',description_type_code = '||p_description_type_code||
106 ',description_code = '||p_description_code
107 ,p_module => l_log_module
108 ,p_level => C_LEVEL_STATEMENT);
109 END IF;
110
111 OPEN c_description_priorities;
112 LOOP
113 FETCH c_description_priorities
114 INTO l_description_prio_id;
115 EXIT WHEN c_description_priorities%notfound;
116
117 xla_conditions_pkg.delete_condition
118 (p_context => 'D'
119 ,p_description_prio_id => l_description_prio_id);
120
121 xla_descript_details_pkg.delete_desc_prio_details
122 (p_description_prio_id => l_description_prio_id);
123
124 END LOOP;
125 CLOSE c_description_priorities;
126
127 DELETE
128 FROM xla_desc_priorities
129 WHERE application_id = p_application_id
130 AND amb_context_code = p_amb_context_code
131 AND description_type_code = p_description_type_code
132 AND description_code = p_description_code;
133
134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135 trace(p_msg => 'END of procedure delete_description_details'
136 ,p_module => l_log_module
137 ,p_level => C_LEVEL_PROCEDURE);
138 END IF;
139
140
141 EXCEPTION
142 WHEN xla_exceptions_pkg.application_exception THEN
143 IF c_description_priorities%ISOPEN THEN
144 CLOSE c_description_priorities;
145 END IF;
146
147 RAISE;
148 WHEN OTHERS THEN
149 IF c_description_priorities%ISOPEN THEN
150 CLOSE c_description_priorities;
151 END IF;
152
153 xla_exceptions_pkg.raise_message
154 (p_location => 'xla_descriptions_pkg.delete_description_details');
155
156 END delete_description_details;
157
158 /*======================================================================+
159 | |
160 | Public Procedure |
161 | |
162 | copy_description_details |
163 | |
164 | Copies details of a description into a new description |
165 | |
166 +======================================================================*/
167
168 PROCEDURE copy_description_details
169 (p_application_id IN NUMBER
170 ,p_amb_context_code IN VARCHAR2
171 ,p_old_description_type_code IN VARCHAR2
172 ,p_old_description_code IN VARCHAR2
173 ,p_new_description_type_code IN VARCHAR2
174 ,p_new_description_code IN VARCHAR2
175 ,p_old_transaction_coa_id IN NUMBER
176 ,p_new_transaction_coa_id IN NUMBER)
177
178 IS
179
180 l_row_id ROWID;
181 l_condition_id integer;
182 l_new_description_prio_id integer;
183 l_description_detail_id integer;
184 l_creation_date DATE;
185 l_last_update_date DATE;
186 l_created_by INTEGER;
187 l_last_update_login INTEGER;
188 l_last_updated_by INTEGER;
189 l_flexfield_segment_code VARCHAR2(30);
190 l_flexfield_segment_name VARCHAR2(80);
194 l_inp_id_flex_code VARCHAR2(30);
191 l_con_flexfield_segment_code VARCHAR2(30);
192 l_con_v_flexfield_segment_code VARCHAR2(30);
193 l_inp_flex_appl_id NUMBER(15);
195 l_source_flex_appl_id NUMBER(15);
196 l_source_id_flex_code VARCHAR2(30);
197 l_value_source_flex_appl_id NUMBER(15);
198 l_value_source_id_flex_code VARCHAR2(30);
199
200 CURSOR c_description_priorities
201 IS
202 SELECT description_prio_id, user_sequence
203 FROM xla_desc_priorities
204 WHERE application_id = p_application_id
205 AND amb_context_code = p_amb_context_code
206 AND description_type_code = p_old_description_type_code
207 AND description_code = p_old_description_code;
208
209 l_description_priority c_description_priorities%rowtype;
210
211 CURSOR c_description_details
212 IS
213 SELECT user_sequence, value_type_code, literal, source_application_id,
214 source_type_code, source_code, flexfield_segment_code, display_description_flag
215 FROM xla_descript_details_vl
216 WHERE description_prio_id = l_description_priority.description_prio_id;
217
218 l_description_detail c_description_details%rowtype;
219
220 CURSOR c_det_source
221 IS
222 SELECT flexfield_application_id, id_flex_code
223 FROM xla_sources_b
224 WHERE application_id = l_description_detail.source_application_id
225 AND source_type_code = l_description_detail.source_type_code
226 AND source_code = l_description_detail.source_code;
227
228 CURSOR c_detail_conditions
229 IS
230 SELECT user_sequence, bracket_left_code, bracket_right_code, value_type_code,
231 source_application_id, source_type_code, source_code,
232 flexfield_segment_code, value_flexfield_segment_code,
233 value_source_application_id, value_source_type_code,
234 value_source_code, value_constant, line_operator_code,
235 logical_operator_code, independent_value_constant
236 FROM xla_conditions
237 WHERE description_prio_id = l_description_priority.description_prio_id;
238
239 l_detail_condition c_detail_conditions%rowtype;
240
241 CURSOR c_source
242 IS
243 SELECT flexfield_application_id, id_flex_code
244 FROM xla_sources_b
245 WHERE application_id = l_detail_condition.source_application_id
246 AND source_type_code = l_detail_condition.source_type_code
247 AND source_code = l_detail_condition.source_code;
248
249 CURSOR c_value_source
250 IS
251 SELECT flexfield_application_id, id_flex_code
252 FROM xla_sources_b
253 WHERE application_id = l_detail_condition.value_source_application_id
254 AND source_type_code = l_detail_condition.value_source_type_code
255 AND source_code = l_detail_condition.value_source_code;
256
257 l_log_module VARCHAR2(240);
258 BEGIN
259 IF g_log_enabled THEN
260 l_log_module := C_DEFAULT_MODULE||'.copy_description_details';
261 END IF;
262
263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
264 trace(p_msg => 'BEGIN of procedure copy_description_details'
265 ,p_module => l_log_module
266 ,p_level => C_LEVEL_PROCEDURE);
267 END IF;
268
269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
270 trace(p_msg => 'application_id = '||p_application_id||
271 ',amb_context_code = '||p_amb_context_code||
272 ',old_description_type_code = '||p_old_description_type_code||
273 ',old_description_code = '||p_old_description_code||
274 ',new_description_type_code = '||p_new_description_type_code||
275 ',new_description_code = '||p_new_description_code
276 ,p_module => l_log_module
277 ,p_level => C_LEVEL_STATEMENT);
278 END IF;
279
280 l_creation_date := sysdate;
281 l_last_update_date := sysdate;
282 l_created_by := xla_environment_pkg.g_usr_id;
283 l_last_update_login := xla_environment_pkg.g_login_id;
284 l_last_updated_by := xla_environment_pkg.g_usr_id;
285
286 OPEN c_description_priorities;
287 LOOP
288 FETCH c_description_priorities
289 INTO l_description_priority;
290 EXIT WHEN c_description_priorities%notfound;
291
292 SELECT xla_desc_priorities_s.nextval
293 INTO l_new_description_prio_id
294 FROM DUAL;
295
296 INSERT INTO xla_desc_priorities
297 (description_prio_id
298 ,application_id
299 ,amb_context_code
300 ,description_type_code
301 ,description_code
302 ,user_sequence
303 ,creation_date
304 ,created_by
305 ,last_update_date
306 ,last_updated_by
307 ,last_update_login)
308 VALUES
309 (l_new_description_prio_id
310 ,p_application_id
311 ,p_amb_context_code
312 ,p_new_description_type_code
313 ,p_new_description_code
314 ,l_description_priority.user_sequence
315 ,l_creation_date
316 ,l_created_by
317 ,l_last_update_date
318 ,l_last_updated_by
319 ,l_last_update_login);
320
321 OPEN c_description_details;
322 LOOP
323 FETCH c_description_details
324 INTO l_description_detail;
325 EXIT WHEN c_description_details%notfound;
326
330 INTO l_inp_flex_appl_id, l_inp_id_flex_code;
327 IF l_description_detail.flexfield_segment_code is not null THEN
328 OPEN c_det_source;
329 FETCH c_det_source
331 CLOSE c_det_source;
332
333 IF l_inp_flex_appl_id = 101 and l_inp_id_flex_code = 'GL#' THEN
334
335 IF p_new_transaction_coa_id is not null and p_old_transaction_coa_id is null THEN
336 l_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
337 (p_application_id => 101
338 ,p_id_flex_code => 'GL#'
339 ,p_id_flex_num => p_new_transaction_coa_id
340 ,p_qualifier_segment => l_description_detail.flexfield_segment_code);
341
342 ELSE
343 l_flexfield_segment_code := l_description_detail.flexfield_segment_code;
344 END IF;
345 ELSE
346 -- Other key flexfield segment
347 l_flexfield_segment_code := l_description_detail.flexfield_segment_code;
348 END IF;
349 ELSE
350 -- value_flexfield_segment_code is null
351 l_flexfield_segment_code := l_description_detail.flexfield_segment_code;
352 END IF;
353
354
355 SELECT xla_descript_details_s.nextval
356 INTO l_description_detail_id
357 FROM DUAL;
358
359 xla_descript_details_f_pkg.insert_row
360 (x_rowid => l_row_id
361 ,x_description_detail_id => l_description_detail_id
362 ,x_description_prio_id => l_new_description_prio_id
363 ,x_amb_context_code => p_amb_context_code
364 ,x_user_sequence => l_description_detail.user_sequence
365 ,x_value_type_code => l_description_detail.value_type_code
366 ,x_source_application_id => l_description_detail.source_application_id
367 ,x_source_type_code => l_description_detail.source_type_code
368 ,x_source_code => l_description_detail.source_code
369 ,x_flexfield_segment_code => l_flexfield_segment_code
370 ,x_literal => l_description_detail.literal
371 ,x_display_description_flag => l_description_detail.display_description_flag
372 ,x_creation_date => l_creation_date
373 ,x_created_by => l_created_by
374 ,x_last_update_date => l_last_update_date
375 ,x_last_updated_by => l_last_updated_by
376 ,x_last_update_login => l_last_update_login);
377
378 END LOOP;
379 CLOSE c_description_details;
380
381 OPEN c_detail_conditions;
382 LOOP
383 FETCH c_detail_conditions
384 INTO l_detail_condition;
385 EXIT WHEN c_detail_conditions%notfound;
386
387 IF l_detail_condition.flexfield_segment_code is not null THEN
388
389 OPEN c_source;
390 FETCH c_source
391 INTO l_source_flex_appl_id, l_source_id_flex_code;
392 CLOSE c_source;
393
394 IF l_source_flex_appl_id = 101 and l_source_id_flex_code = 'GL#' THEN
395
396 IF p_new_transaction_coa_id is not null and p_old_transaction_coa_id is null THEN
397 l_con_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
398 (p_application_id => 101
399 ,p_id_flex_code => 'GL#'
400 ,p_id_flex_num => p_new_transaction_coa_id
401 ,p_qualifier_segment => l_detail_condition.flexfield_segment_code);
402
403 ELSE
404 l_con_flexfield_segment_code := l_detail_condition.flexfield_segment_code;
405 END IF;
406
407 ELSE
408 -- Other key flexfield segment
409 l_con_flexfield_segment_code := l_detail_condition.flexfield_segment_code;
410 END IF;
411 ELSE
412 l_con_flexfield_segment_code := l_detail_condition.flexfield_segment_code;
413 END IF;
414
415 -- check value_flexfield_segment_code
416 IF l_detail_condition.value_flexfield_segment_code is not null THEN
417
418 OPEN c_value_source;
419 FETCH c_value_source
420 INTO l_value_source_flex_appl_id, l_value_source_id_flex_code;
421 CLOSE c_value_source;
422
423 IF l_value_source_flex_appl_id = 101 and l_value_source_id_flex_code = 'GL#' THEN
424
425 IF p_new_transaction_coa_id is not null and p_old_transaction_coa_id is null THEN
426 l_con_v_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
427 (p_application_id => 101
428 ,p_id_flex_code => 'GL#'
429 ,p_id_flex_num => p_new_transaction_coa_id
430 ,p_qualifier_segment => l_detail_condition.value_flexfield_segment_code);
431
432 ELSE
433 l_con_v_flexfield_segment_code := l_detail_condition.value_flexfield_segment_code;
434 END IF;
435
436 ELSE
437 -- Other key flexfield segment
441 l_con_v_flexfield_segment_code := l_detail_condition.value_flexfield_segment_code;
438 l_con_v_flexfield_segment_code := l_detail_condition.value_flexfield_segment_code;
439 END IF;
440 ELSE
442 END IF;
443
444 SELECT xla_conditions_s.nextval
445 INTO l_condition_id
446 FROM DUAL;
447
448 INSERT INTO xla_conditions
449 (condition_id
450 ,user_sequence
451 ,application_id
452 ,amb_context_code
453 ,description_prio_id
454 ,bracket_left_code
455 ,bracket_right_code
456 ,value_type_code
457 ,source_application_id
458 ,source_type_code
459 ,source_code
460 ,flexfield_segment_code
461 ,value_flexfield_segment_code
462 ,value_source_application_id
463 ,value_source_type_code
464 ,value_source_code
465 ,value_constant
466 ,line_operator_code
467 ,logical_operator_code
468 ,creation_date
469 ,created_by
470 ,last_update_date
471 ,last_updated_by
472 ,last_update_login
473 ,independent_value_constant)
474 VALUES
475 (l_condition_id
476 ,l_detail_condition.user_sequence
477 ,p_application_id
478 ,p_amb_context_code
479 ,l_new_description_prio_id
480 ,l_detail_condition.bracket_left_code
481 ,l_detail_condition.bracket_right_code
482 ,l_detail_condition.value_type_code
483 ,l_detail_condition.source_application_id
484 ,l_detail_condition.source_type_code
485 ,l_detail_condition.source_code
486 ,l_con_flexfield_segment_code
487 ,l_con_v_flexfield_segment_code
488 ,l_detail_condition.value_source_application_id
489 ,l_detail_condition.value_source_type_code
490 ,l_detail_condition.value_source_code
491 ,l_detail_condition.value_constant
492 ,l_detail_condition.line_operator_code
493 ,l_detail_condition.logical_operator_code
494 ,l_creation_date
495 ,l_created_by
496 ,l_last_update_date
497 ,l_last_updated_by
498 ,l_last_update_login
499 ,l_detail_condition.independent_value_constant);
500
501 END LOOP;
502 CLOSE c_detail_conditions;
503
504 END LOOP;
505 CLOSE c_description_priorities;
506
507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
508 trace(p_msg => 'END of procedure copy_description_details'
509 ,p_module => l_log_module
510 ,p_level => C_LEVEL_PROCEDURE);
511 END IF;
512
513
514 EXCEPTION
515 WHEN xla_exceptions_pkg.application_exception THEN
516 IF c_detail_conditions%ISOPEN THEN
517 CLOSE c_detail_conditions;
518 END IF;
519 IF c_description_details%ISOPEN THEN
520 CLOSE c_description_details;
521 END IF;
522 IF c_description_priorities%ISOPEN THEN
523 CLOSE c_description_priorities;
524 END IF;
525 RAISE;
526 WHEN OTHERS THEN
527 IF c_detail_conditions%ISOPEN THEN
528 CLOSE c_detail_conditions;
529 END IF;
530 IF c_description_details%ISOPEN THEN
531 CLOSE c_description_details;
532 END IF;
533 IF c_description_priorities%ISOPEN THEN
534 CLOSE c_description_priorities;
535 END IF;
536 xla_exceptions_pkg.raise_message
537 (p_location => 'xla_descriptions_pkg.copy_description_details');
538
539 END copy_description_details;
540
541 /*======================================================================+
542 | |
543 | Public Function |
544 | |
545 | rule_in_use |
546 | |
547 | Returns true if the rule is in use by an accounting line type |
548 | |
549 +======================================================================*/
550
551 FUNCTION rule_in_use
552 (p_event IN VARCHAR2
553 ,p_application_id IN NUMBER
554 ,p_amb_context_code IN VARCHAR2
555 ,p_description_type_code IN VARCHAR2
556 ,p_description_code IN VARCHAR2
557 ,x_product_rule_name IN OUT NOCOPY VARCHAR2
558 ,x_product_rule_type IN OUT NOCOPY VARCHAR2
559 ,x_event_class_name IN OUT NOCOPY VARCHAR2
560 ,x_line_definition_name IN OUT NOCOPY VARCHAR2
561 ,x_line_definition_owner IN OUT NOCOPY VARCHAR2)
562 RETURN BOOLEAN
563 IS
564
565 l_return BOOLEAN;
566 l_exist VARCHAR2(1);
567
568 l_application_name varchar2(80);
569 l_product_rule_name varchar2(80);
570 l_product_rule_type varchar2(80);
571 l_event_class_name varchar2(80);
572 l_line_definition_owner varchar2(80);
573 l_line_definition_name varchar2(80);
574
575 CURSOR c_header_assign_exist
576 IS
580 WHERE application_id = p_application_id
577 SELECT application_id, amb_context_code, product_rule_type_code, product_rule_code,
578 entity_code, event_class_code
579 FROM xla_prod_acct_headers
581 AND amb_context_code = p_amb_context_code
582 AND description_type_code = p_description_type_code
583 AND description_code = p_description_code;
584
585 l_header_assign_exist c_header_assign_exist%rowtype;
586
587 CURSOR c_line_assign_exist
588 IS
589 SELECT line_definition_owner_code, line_definition_code,
590 event_class_code, event_type_code
591 FROM xla_line_defn_jlt_assgns
592 WHERE application_id = p_application_id
593 AND amb_context_code = p_amb_context_code
594 AND description_type_code = p_description_type_code
595 AND description_code = p_description_code;
596
597 l_line_assign_exist c_line_assign_exist%rowtype;
598
599 CURSOR c_active_assign_exist
600 IS
601 SELECT line_definition_owner_code, line_definition_code,
602 event_class_code, event_type_code
603 FROM xla_line_defn_jlt_assgns
604 WHERE application_id = p_application_id
605 AND amb_context_code = p_amb_context_code
606 AND description_type_code = p_description_type_code
607 AND description_code = p_description_code
608 AND active_flag = 'Y';
609
610 l_active_assign_exist c_active_assign_exist%rowtype;
611
612 l_log_module VARCHAR2(240);
613 BEGIN
614 IF g_log_enabled THEN
615 l_log_module := C_DEFAULT_MODULE||'.rule_in_use';
616 END IF;
617
618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
619 trace(p_msg => 'BEGIN of procedure rule_in_use'
620 ,p_module => l_log_module
621 ,p_level => C_LEVEL_PROCEDURE);
622 END IF;
623
624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
625 trace(p_msg => 'event = '||p_event||
626 ',application_id = '||p_application_id||
627 ',amb_context_code = '||p_amb_context_code||
628 ',description_type_code = '||p_description_type_code||
629 ',description_code = '||p_description_code
630 ,p_module => l_log_module
631 ,p_level => C_LEVEL_STATEMENT);
632 END IF;
633
634 l_application_name := null;
635 l_product_rule_name := null;
636 l_product_rule_type := null;
637 l_event_class_name := null;
638 l_line_definition_owner := null;
639 l_line_definition_name := null;
640
641 IF p_event in ('DELETE','UPDATE') THEN
642 OPEN c_header_assign_exist;
643 FETCH c_header_assign_exist
644 INTO l_header_assign_exist;
645 IF c_header_assign_exist%found then
646 l_return := TRUE;
647
648 xla_validations_pkg.get_product_rule_info
649 (p_application_id => l_header_assign_exist.application_id
650 ,p_amb_context_code => l_header_assign_exist.amb_context_code
651 ,p_product_rule_type_code => l_header_assign_exist.product_rule_type_code
652 ,p_product_rule_code => l_header_assign_exist.product_rule_code
653 ,p_application_name => l_application_name
654 ,p_product_rule_name => l_product_rule_name
655 ,p_product_rule_type => l_product_rule_type);
656
657 xla_validations_pkg.get_event_class_info
658 (p_application_id => l_header_assign_exist.application_id
659 ,p_entity_code => l_header_assign_exist.entity_code
660 ,p_event_class_code => l_header_assign_exist.event_class_code
661 ,p_event_class_name => l_event_class_name);
662
663 ELSE
664 l_return := FALSE;
665 END IF;
666 CLOSE c_header_assign_exist;
667
668 IF l_return = FALSE THEN
669 OPEN c_line_assign_exist;
670 FETCH c_line_assign_exist
671 INTO l_line_assign_exist;
672 IF c_line_assign_exist%found then
673 l_return := TRUE;
674
675 xla_line_definitions_pvt.get_line_definition_info
676 (p_application_id => p_application_id
677 ,p_amb_context_code => p_amb_context_code
678 ,p_event_class_code => l_line_assign_exist.event_class_code
679 ,p_event_type_code => l_line_assign_exist.event_type_code
680 ,p_line_definition_owner_code => l_line_assign_exist.line_definition_owner_code
681 ,p_line_definition_code => l_line_assign_exist.line_definition_code
682 ,x_line_definition_name => l_line_definition_name
683 ,x_line_definition_owner => l_line_definition_owner);
684
685 ELSE
686 l_return := FALSE;
687 END IF;
688 CLOSE c_line_assign_exist;
689 END IF;
690
691 ELSIF p_event = 'DISABLE' THEN
692 OPEN c_header_assign_exist;
693 FETCH c_header_assign_exist
694 INTO l_header_assign_exist;
695 IF c_header_assign_exist%found then
696 l_return := TRUE;
697
698 xla_validations_pkg.get_product_rule_info
699 (p_application_id => l_header_assign_exist.application_id
700 ,p_amb_context_code => l_header_assign_exist.amb_context_code
701 ,p_product_rule_type_code => l_header_assign_exist.product_rule_type_code
702 ,p_product_rule_code => l_header_assign_exist.product_rule_code
703 ,p_application_name => l_application_name
707 xla_validations_pkg.get_event_class_info
704 ,p_product_rule_name => l_product_rule_name
705 ,p_product_rule_type => l_product_rule_type);
706
708 (p_application_id => l_header_assign_exist.application_id
709 ,p_entity_code => l_header_assign_exist.entity_code
710 ,p_event_class_code => l_header_assign_exist.event_class_code
711 ,p_event_class_name => l_event_class_name);
712
713 ELSE
714 l_return := FALSE;
715 END IF;
716 CLOSE c_header_assign_exist;
717
718 IF l_return = FALSE THEN
719 OPEN c_active_assign_exist;
720 FETCH c_active_assign_exist
721 INTO l_active_assign_exist;
722 IF c_active_assign_exist%found then
723 l_return := TRUE;
724
725 xla_line_definitions_pvt.get_line_definition_info
726 (p_application_id => p_application_id
727 ,p_amb_context_code => p_amb_context_code
728 ,p_event_class_code => l_active_assign_exist.event_class_code
729 ,p_event_type_code => l_active_assign_exist.event_type_code
730 ,p_line_definition_owner_code => l_active_assign_exist.line_definition_owner_code
731 ,p_line_definition_code => l_active_assign_exist.line_definition_code
732 ,x_line_definition_name => l_line_definition_name
733 ,x_line_definition_owner => l_line_definition_owner);
734
735 ELSE
736 l_return := FALSE;
737 END IF;
738 CLOSE c_active_assign_exist;
739 END IF;
740
741 ELSE
742 xla_exceptions_pkg.raise_message
743 ('XLA' ,'XLA_COMMON_ERROR'
744 ,'ERROR' ,'Invalid event passed'
745 ,'LOCATION' ,'xla_descriptions_pkg.rule_in_use');
746
747 END IF;
748
749 x_product_rule_name := l_product_rule_name;
750 x_product_rule_type := l_product_rule_type;
751 x_event_class_name := l_event_class_name;
752 x_line_definition_owner := l_line_definition_owner;
753 x_line_definition_name := l_line_definition_name;
754
755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
756 trace(p_msg => 'END of procedure rule_in_use'
757 ,p_module => l_log_module
758 ,p_level => C_LEVEL_PROCEDURE);
759 END IF;
760
761
762 return l_return;
763
764 EXCEPTION
765 WHEN xla_exceptions_pkg.application_exception THEN
766 IF c_header_assign_exist%ISOPEN THEN
767 CLOSE c_header_assign_exist;
768 END IF;
769 IF c_line_assign_exist%ISOPEN THEN
770 CLOSE c_line_assign_exist;
771 END IF;
772 IF c_active_assign_exist%ISOPEN THEN
773 CLOSE c_active_assign_exist;
774 END IF;
775
776 RAISE;
777 WHEN OTHERS THEN
778 IF c_header_assign_exist%ISOPEN THEN
779 CLOSE c_header_assign_exist;
780 END IF;
781 IF c_line_assign_exist%ISOPEN THEN
782 CLOSE c_line_assign_exist;
783 END IF;
784 IF c_active_assign_exist%ISOPEN THEN
785 CLOSE c_active_assign_exist;
786 END IF;
787
788 xla_exceptions_pkg.raise_message
789 (p_location => 'xla_descriptions_pkg.rule_in_use');
790
791 END rule_in_use;
792
793 /*======================================================================+
794 | |
795 | Public Function |
796 | |
797 | rule_is_invalid |
798 | |
799 | Returns true if the rule is invalid |
800 | |
801 +======================================================================*/
802
803 FUNCTION rule_is_invalid
804 (p_application_id IN NUMBER
805 ,p_amb_context_code IN VARCHAR2
806 ,p_description_type_code IN VARCHAR2
807 ,p_description_code IN VARCHAR2
808 ,p_message_name OUT NOCOPY VARCHAR2)
809 RETURN BOOLEAN
810 IS
811
812 l_application_id NUMBER(38);
813 l_amb_context_code VARCHAR2(30);
814 l_description_type_code VARCHAR2(1);
815 l_description_code VARCHAR2(30);
816 l_return BOOLEAN;
817 l_exist VARCHAR2(1);
818 l_message_name VARCHAR2(30);
819
820 l_log_module VARCHAR2(240);
821 BEGIN
822 IF g_log_enabled THEN
823 l_log_module := C_DEFAULT_MODULE||'.rule_is_invalid';
824 END IF;
825
826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
827 trace(p_msg => 'BEGIN of procedure rule_is_invalid'
828 ,p_module => l_log_module
829 ,p_level => C_LEVEL_PROCEDURE);
830 END IF;
831
832 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
833 trace(p_msg => 'application_id = '||p_application_id||
834 ',amb_context_code = '||p_amb_context_code||
835 ',description_type_code = '||p_description_type_code||
836 ',description_code = '||p_description_code
837 ,p_module => l_log_module
838 ,p_level => C_LEVEL_STATEMENT);
839 END IF;
840
844 l_description_code := p_description_code;
841 l_application_id := p_application_id;
842 l_amb_context_code := p_amb_context_code;
843 l_description_type_code := p_description_type_code;
845
846 IF xla_conditions_pkg.desc_condition_is_invalid
847 (p_application_id => l_application_id
848 ,p_amb_context_code => l_amb_context_code
849 ,p_description_type_code => l_description_type_code
850 ,p_description_code => l_description_code
851 ,p_message_name => l_message_name)
852 THEN
853 p_message_name := l_message_name;
854 l_return := TRUE;
855 ELSE
856 p_message_name := NULL;
857 l_return := FALSE;
858 END IF;
859
860 xla_utility_pkg.trace('p_message_name = '||p_message_name , 20);
861 xla_utility_pkg.trace('< xla_descriptions_pkg.rule_is_invalid' , 10);
862
863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
864 trace(p_msg => 'END of procedure rule_is_invalid'
865 ,p_module => l_log_module
866 ,p_level => C_LEVEL_PROCEDURE);
867 END IF;
868
869 RETURN l_return;
870
871 EXCEPTION
872 WHEN xla_exceptions_pkg.application_exception THEN
873 RAISE;
874
875 WHEN OTHERS THEN
876 xla_exceptions_pkg.raise_message
877 (p_location => 'xla_descriptions_pkg.rule_is_invalid');
878
879 END rule_is_invalid;
880
881 /*======================================================================+
882 | |
883 | Public Function |
884 | |
885 | description_is_locked |
886 | |
887 | Returns true if the description is locked |
888 | |
889 +======================================================================*/
890
891 FUNCTION description_is_locked
892 (p_application_id IN NUMBER
893 ,p_amb_context_code IN VARCHAR2
894 ,p_description_type_code IN VARCHAR2
895 ,p_description_code IN VARCHAR2)
896 RETURN BOOLEAN
897 IS
898
899 l_return BOOLEAN;
900 l_exist VARCHAR2(1);
901
902 CURSOR c_frozen_header_assign_exist
903 IS
904 SELECT 'x'
905 FROM xla_prod_acct_headers h
906 WHERE application_id = p_application_id
907 AND amb_context_code = p_amb_context_code
908 AND description_type_code = p_description_type_code
909 AND description_code = p_description_code
910 AND locking_status_flag = 'Y';
911
912 CURSOR c_frozen_line_assign_exist
913 IS
914 SELECT 'x'
915 FROM xla_line_defn_jlt_assgns xjl
916 ,xla_aad_line_defn_assgns xal
917 ,xla_prod_acct_headers xpa
918 WHERE xpa.application_id = xal.application_id
919 AND xpa.amb_context_code = xal.amb_context_code
920 AND xpa.product_rule_type_code = xal.product_rule_type_code
921 AND xpa.product_rule_code = xal.product_rule_code
922 AND xpa.event_class_code = xal.event_class_code
923 AND xpa.event_type_code = xal.event_type_code
924 AND xpa.locking_status_flag = 'Y'
925 AND xal.application_id = xjl.application_id
926 AND xal.amb_context_code = xjl.amb_context_code
927 AND xal.event_class_code = xjl.event_class_code
928 AND xal.event_type_code = xjl.event_type_code
929 AND xal.line_definition_owner_code = xjl.line_definition_owner_code
930 AND xal.line_definition_code = xjl.line_definition_code
931 AND xjl.application_id = p_application_id
932 AND xjl.amb_context_code = p_amb_context_code
933 AND xjl.description_type_code = p_description_type_code
934 AND xjl.description_code = p_description_code;
935
936 l_log_module VARCHAR2(240);
937 BEGIN
938 IF g_log_enabled THEN
939 l_log_module := C_DEFAULT_MODULE||'.description_is_locked';
940 END IF;
941
942 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
943 trace(p_msg => 'BEGIN of procedure description_is_locked'
944 ,p_module => l_log_module
945 ,p_level => C_LEVEL_PROCEDURE);
946 END IF;
947
948 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
949 trace(p_msg => 'application_id = '||p_application_id||
950 ',amb_context_code = '||p_amb_context_code||
951 ',description_type_code = '||p_description_type_code||
952 ',description_code = '||p_description_code
953 ,p_module => l_log_module
954 ,p_level => C_LEVEL_STATEMENT);
955 END IF;
956
957 OPEN c_frozen_header_assign_exist;
958 FETCH c_frozen_header_assign_exist
959 INTO l_exist;
960 IF c_frozen_header_assign_exist%found then
961 l_return := TRUE;
962 ELSE
963 l_return := FALSE;
964 END IF;
965 CLOSE c_frozen_header_assign_exist;
966
967 IF l_return = FALSE THEN
968 OPEN c_frozen_line_assign_exist;
969 FETCH c_frozen_line_assign_exist
970 INTO l_exist;
971 IF c_frozen_line_assign_exist%found then
972 l_return := TRUE;
976 CLOSE c_frozen_line_assign_exist;
973 ELSE
974 l_return := FALSE;
975 END IF;
977 END IF;
978
979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
980 trace(p_msg => 'END of procedure description_is_locked'
981 ,p_module => l_log_module
982 ,p_level => C_LEVEL_PROCEDURE);
983 END IF;
984
985 return l_return;
986
987 EXCEPTION
988 WHEN xla_exceptions_pkg.application_exception THEN
989 IF c_frozen_header_assign_exist%ISOPEN THEN
990 CLOSE c_frozen_header_assign_exist;
991 END IF;
992 IF c_frozen_line_assign_exist%ISOPEN THEN
993 CLOSE c_frozen_line_assign_exist;
994 END IF;
995
996 RAISE;
997 WHEN OTHERS THEN
998 IF c_frozen_header_assign_exist%ISOPEN THEN
999 CLOSE c_frozen_header_assign_exist;
1000 END IF;
1001 IF c_frozen_line_assign_exist%ISOPEN THEN
1002 CLOSE c_frozen_line_assign_exist;
1003 END IF;
1004
1005 xla_exceptions_pkg.raise_message
1006 (p_location => 'xla_descriptions_pkg.description_is_locked');
1007
1008 END description_is_locked;
1009
1010 /*======================================================================+
1011 | |
1012 | Public Function |
1013 | |
1014 | uncompile_definitions |
1015 | |
1016 | Returns true if the application accounting definition and journal |
1017 | line definitions using the description are uncompiled |
1018 | |
1019 +======================================================================*/
1020
1021 FUNCTION uncompile_definitions
1022 (p_application_id IN NUMBER
1023 ,p_amb_context_code IN VARCHAR2
1024 ,p_description_type_code IN VARCHAR2
1025 ,p_description_code IN VARCHAR2
1026 ,x_product_rule_name IN OUT NOCOPY VARCHAR2
1027 ,x_product_rule_type IN OUT NOCOPY VARCHAR2
1028 ,x_event_class_name IN OUT NOCOPY VARCHAR2
1029 ,x_event_type_name IN OUT NOCOPY VARCHAR2
1030 ,x_locking_status_flag IN OUT NOCOPY VARCHAR2)
1031 RETURN BOOLEAN
1032 IS
1033
1034 l_return BOOLEAN := TRUE;
1035 l_exist VARCHAR2(1);
1036
1037 l_application_name varchar2(240);
1038 l_product_rule_name varchar2(80);
1039 l_product_rule_type varchar2(80);
1040 l_event_class_name varchar2(80);
1041 l_event_type_name varchar2(80);
1042
1043 l_locked_entity_code VARCHAR2(30);
1044 l_locked_event_class_code VARCHAR2(30);
1045 l_locked_event_type_code VARCHAR2(30);
1046 l_locked_aad_type_code VARCHAR2(30);
1047 l_locked_aad_code VARCHAR2(30);
1048 l_locking_status_flag VARCHAR2(1);
1049
1050 CURSOR c_lock_line_aads IS
1051 SELECT xpa.entity_code
1052 , xpa.event_class_code
1053 , xpa.event_type_code
1054 , xpa.product_rule_type_code
1055 , xpa.product_rule_code
1056 , xpa.locking_status_flag
1057 , xpa.validation_status_code
1058 FROM xla_line_defn_jlt_assgns xjl
1059 ,xla_aad_line_defn_assgns xal
1060 ,xla_prod_acct_headers xpa
1061 WHERE xpa.application_id = xal.application_id
1062 AND xpa.amb_context_code = xal.amb_context_code
1063 AND xpa.product_rule_type_code = xal.product_rule_type_code
1064 AND xpa.product_rule_code = xal.product_rule_code
1065 AND xpa.event_class_code = xal.event_class_code
1066 AND xpa.event_type_code = xal.event_type_code
1067 AND xal.application_id = xjl.application_id
1068 AND xal.amb_context_code = xjl.amb_context_code
1069 AND xal.event_class_code = xjl.event_class_code
1070 AND xal.event_type_code = xjl.event_type_code
1071 AND xal.line_definition_owner_code = xjl.line_definition_owner_code
1072 AND xal.line_definition_code = xjl.line_definition_code
1073 AND xjl.application_id = p_application_id
1074 AND xjl.amb_context_code = p_amb_context_code
1075 AND xjl.description_type_code = p_description_type_code
1076 AND xjl.description_code = p_description_code
1077 FOR UPDATE NOWAIT;
1078
1079 CURSOR c_lock_header_aads IS
1080 SELECT xpa.entity_code
1081 , xpa.event_class_code
1082 , xpa.event_type_code
1083 , xpa.product_rule_type_code
1084 , xpa.product_rule_code
1085 , xpa.locking_status_flag
1086 , xpa.validation_status_code
1087 FROM xla_prod_acct_headers xpa
1088 WHERE xpa.application_id = p_application_id
1089 AND xpa.amb_context_code = p_amb_context_code
1090 AND xpa.description_type_code = p_description_type_code
1091 AND xpa.description_code = p_description_code
1092 FOR UPDATE NOWAIT;
1093
1094 CURSOR c_update_aads IS
1095 SELECT xpa.event_class_code
1096 , xpa.product_rule_type_code
1097 , xpa.product_rule_code
1098 FROM xla_prod_acct_headers xpa
1099 WHERE xpa.application_id = p_application_id
1100 AND xpa.amb_context_code = p_amb_context_code
1104 SELECT xpa.event_class_code
1101 AND xpa.description_type_code = p_description_type_code
1102 AND xpa.description_code = p_description_code
1103 UNION
1105 , xpa.product_rule_type_code
1106 , xpa.product_rule_code
1107 FROM xla_prod_acct_headers xpa
1108 ,xla_aad_line_defn_assgns xal
1109 ,xla_line_defn_jlt_assgns xjl
1110 WHERE xpa.application_id = xal.application_id
1111 AND xpa.amb_context_code = xal.amb_context_code
1112 AND xpa.product_rule_type_code = xal.product_rule_type_code
1113 AND xpa.product_rule_code = xal.product_rule_code
1114 AND xpa.event_class_code = xal.event_class_code
1115 AND xpa.event_type_code = xal.event_type_code
1116 AND xal.application_id = xjl.application_id
1117 AND xal.amb_context_code = xjl.amb_context_code
1118 AND xal.event_class_code = xjl.event_class_code
1119 AND xal.event_type_code = xjl.event_type_code
1120 AND xal.line_definition_owner_code = xjl.line_definition_owner_code
1121 AND xal.line_definition_code = xjl.line_definition_code
1122 AND xjl.application_id = p_application_id
1123 AND xjl.amb_context_code = p_amb_context_code
1124 AND xjl.description_type_code = p_description_type_code
1125 AND xjl.description_code = p_description_code;
1126
1127 l_event_class_codes t_array_codes;
1128 l_product_rule_type_codes t_array_type_codes;
1129 l_product_rule_codes t_array_codes;
1130
1131 l_log_module VARCHAR2(240);
1132 BEGIN
1133 IF g_log_enabled THEN
1134 l_log_module := C_DEFAULT_MODULE||'.uncompile_definitions';
1135 END IF;
1136
1137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1138 trace(p_msg => 'BEGIN of procedure uncompile_definitions'
1139 ,p_module => l_log_module
1140 ,p_level => C_LEVEL_PROCEDURE);
1141 END IF;
1142
1143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1144 trace(p_msg => 'application_id = '||p_application_id||
1145 ',amb_context_code = '||p_amb_context_code||
1146 ',description_type_code = '||p_description_type_code||
1147 ',description_code = '||p_description_code
1148 ,p_module => l_log_module
1149 ,p_level => C_LEVEL_STATEMENT);
1150 END IF;
1151
1152 l_application_name := null;
1153 l_product_rule_name := null;
1154 l_product_rule_type := null;
1155 l_event_class_name := null;
1156 l_event_type_name := null;
1157 l_locking_status_flag := null;
1158
1159 l_return := TRUE;
1160
1161 FOR l_lock_aad IN c_lock_header_aads LOOP
1162 IF (l_lock_aad.validation_status_code NOT IN ('E', 'Y', 'N') OR
1163 l_lock_aad.locking_status_flag = 'Y') THEN
1164
1165 l_locked_entity_code := l_lock_aad.entity_code;
1166 l_locked_event_class_code := l_lock_aad.event_class_code;
1167 l_locked_event_type_code := l_lock_aad.event_type_code;
1168 l_locked_aad_type_code := l_lock_aad.product_rule_type_code;
1169 l_locked_aad_code := l_lock_aad.product_rule_code;
1170 l_locking_status_flag := l_lock_aad.locking_status_flag;
1171
1172 l_return := FALSE;
1173 EXIT;
1174 END IF;
1175 END LOOP;
1176
1177 IF (l_return) THEN
1178 FOR l_lock_aad IN c_lock_line_aads LOOP
1179 IF (l_lock_aad.validation_status_code NOT IN ('E', 'Y', 'N') OR
1180 l_lock_aad.locking_status_flag = 'Y') THEN
1181
1182 l_locked_entity_code := l_lock_aad.entity_code;
1183 l_locked_event_class_code := l_lock_aad.event_class_code;
1184 l_locked_event_type_code := l_lock_aad.event_type_code;
1185 l_locked_aad_type_code := l_lock_aad.product_rule_type_code;
1186 l_locked_aad_code := l_lock_aad.product_rule_code;
1187 l_locking_status_flag := l_lock_aad.locking_status_flag;
1188
1189 l_return := FALSE;
1190 EXIT;
1191 END IF;
1192 END LOOP;
1193 END IF;
1194
1195 IF (NOT l_return) THEN
1196
1197 xla_validations_pkg.get_product_rule_info
1198 (p_application_id => p_application_id
1199 ,p_amb_context_code => p_amb_context_code
1200 ,p_product_rule_type_code => l_locked_aad_type_code
1201 ,p_product_rule_code => l_locked_aad_code
1202 ,p_application_name => l_application_name
1203 ,p_product_rule_name => l_product_rule_name
1204 ,p_product_rule_type => l_product_rule_type);
1205
1206 xla_validations_pkg.get_event_class_info
1207 (p_application_id => p_application_id
1208 ,p_entity_code => l_locked_entity_code
1209 ,p_event_class_code => l_locked_event_class_code
1210 ,p_event_class_name => l_event_class_name);
1211
1212 xla_validations_pkg.get_event_type_info
1213 (p_application_id => p_application_id
1214 ,p_entity_code => l_locked_entity_code
1215 ,p_event_class_code => l_locked_event_class_code
1216 ,p_event_type_code => l_locked_event_type_code
1217 ,p_event_type_name => l_event_type_name);
1218
1219 ELSE
1220 UPDATE xla_line_definitions_b xld
1221 SET validation_status_code = 'N'
1222 , last_update_date = sysdate
1226 AND xld.amb_context_code = p_amb_context_code
1223 , last_updated_by = xla_environment_pkg.g_usr_id
1224 , last_update_login = xla_environment_pkg.g_login_id
1225 WHERE xld.application_id = p_application_id
1227 AND xld.validation_status_code <> 'N'
1228 AND EXISTS
1229 (SELECT 1
1230 FROM xla_line_defn_jlt_assgns xjl
1231 WHERE xjl.application_id = p_application_id
1232 AND xjl.amb_context_code = p_amb_context_code
1233 AND xjl.description_type_code = p_description_type_code
1234 AND xjl.description_code = p_description_code
1235 AND xjl.event_class_code = xld.event_class_code
1236 AND xjl.event_type_code = xld.event_type_code
1237 AND xjl.line_definition_owner_code = xld.line_definition_owner_code
1238 AND xjl.line_definition_code = xld.line_definition_code);
1239
1240 OPEN c_update_aads;
1241 FETCH c_update_aads BULK COLLECT INTO l_event_class_codes
1242 ,l_product_rule_type_codes
1243 ,l_product_rule_codes;
1244 CLOSE c_update_aads;
1245
1246 IF (C_LEVEL_EVENT >= g_log_level) THEN
1247 trace(p_msg => 'l_event_class_codes.count = '||l_event_class_codes.count,
1248 p_module => l_log_module,
1249 p_level => C_LEVEL_EVENT);
1250 END IF;
1251
1252 IF (l_event_class_codes.count > 0) THEN
1253
1254 FORALL i IN 1..l_event_class_codes.LAST
1255 UPDATE xla_product_rules_b
1256 SET compile_status_code = 'N'
1257 , updated_flag = 'Y'
1258 , last_update_date = sysdate
1259 , last_updated_by = xla_environment_pkg.g_usr_id
1260 , last_update_login = xla_environment_pkg.g_login_id
1261 WHERE application_id = p_application_id
1262 AND amb_context_code = p_amb_context_code
1263 AND product_rule_type_code = l_product_rule_type_codes(i)
1264 AND product_rule_code = l_product_rule_codes(i)
1265 AND (compile_status_code <> 'N' OR
1266 updated_flag <> 'Y');
1267
1268 FORALL i IN 1..l_event_class_codes.LAST
1269 UPDATE xla_prod_acct_headers
1270 SET validation_status_code = 'N'
1271 , last_update_date = sysdate
1272 , last_updated_by = xla_environment_pkg.g_usr_id
1273 , last_update_login = xla_environment_pkg.g_login_id
1274 WHERE application_id = p_application_id
1275 AND amb_context_code = p_amb_context_code
1276 AND event_class_code = l_event_class_codes(i)
1277 AND product_rule_type_code = l_product_rule_type_codes(i)
1278 AND product_rule_code = l_product_rule_codes(i)
1279 AND validation_status_code <> 'N';
1280
1281 END IF;
1282
1283 UPDATE xla_appli_amb_contexts
1284 SET updated_flag = 'Y'
1285 , last_update_date = sysdate
1286 , last_updated_by = xla_environment_pkg.g_usr_id
1287 , last_update_login = xla_environment_pkg.g_login_id
1288 WHERE application_id = p_application_id
1289 AND amb_context_code = p_amb_context_code
1290 AND updated_flag <> 'Y';
1291
1292 END IF;
1293
1294 x_product_rule_name := l_product_rule_name;
1295 x_product_rule_type := l_product_rule_type;
1296 x_event_class_name := l_event_class_name;
1297 x_event_type_name := l_event_type_name;
1298 x_locking_status_flag := l_locking_status_flag;
1299
1300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1301 trace(p_msg => 'END of procedure uncompile_definitions'
1302 ,p_module => l_log_module
1303 ,p_level => C_LEVEL_PROCEDURE);
1304 END IF;
1305
1306 return l_return;
1307
1308 EXCEPTION
1309 WHEN xla_exceptions_pkg.application_exception THEN
1310 IF c_update_aads%ISOPEN THEN
1311 CLOSE c_update_aads;
1312 END IF;
1313 IF c_lock_line_aads%ISOPEN THEN
1314 CLOSE c_lock_line_aads;
1315 END IF;
1316 IF c_lock_header_aads%ISOPEN THEN
1317 CLOSE c_lock_header_aads;
1318 END IF;
1319
1320 RAISE;
1321 WHEN OTHERS THEN
1322 IF c_update_aads%ISOPEN THEN
1323 CLOSE c_update_aads;
1324 END IF;
1325 IF c_lock_line_aads%ISOPEN THEN
1326 CLOSE c_lock_line_aads;
1327 END IF;
1328 IF c_lock_header_aads%ISOPEN THEN
1329 CLOSE c_lock_header_aads;
1330 END IF;
1331
1332 xla_exceptions_pkg.raise_message
1333 (p_location => 'xla_descriptions_pkg.uncompile_definitions');
1334
1335 END uncompile_definitions;
1336
1337 /*======================================================================+
1338 | |
1339 | Public Function |
1340 | |
1341 | check_copy_description_details |
1342 | |
1343 | Checks if description can be copied |
1344 | |
1348 (p_application_id IN NUMBER
1345 +======================================================================*/
1346
1347 FUNCTION check_copy_description_details
1349 ,p_amb_context_code IN VARCHAR2
1350 ,p_old_description_type_code IN VARCHAR2
1351 ,p_old_description_code IN VARCHAR2
1352 ,p_old_transaction_coa_id IN NUMBER
1353 ,p_new_transaction_coa_id IN NUMBER
1354 ,p_message IN OUT NOCOPY VARCHAR2
1355 ,p_token_1 IN OUT NOCOPY VARCHAR2
1356 ,p_value_1 IN OUT NOCOPY VARCHAR2)
1357 RETURN BOOLEAN
1358
1359 IS
1360
1361 l_row_id ROWID;
1362 l_condition_id integer;
1363 l_new_description_prio_id integer;
1364 l_description_detail_id integer;
1365 l_flexfield_segment_code VARCHAR2(30);
1366 l_flexfield_segment_name VARCHAR2(80);
1367 l_con_flexfield_segment_code VARCHAR2(30);
1368 l_con_v_flexfield_segment_code VARCHAR2(30);
1369 l_con_flexfield_segment_name VARCHAR2(80);
1370 l_con_v_flexfield_segment_name VARCHAR2(80);
1371 l_inp_flex_appl_id NUMBER(15);
1372 l_inp_id_flex_code VARCHAR2(30);
1373 l_source_flex_appl_id NUMBER(15);
1374 l_source_id_flex_code VARCHAR2(30);
1375 l_value_source_flex_appl_id NUMBER(15);
1376 l_value_source_id_flex_code VARCHAR2(30);
1377 l_return BOOLEAN := TRUE;
1378
1379 CURSOR c_description_priorities
1380 IS
1381 SELECT description_prio_id, user_sequence
1382 FROM xla_desc_priorities
1383 WHERE application_id = p_application_id
1384 AND amb_context_code = p_amb_context_code
1385 AND description_type_code = p_old_description_type_code
1386 AND description_code = p_old_description_code;
1387
1388 l_description_priority c_description_priorities%rowtype;
1389
1390 CURSOR c_description_details
1391 IS
1392 SELECT user_sequence, value_type_code, literal, source_application_id,
1393 source_type_code, source_code, flexfield_segment_code, display_description_flag
1394 FROM xla_descript_details_vl
1395 WHERE description_prio_id = l_description_priority.description_prio_id;
1396
1397 l_description_detail c_description_details%rowtype;
1398
1399 CURSOR c_det_source
1400 IS
1401 SELECT flexfield_application_id, id_flex_code
1402 FROM xla_sources_b
1403 WHERE application_id = l_description_detail.source_application_id
1404 AND source_type_code = l_description_detail.source_type_code
1405 AND source_code = l_description_detail.source_code;
1406
1407 CURSOR c_detail_conditions
1408 IS
1409 SELECT user_sequence, bracket_left_code, bracket_right_code, value_type_code,
1410 source_application_id, source_type_code, source_code,
1411 flexfield_segment_code, value_flexfield_segment_code,
1412 value_source_application_id, value_source_type_code,
1413 value_source_code, value_constant, line_operator_code,
1414 logical_operator_code, independent_value_constant
1415 FROM xla_conditions
1416 WHERE description_prio_id = l_description_priority.description_prio_id;
1417
1418 l_detail_condition c_detail_conditions%rowtype;
1419
1420 CURSOR c_source
1421 IS
1422 SELECT flexfield_application_id, id_flex_code
1423 FROM xla_sources_b
1424 WHERE application_id = l_detail_condition.source_application_id
1425 AND source_type_code = l_detail_condition.source_type_code
1426 AND source_code = l_detail_condition.source_code;
1427
1428 CURSOR c_value_source
1429 IS
1430 SELECT flexfield_application_id, id_flex_code
1431 FROM xla_sources_b
1432 WHERE application_id = l_detail_condition.value_source_application_id
1433 AND source_type_code = l_detail_condition.value_source_type_code
1434 AND source_code = l_detail_condition.value_source_code;
1435
1436 l_log_module VARCHAR2(240);
1437 BEGIN
1438 IF g_log_enabled THEN
1439 l_log_module := C_DEFAULT_MODULE||'.check_copy_description_details';
1440 END IF;
1441
1442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1443 trace(p_msg => 'BEGIN of procedure check_copy_description_details'
1444 ,p_module => l_log_module
1445 ,p_level => C_LEVEL_PROCEDURE);
1446 END IF;
1447
1448 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1449 trace(p_msg => 'application_id = '||p_application_id||
1450 ',amb_context_code = '||p_amb_context_code||
1451 ',old_description_type_code = '||p_old_description_type_code||
1452 ',old_description_code = '||p_old_description_code
1453 ,p_module => l_log_module
1454 ,p_level => C_LEVEL_STATEMENT);
1455 END IF;
1456
1457 OPEN c_description_priorities;
1458 LOOP
1459 FETCH c_description_priorities
1460 INTO l_description_priority;
1461 EXIT WHEN c_description_priorities%notfound or l_return = FALSE;
1462
1463 OPEN c_description_details;
1464 LOOP
1465 FETCH c_description_details
1466 INTO l_description_detail;
1467 EXIT WHEN c_description_details%notfound or l_return = FALSE;
1468
1469 IF l_description_detail.flexfield_segment_code is not null THEN
1470 OPEN c_det_source;
1471 FETCH c_det_source
1472 INTO l_inp_flex_appl_id, l_inp_id_flex_code;
1473 CLOSE c_det_source;
1474
1478 l_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
1475 IF l_inp_flex_appl_id = 101 and l_inp_id_flex_code = 'GL#' THEN
1476
1477 IF p_new_transaction_coa_id is not null and p_old_transaction_coa_id is null THEN
1479 (p_application_id => 101
1480 ,p_id_flex_code => 'GL#'
1481 ,p_id_flex_num => p_new_transaction_coa_id
1482 ,p_qualifier_segment => l_description_detail.flexfield_segment_code);
1483
1484 IF l_flexfield_segment_code is null THEN
1485 l_flexfield_segment_name := xla_flex_pkg.get_qualifier_name
1486 (p_application_id => 101
1487 ,p_id_flex_code => 'GL#'
1488 ,p_qualifier_segment => l_description_detail.flexfield_segment_code);
1489
1490 p_message := 'XLA_AB_TRX_COA_NO_QUAL';
1491 p_token_1 := 'QUALIFIER_NAME';
1492 p_value_1 := l_flexfield_segment_name;
1493 l_return := FALSE;
1494
1495 END IF;
1496 END IF;
1497 END IF;
1498 END IF;
1499 END LOOP;
1500 CLOSE c_description_details;
1501
1502 IF l_return = TRUE THEN
1503
1504 OPEN c_detail_conditions;
1505 LOOP
1506 FETCH c_detail_conditions
1507 INTO l_detail_condition;
1508 EXIT WHEN c_detail_conditions%notfound or l_return = FALSE ;
1509
1510 IF l_detail_condition.flexfield_segment_code is not null THEN
1511
1512 OPEN c_source;
1513 FETCH c_source
1514 INTO l_source_flex_appl_id, l_source_id_flex_code;
1515 CLOSE c_source;
1516
1517 IF l_source_flex_appl_id = 101 and l_source_id_flex_code = 'GL#' THEN
1518
1519 IF p_new_transaction_coa_id is not null and p_old_transaction_coa_id is null THEN
1520 l_con_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
1521 (p_application_id => 101
1522 ,p_id_flex_code => 'GL#'
1523 ,p_id_flex_num => p_new_transaction_coa_id
1524 ,p_qualifier_segment => l_detail_condition.flexfield_segment_code);
1525 IF l_con_flexfield_segment_code is null THEN
1526 l_con_flexfield_segment_name := xla_flex_pkg.get_qualifier_name
1527 (p_application_id => 101
1528 ,p_id_flex_code => 'GL#'
1529 ,p_qualifier_segment => l_detail_condition.flexfield_segment_code);
1530
1531 p_message := 'XLA_AB_TRX_COA_NO_QUAL';
1532 p_token_1 := 'QUALIFIER_NAME';
1533 p_value_1 := l_con_flexfield_segment_name;
1534 l_return := FALSE;
1535
1536 END IF;
1537 END IF;
1538 END IF;
1539 END IF;
1540
1541 -- check value_flexfield_segment_code
1542 IF l_return = TRUE THEN
1543 IF l_detail_condition.value_flexfield_segment_code is not null THEN
1544
1545 OPEN c_value_source;
1546 FETCH c_value_source
1547 INTO l_value_source_flex_appl_id, l_value_source_id_flex_code;
1548 CLOSE c_value_source;
1549
1550 IF l_value_source_flex_appl_id = 101 and l_value_source_id_flex_code = 'GL#' THEN
1551
1552 IF p_new_transaction_coa_id is not null and p_old_transaction_coa_id is null THEN
1553 l_con_v_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
1554 (p_application_id => 101
1555 ,p_id_flex_code => 'GL#'
1556 ,p_id_flex_num => p_new_transaction_coa_id
1557 ,p_qualifier_segment => l_detail_condition.value_flexfield_segment_code);
1558
1559 IF l_con_v_flexfield_segment_code is null THEN
1560 l_con_v_flexfield_segment_name := xla_flex_pkg.get_qualifier_name
1561 (p_application_id => 101
1562 ,p_id_flex_code => 'GL#'
1563 ,p_qualifier_segment => l_detail_condition.value_flexfield_segment_code);
1564
1565 p_message := 'XLA_AB_TRX_COA_NO_QUAL';
1566 p_token_1 := 'QUALIFIER_NAME';
1567 p_value_1 := l_con_v_flexfield_segment_name;
1568 l_return := FALSE;
1569
1570 END IF;
1571 END IF;
1572 END IF;
1573 END IF;
1574 END IF;
1575 END LOOP;
1576 CLOSE c_detail_conditions;
1577 END IF;
1578 END LOOP;
1579 CLOSE c_description_priorities;
1580
1581 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1582 trace(p_msg => 'END of procedure check_copy_description_details'
1583 ,p_module => l_log_module
1584 ,p_level => C_LEVEL_PROCEDURE);
1585 END IF;
1586
1587 RETURN l_return;
1588
1589 EXCEPTION
1593 END IF;
1590 WHEN xla_exceptions_pkg.application_exception THEN
1591 IF c_detail_conditions%ISOPEN THEN
1592 CLOSE c_detail_conditions;
1594 IF c_description_details%ISOPEN THEN
1595 CLOSE c_description_details;
1596 END IF;
1597 IF c_description_priorities%ISOPEN THEN
1598 CLOSE c_description_priorities;
1599 END IF;
1600 RAISE;
1601 WHEN OTHERS THEN
1602 IF c_detail_conditions%ISOPEN THEN
1603 CLOSE c_detail_conditions;
1604 END IF;
1605 IF c_description_details%ISOPEN THEN
1606 CLOSE c_description_details;
1607 END IF;
1608 IF c_description_priorities%ISOPEN THEN
1609 CLOSE c_description_priorities;
1610 END IF;
1611 xla_exceptions_pkg.raise_message
1612 (p_location => 'xla_descriptions_pkg.check_copy_description_details');
1613
1614 END check_copy_description_details;
1615
1616 --=============================================================================
1617 --
1618 -- Following code is executed when the package body is referenced for the first
1619 -- time
1620 --
1621 --=============================================================================
1622 BEGIN
1623 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1624 g_log_enabled := fnd_log.test
1625 (log_level => g_log_level
1626 ,module => C_DEFAULT_MODULE);
1627
1628 IF NOT g_log_enabled THEN
1629 g_log_level := C_LEVEL_LOG_DISABLED;
1630 END IF;
1631
1632
1633 END xla_descriptions_pkg;