[Home] [Help]
PACKAGE BODY: APPS.XLA_LINE_DEFINITIONS_PVT
Source
1 PACKAGE BODY xla_line_definitions_pvt AS
2 /* $Header: xlaamjld.pkb 120.37.12000000.3 2007/06/12 07:12:47 svellani ship $ */
3
4 -------------------------------------------------------------------------------
5 -- declaring global types
6 -------------------------------------------------------------------------------
7 TYPE t_array_codes IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
8 TYPE t_array_type_codes IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
9
10 --=============================================================================
11 -- *********** Local Trace Routine **********
12 --=============================================================================
13 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
14 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
15 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
16 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
18 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
19
20 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
21 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_line_definitions_pvt';
22
23 g_log_level NUMBER;
24 g_log_enabled BOOLEAN;
25
26 PROCEDURE trace
27 (p_msg IN VARCHAR2
28 ,p_module IN VARCHAR2
29 ,p_level IN NUMBER) IS
30 BEGIN
31 ----------------------------------------------------------------------------
32 -- Following is for FND log.
33 ----------------------------------------------------------------------------
34 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
35 fnd_log.message(p_level, p_module);
36 ELSIF p_level >= g_log_level THEN
37 fnd_log.string(p_level, p_module, p_msg);
38 END IF;
39
40 EXCEPTION
41 WHEN xla_exceptions_pkg.application_exception THEN
42 RAISE;
43
44 WHEN OTHERS THEN
45 xla_exceptions_pkg.raise_message
46 (p_location => 'xla_line_definitions_pvt.trace');
47 END trace;
48
49
50 --=============================================================================
51 --
52 --
53 --
54 --
55 -- *********** private procedures and functions **********
56 --
57 --
58 --
59 --
60 --=============================================================================
61
62
63 --=============================================================================
64 --
65 -- Name: invalid_line_ac
66 -- Description: Returns true if sources for the analytical criteria invalid
67 --
68 --=============================================================================
69 FUNCTION invalid_line_ac
70 (p_application_id IN NUMBER
71 ,p_amb_context_code IN VARCHAR2
72 ,p_entity_code IN VARCHAR2
73 ,p_event_class_code IN VARCHAR2
74 ,p_ac_type_code IN VARCHAR2
75 ,p_ac_code IN VARCHAR2)
76 RETURN BOOLEAN
77 IS
78 l_return BOOLEAN;
79 l_exist VARCHAR2(1);
80
81 CURSOR c_event_sources IS
82 SELECT 'x'
83 FROM xla_analytical_sources a
84 WHERE application_id = p_application_id
85 AND amb_context_code = p_amb_context_code
86 AND entity_code = p_entity_code
87 AND event_class_code = p_event_class_code
88 AND analytical_criterion_code = p_ac_code
89 AND analytical_criterion_type_code = p_ac_type_code;
90
91 CURSOR c_line_analytical IS
92 SELECT 'X'
93 FROM xla_analytical_sources a
94 WHERE application_id = p_application_id
95 AND amb_context_code = p_amb_context_code
96 AND entity_code = p_entity_code
97 AND event_class_code = p_event_class_code
98 AND analytical_criterion_code = p_ac_code
99 AND analytical_criterion_type_code = p_ac_type_code
100 AND source_type_code = 'S'
101 AND not exists (SELECT 'y'
102 FROM xla_event_sources s
103 WHERE s.source_application_id = a.source_application_id
104 AND s.source_type_code = a.source_type_code
105 AND s.source_code = a.source_code
106 AND s.application_id = p_application_id
107 AND s.entity_code = p_entity_code
108 AND s.event_class_code = p_event_class_code
109 AND s.active_flag = 'Y');
110
111 CURSOR c_analytical_der_sources IS
112 SELECT source_code, source_type_code
113 FROM xla_analytical_sources a
114 WHERE application_id = p_application_id
115 AND amb_context_code = p_amb_context_code
116 AND entity_code = p_entity_code
117 AND event_class_code = p_event_class_code
118 AND analytical_criterion_code = p_ac_code
119 AND analytical_criterion_type_code = p_ac_type_code
120 AND a.source_type_code = 'D';
121
122 l_log_module VARCHAR2(240);
123 BEGIN
124 IF g_log_enabled THEN
125 l_log_module := C_DEFAULT_MODULE||'.invalid_line_ac';
126 END IF;
127
128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129 trace(p_msg => 'BEGIN of procedure invalid_line_ac'
130 ,p_module => l_log_module
131 ,p_level => C_LEVEL_PROCEDURE);
132 END IF;
133
134 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135 trace(p_msg => 'application_id = '||p_application_id||
136 ',amb_context_code = '||p_amb_context_code||
137 ',entity_code = '||p_entity_code||
138 ',event_class_code = '||p_event_class_code||
139 ',analytical_criterion_type_code = '||p_ac_type_code||
140 ',analytical_criterion_code = '||p_ac_code
141 ,p_module => l_log_module
142 ,p_level => C_LEVEL_STATEMENT);
143 END IF;
144
145 OPEN c_event_sources;
146 FETCH c_event_sources INTO l_exist;
147 IF c_event_sources%found then
148 l_return := FALSE;
149 ELSE
150 l_return := TRUE;
151 END IF;
152 CLOSE c_event_sources;
153
154 IF l_return = FALSE THEN
155 OPEN c_line_analytical;
156 FETCH c_line_analytical INTO l_exist;
157 IF c_line_analytical%found then
158 l_return := TRUE;
159 ELSE
160 l_return := FALSE;
161 END IF;
162 CLOSE c_line_analytical;
163 END IF;
164
165 --
166 -- check analytical criteria has derived sources that do not belong to the event class
167 --
168 IF l_return = FALSE THEN
169 FOR l_source IN c_analytical_der_sources LOOP
170 EXIT WHEN l_return = TRUE;
171
172 IF xla_sources_pkg.derived_source_is_invalid
173 (p_application_id => p_application_id
174 ,p_derived_source_code => l_source.source_code
175 ,p_derived_source_type_code => 'D'
176 ,p_event_class_code => p_event_class_code
177 ,p_level => 'L') = 'TRUE' THEN
178
179 l_return := TRUE;
180 ELSE
181 l_return := FALSE;
182 END IF;
183 END LOOP;
184 END IF;
185
186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187 trace(p_msg => 'END of procedure invalid_line_ac'
188 ,p_module => l_log_module
189 ,p_level => C_LEVEL_PROCEDURE);
190 END IF;
191
192 RETURN l_return;
193
194 EXCEPTION
195 WHEN xla_exceptions_pkg.application_exception THEN
196 IF (c_event_sources%ISOPEN) THEN
197 CLOSE c_event_sources;
198 END IF;
199 IF (c_line_analytical%ISOPEN) THEN
200 CLOSE c_line_analytical;
201 END IF;
202 IF (c_analytical_der_sources%ISOPEN) THEN
203 CLOSE c_analytical_der_sources;
204 END IF;
205 RAISE;
206
207 WHEN OTHERS THEN
208 IF (c_event_sources%ISOPEN) THEN
209 CLOSE c_event_sources;
210 END IF;
211 IF (c_line_analytical%ISOPEN) THEN
212 CLOSE c_line_analytical;
213 END IF;
214 IF (c_analytical_der_sources%ISOPEN) THEN
215 CLOSE c_analytical_der_sources;
216 END IF;
217 xla_exceptions_pkg.raise_message
218 (p_location => 'xla_line_definitions_pvt.invalid_line_ac');
219
220 END invalid_line_ac;
221
222 --=============================================================================
223 --
224 -- Name: invalid_line_desc
225 -- Description: Returns true if sources for the line description are invalid
226 --
227 --=============================================================================
228 FUNCTION invalid_line_desc
229 (p_application_id IN NUMBER
230 ,p_amb_context_code IN VARCHAR2
231 ,p_entity_code IN VARCHAR2
232 ,p_event_class_code IN VARCHAR2
233 ,p_description_type_code IN VARCHAR2
234 ,p_description_code IN VARCHAR2)
235 RETURN BOOLEAN
236 IS
237 l_return BOOLEAN;
238 l_exist VARCHAR2(1);
239
240 CURSOR c_desc_detail_sources IS
241 SELECT 'X'
242 FROM xla_descript_details_b d, xla_desc_priorities p
243 WHERE d.description_prio_id = p.description_prio_id
244 AND p.application_id = p_application_id
245 AND p.amb_context_code = p_amb_context_code
246 AND p.description_type_code = p_description_type_code
247 AND p.description_code = p_description_code
248 AND d.source_code IS NOT NULL
249 AND d.source_type_code = 'S'
250 AND NOT EXISTS (SELECT 'y'
251 FROM xla_event_sources s
252 WHERE s.source_application_id = d.source_application_id
253 AND s.source_type_code = d.source_type_code
254 AND s.source_code = d.source_code
255 AND s.application_id = p_application_id
256 AND s.entity_code = p_entity_code
257 AND s.event_class_code = p_event_class_code
258 AND s.active_flag = 'Y');
259
260 CURSOR c_desc_condition_sources IS
261 SELECT 'X'
262 FROM xla_conditions c, xla_desc_priorities d
263 WHERE c.description_prio_id = d.description_prio_id
264 AND d.application_id = p_application_id
265 AND d.amb_context_code = p_amb_context_code
266 AND d.description_type_code = p_description_type_code
267 AND d.description_code = p_description_code
268 AND c.source_code IS NOT NULL
269 AND c.source_type_code = 'S'
270 AND NOT EXISTS (SELECT 'y'
271 FROM xla_event_sources s
272 WHERE s.source_application_id = c.source_application_id
273 AND s.source_type_code = c.source_type_code
274 AND s.source_code = c.source_code
275 AND s.application_id = p_application_id
276 AND s.entity_code = p_entity_code
277 AND s.event_class_code = p_event_class_code
278 AND s.active_flag = 'Y')
279 UNION
280 SELECT 'X' source_code
281 FROM xla_conditions c, xla_desc_priorities d
282 WHERE c.description_prio_id = d.description_prio_id
283 AND d.application_id = p_application_id
284 AND d.amb_context_code = p_amb_context_code
285 AND d.description_type_code = p_description_type_code
286 AND d.description_code = p_description_code
287 AND c.value_source_code IS NOT NULL
288 AND c.value_source_type_code = 'S'
289 AND NOT EXISTS (SELECT 'y'
290 FROM xla_event_sources s
291 WHERE s.source_application_id = c.value_source_application_id
292 AND s.source_type_code = c.value_source_type_code
293 AND s.source_code = c.value_source_code
294 AND s.application_id = p_application_id
295 AND s.entity_code = p_entity_code
296 AND s.event_class_code = p_event_class_code
297 AND s.active_flag = 'Y');
298
299 CURSOR c_desc_detail_der_sources IS
300 SELECT source_type_code, source_code
301 FROM xla_descript_details_b d, xla_desc_priorities p
302 WHERE d.description_prio_id = p.description_prio_id
303 AND p.application_id = p_application_id
304 AND p.amb_context_code = p_amb_context_code
305 AND p.description_type_code = p_description_type_code
306 AND p.description_code = p_description_code
307 AND d.source_code IS NOT NULL
308 AND d.source_type_code = 'D';
309
310 CURSOR c_desc_condition_der_sources IS
311 SELECT source_type_code source_type_code, source_code source_code
312 FROM xla_conditions c, xla_desc_priorities d
313 WHERE c.description_prio_id = d.description_prio_id
314 AND d.application_id = p_application_id
315 AND d.amb_context_code = p_amb_context_code
316 AND d.description_type_code = p_description_type_code
317 AND d.description_code = p_description_code
318 AND c.source_code IS NOT NULL
319 AND c.source_type_code = 'D'
320 UNION
321 SELECT value_source_type_code source_type_code, value_source_code source_code
322 FROM xla_conditions c, xla_desc_priorities d
323 WHERE c.description_prio_id = d.description_prio_id
324 AND d.application_id = p_application_id
325 AND d.amb_context_code = p_amb_context_code
326 AND d.description_type_code = p_description_type_code
327 AND d.description_code = p_description_code
328 AND c.value_source_code IS NOT NULL
329 AND c.value_source_type_code = 'D';
330
331 l_log_module VARCHAR2(240);
332 BEGIN
333 IF g_log_enabled THEN
334 l_log_module := C_DEFAULT_MODULE||'.invalid_line_desc';
335 END IF;
336
337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
338 trace(p_msg => 'BEGIN of procedure invalid_line_desc'
339 ,p_module => l_log_module
340 ,p_level => C_LEVEL_PROCEDURE);
341 END IF;
342
343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344 trace(p_msg => 'application_id = '||p_application_id||
345 ',amb_context_code = '||p_amb_context_code||
346 ',entity_code = '||p_entity_code||
347 ',event_class_code = '||p_event_class_code||
348 ',description_type_code = '||p_description_type_code||
349 ',description_code = '||p_description_code
350 ,p_module => l_log_module
351 ,p_level => C_LEVEL_STATEMENT);
352 END IF;
353
354 --
355 -- check description has sources that do not belong to the event class
356 --
357 OPEN c_desc_detail_sources;
358 FETCH c_desc_detail_sources INTO l_exist;
359 IF c_desc_detail_sources%found then
360 l_return := TRUE;
361 ELSE
362 l_return := FALSE;
363 END IF;
364 CLOSE c_desc_detail_sources;
365
366 IF l_return = FALSE THEN
367 OPEN c_desc_condition_sources;
368 FETCH c_desc_condition_sources INTO l_exist;
369 IF c_desc_condition_sources%found then
370 l_return := TRUE;
371 ELSE
372 l_return := FALSE;
373 END IF;
374 CLOSE c_desc_condition_sources;
375 END IF;
376
377 --
378 -- check description has derived sources that do not belong to the event class
379 --
380 IF l_return = FALSE THEN
381 FOR l_source IN c_desc_detail_der_sources LOOP
382 EXIT WHEN l_return = TRUE;
383
384 IF xla_sources_pkg.derived_source_is_invalid
385 (p_application_id => p_application_id
386 ,p_derived_source_code => l_source.source_code
387 ,p_derived_source_type_code => 'D'
388 ,p_event_class_code => p_event_class_code
389 ,p_level => 'L') = 'TRUE' THEN
390
391 l_return := TRUE;
392 ELSE
393 l_return := FALSE;
394 END IF;
395 END LOOP;
396 END IF;
397
398 IF l_return = FALSE THEN
399 FOR l_source IN c_desc_condition_der_sources LOOP
400 EXIT WHEN l_return = TRUE;
401
402 IF xla_sources_pkg.derived_source_is_invalid
403 (p_application_id => p_application_id
404 ,p_derived_source_code => l_source.source_code
405 ,p_derived_source_type_code => 'D'
406 ,p_event_class_code => p_event_class_code
407 ,p_level => 'L') = 'TRUE' THEN
408
409 l_return := TRUE;
410 ELSE
411 l_return := FALSE;
412 END IF;
413 END LOOP;
414 END IF;
415
416 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
417 trace(p_msg => 'END of procedure invalid_line_desc'
418 ,p_module => l_log_module
419 ,p_level => C_LEVEL_PROCEDURE);
420 END IF;
421
422 RETURN l_return;
423
424 EXCEPTION
425 WHEN xla_exceptions_pkg.application_exception THEN
426 IF c_desc_condition_sources%ISOPEN THEN
427 CLOSE c_desc_condition_sources;
428 END IF;
429 IF c_desc_detail_sources%ISOPEN THEN
430 CLOSE c_desc_detail_sources;
431 END IF;
432 IF c_desc_condition_der_sources%ISOPEN THEN
433 CLOSE c_desc_condition_der_sources;
434 END IF;
435 IF c_desc_detail_der_sources%ISOPEN THEN
436 CLOSE c_desc_detail_der_sources;
437 END IF;
438 RAISE;
439
440 WHEN OTHERS THEN
441 IF c_desc_condition_sources%ISOPEN THEN
442 CLOSE c_desc_condition_sources;
443 END IF;
444 IF c_desc_detail_sources%ISOPEN THEN
445 CLOSE c_desc_detail_sources;
446 END IF;
447 IF c_desc_condition_der_sources%ISOPEN THEN
448 CLOSE c_desc_condition_der_sources;
449 END IF;
450 IF c_desc_detail_der_sources%ISOPEN THEN
451 CLOSE c_desc_detail_der_sources;
452 END IF;
453
454 xla_exceptions_pkg.raise_message
455 (p_location => 'xla_line_definitions_pvt.invalid_line_desc');
456
457 END invalid_line_desc;
458
459 --=============================================================================
460 --
461 -- Name: invalid_seg_rule
462 -- Description: Returns true if sources for the segment rule are invalid
463 --
464 --=============================================================================
465 FUNCTION invalid_seg_rule
466 (p_application_id IN NUMBER
467 ,p_amb_context_code IN VARCHAR2
468 ,p_entity_code IN VARCHAR2
469 ,p_event_class_code IN VARCHAR2
470 ,p_segment_rule_appl_id IN NUMBER DEFAULT NULL
471 ,p_segment_rule_type_code IN VARCHAR2
472 ,p_segment_rule_code IN VARCHAR2)
473 RETURN BOOLEAN
474 IS
475 l_return BOOLEAN;
476 l_exist VARCHAR2(1);
477
478 CURSOR c_seg_details IS
479 SELECT 'x'
480 FROM xla_seg_rule_details d
481 WHERE application_id = NVL(p_segment_rule_appl_id
482 ,p_application_id)
483 AND amb_context_code = p_amb_context_code
484 AND segment_rule_type_code = p_segment_rule_type_code
485 AND segment_rule_code = p_segment_rule_code;
486
487 CURSOR c_seg_value_sources IS
488 SELECT 'x'
489 FROM xla_seg_rule_details d
490 WHERE application_id = NVL(p_segment_rule_appl_id
491 ,p_application_id)
492 AND amb_context_code = p_amb_context_code
493 AND segment_rule_type_code = p_segment_rule_type_code
494 AND segment_rule_code = p_segment_rule_code
495 AND value_source_code IS NOT NULL
496 AND value_source_type_code = 'S'
497 AND NOT EXISTS (SELECT 'y'
498 FROM xla_event_sources s
499 WHERE s.source_application_id = d.value_source_application_id
500 AND s.source_type_code = d.value_source_type_code
501 AND s.source_code = d.value_source_code
502 AND s.application_id = p_application_id
503 AND s.entity_code = p_entity_code
504 AND s.event_class_code = p_event_class_code
505 AND s.active_flag = 'Y')
506 UNION
507 SELECT 'x'
508 FROM xla_seg_rule_details d
509 WHERE application_id = NVL(p_segment_rule_appl_id
510 ,p_application_id)
511 AND amb_context_code = p_amb_context_code
512 AND segment_rule_type_code = p_segment_rule_type_code
513 AND segment_rule_code = p_segment_rule_code
514 AND input_source_code IS NOT NULL
515 AND input_source_type_code = 'S'
516 AND NOT EXISTS (SELECT 'y'
517 FROM xla_event_sources s
518 WHERE s.source_application_id = d.input_source_application_id
519 AND s.source_type_code = d.input_source_type_code
520 AND s.source_code = d.input_source_code
521 AND s.application_id = p_application_id
522 AND s.entity_code = p_entity_code
523 AND s.event_class_code = p_event_class_code
524 AND s.active_flag = 'Y');
525
526 CURSOR c_seg_condition_sources IS
527 SELECT 'x'
528 FROM xla_conditions c, xla_seg_rule_details d
529 WHERE c.segment_rule_detail_id = d.segment_rule_detail_id
530 AND d.application_id = NVL(p_segment_rule_appl_id
531 ,p_application_id)
532 AND d.amb_context_code = p_amb_context_code
533 AND d.segment_rule_type_code = p_segment_rule_type_code
534 AND d.segment_rule_code = p_segment_rule_code
535 AND c.source_code IS NOT NULL
536 AND c.source_type_code = 'S'
537 AND NOT EXISTS (SELECT 'y'
538 FROM xla_event_sources s
539 WHERE s.source_application_id = c.source_application_id
540 AND s.source_type_code = c.source_type_code
541 AND s.source_code = c.source_code
542 AND s.application_id = p_application_id
543 AND s.entity_code = p_entity_code
544 AND s.event_class_code = p_event_class_code
545 AND s.active_flag = 'Y')
546 UNION
547 SELECT 'x'
548 FROM xla_conditions c, xla_seg_rule_details d
549 WHERE c.segment_rule_detail_id = d.segment_rule_detail_id
550 AND d.application_id = NVL(p_segment_rule_appl_id
551 ,p_application_id)
552 AND d.amb_context_code = p_amb_context_code
553 AND d.segment_rule_type_code = p_segment_rule_type_code
554 AND d.segment_rule_code = p_segment_rule_code
555 AND c.value_source_code IS NOT NULL
556 AND c.value_source_type_code = 'S'
557 AND NOT EXISTS (SELECT 'y'
558 FROM xla_event_sources s
559 WHERE s.source_application_id = c.value_source_application_id
560 AND s.source_type_code = c.value_source_type_code
561 AND s.source_code = c.value_source_code
562 AND s.application_id = p_application_id
563 AND s.entity_code = p_entity_code
564 AND s.event_class_code = p_event_class_code
565 AND s.active_flag = 'Y');
566
567 CURSOR c_seg_value_der_sources IS
568 SELECT value_source_type_code source_type_code, value_source_code source_code
569 FROM xla_seg_rule_details d
570 WHERE application_id = NVL(p_segment_rule_appl_id,
571 p_application_id)
572 AND amb_context_code = p_amb_context_code
573 AND segment_rule_type_code = p_segment_rule_type_code
574 AND segment_rule_code = p_segment_rule_code
575 AND value_source_code IS NOT NULL
576 AND value_source_type_code = 'D'
577 UNION
578 SELECT input_source_type_code source_type_code, input_source_code source_code
579 FROM xla_seg_rule_details d
580 WHERE application_id = NVL(p_segment_rule_appl_id,
581 p_application_id)
582 AND amb_context_code = p_amb_context_code
583 AND segment_rule_type_code = p_segment_rule_type_code
584 AND segment_rule_code = p_segment_rule_code
585 AND input_source_code IS NOT NULL
586 AND input_source_type_code = 'D';
587
588 CURSOR c_seg_condition_der_sources IS
589 SELECT c.source_type_code source_type_code, c.source_code source_code
590 FROM xla_conditions c, xla_seg_rule_details d
591 WHERE c.segment_rule_detail_id = d.segment_rule_detail_id
592 AND d.application_id = NVL(p_segment_rule_appl_id
593 ,p_application_id)
594 AND d.amb_context_code = p_amb_context_code
595 AND d.segment_rule_type_code = p_segment_rule_type_code
596 AND d.segment_rule_code = p_segment_rule_code
597 AND c.source_code IS NOT NULL
598 AND c.source_type_code = 'D'
599 UNION
600 SELECT c.value_source_type_code source_type_code, c.value_source_code source_code
601 FROM xla_conditions c, xla_seg_rule_details d
602 WHERE c.segment_rule_detail_id = d.segment_rule_detail_id
603 AND d.application_id = NVL(p_segment_rule_appl_id
604 ,p_application_id)
605 AND d.amb_context_code = p_amb_context_code
606 AND d.segment_rule_type_code = p_segment_rule_type_code
607 AND d.segment_rule_code = p_segment_rule_code
608 AND c.value_source_code IS NOT NULL
609 AND c.value_source_type_code = 'D';
610
611 l_log_module VARCHAR2(240);
612 BEGIN
613 IF g_log_enabled THEN
614 l_log_module := C_DEFAULT_MODULE||'.invalid_seg_rule';
615 END IF;
616
617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
618 trace(p_msg => 'BEGIN of procedure invalid_seg_rule'
619 ,p_module => l_log_module
620 ,p_level => C_LEVEL_PROCEDURE);
621 END IF;
622
623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
624 trace(p_msg => 'application_id = '||p_application_id||
625 ',amb_context_code = '||p_amb_context_code||
626 ',entity_code = '||p_entity_code||
627 ',event_class_code = '||p_event_class_code||
628 ',segment_rule_appl_id = '||p_segment_rule_appl_id||
629 ',segment_rule_type_code = '||p_segment_rule_type_code||
630 ',segment_rule_code = '||p_segment_rule_code
631 ,p_module => l_log_module
632 ,p_level => C_LEVEL_STATEMENT);
633 END IF;
634
635 --
636 -- check if segment rules has details existing
637 --
638 OPEN c_seg_details;
639 FETCH c_seg_details INTO l_exist;
640 IF c_seg_details%notfound then
641 l_return := TRUE;
642 ELSE
643 l_return := FALSE;
644 END IF;
645 CLOSE c_seg_details;
646
647 IF l_return = FALSE THEN
648 --
649 -- check if segment rules has sources that do not belong to the event class
650 --
651 OPEN c_seg_value_sources;
652 FETCH c_seg_value_sources INTO l_exist;
653 IF c_seg_value_sources%found then
654 l_return := TRUE;
655 ELSE
656 l_return := FALSE;
657 END IF;
658 CLOSE c_seg_value_sources;
659 END IF;
660
661 IF l_return = FALSE THEN
662 OPEN c_seg_condition_sources;
663 FETCH c_seg_condition_sources INTO l_exist;
664 IF c_seg_condition_sources%found then
665 l_return := TRUE;
666 ELSE
667 l_return := FALSE;
668 END IF;
669 CLOSE c_seg_condition_sources;
670 END IF;
671
672 IF l_return = FALSE THEN
673 FOR l_source IN c_seg_value_der_sources LOOP
674 EXIT WHEN l_return = TRUE;
675
676 IF xla_sources_pkg.derived_source_is_invalid
677 (p_application_id => p_application_id
678 ,p_derived_source_code => l_source.source_code
679 ,p_derived_source_type_code => 'D'
680 ,p_event_class_code => p_event_class_code
681 ,p_level => 'L') = 'TRUE' THEN
682
683 l_return := TRUE;
684 ELSE
685 l_return := FALSE;
686 END IF;
687 END LOOP;
688 END IF;
689
690 IF l_return = FALSE THEN
691 FOR l_source IN c_seg_condition_der_sources LOOP
692 EXIT WHEN l_return = TRUE;
693
694 IF xla_sources_pkg.derived_source_is_invalid
695 (p_application_id => p_application_id
696 ,p_derived_source_code => l_source.source_code
697 ,p_derived_source_type_code => 'D'
698 ,p_event_class_code => p_event_class_code
699 ,p_level => 'L') = 'TRUE' THEN
700
701 l_return := TRUE;
702 ELSE
703 l_return := FALSE;
704 END IF;
705 END LOOP;
706 END IF;
707
708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
709 trace(p_msg => 'END of procedure invalid_seg_rule'
710 ,p_module => l_log_module
711 ,p_level => C_LEVEL_PROCEDURE);
712 END IF;
713
714 RETURN l_return;
715
716 EXCEPTION
717 WHEN xla_exceptions_pkg.application_exception THEN
718 IF c_seg_details%ISOPEN THEN
719 CLOSE c_seg_details;
720 END IF;
721 IF c_seg_condition_sources%ISOPEN THEN
722 CLOSE c_seg_condition_sources;
723 END IF;
724 IF c_seg_value_sources%ISOPEN THEN
725 CLOSE c_seg_value_sources;
726 END IF;
727 IF c_seg_condition_der_sources%ISOPEN THEN
728 CLOSE c_seg_condition_der_sources;
729 END IF;
730 IF c_seg_value_der_sources%ISOPEN THEN
731 CLOSE c_seg_value_der_sources;
732 END IF;
733 RAISE;
734
735 WHEN OTHERS THEN
736 IF c_seg_details%ISOPEN THEN
737 CLOSE c_seg_details;
738 END IF;
739 IF c_seg_condition_sources%ISOPEN THEN
740 CLOSE c_seg_condition_sources;
741 END IF;
742 IF c_seg_value_sources%ISOPEN THEN
743 CLOSE c_seg_value_sources;
744 END IF;
745 IF c_seg_condition_der_sources%ISOPEN THEN
746 CLOSE c_seg_condition_der_sources;
747 END IF;
748 IF c_seg_value_der_sources%ISOPEN THEN
749 CLOSE c_seg_value_der_sources;
750 END IF;
751
752 xla_exceptions_pkg.raise_message
753 (p_location => 'xla_line_definitions_pvt.invalid_seg_rule');
754
755 END invalid_seg_rule;
756
757
758 --=============================================================================
759 --
760 -- Name: chk_adr_side_is_valid
761 -- Description: Validate if any JLT assignment that does not have a valid
762 -- side_code associaged
763 -- Return Value:
764 -- TRUE - if the side_codes of all ADR assignments are valid
765 -- FALSE - if the side_code of any ADR assignment is invalid
766 --
767 --=============================================================================
768 FUNCTION chk_adr_side_is_valid
769 (p_application_id IN NUMBER
770 ,p_amb_context_code IN VARCHAR2
771 ,p_event_class_code IN VARCHAR2
772 ,p_event_type_code IN VARCHAR2
773 ,p_line_definition_owner_code IN VARCHAR2
774 ,p_line_definition_code IN VARCHAR2)
775 RETURN BOOLEAN
776 IS
777 --
778 -- Get debit/credit line assignments that contains debit/credit/all
779 -- side_code adr assignment and gain_loss line assignments that contains
780 -- 'NA' side_code
781 --
782 CURSOR c_invalid_side_code IS
783 SELECT distinct xlj.accounting_line_type_code, xlj.accounting_line_code
784 FROM xla_line_defn_jlt_assgns xlj
785 , xla_acct_line_types_b xalt
786 , xla_line_defn_adr_assgns xld
787 WHERE xlj.application_id = p_application_id
788 AND xlj.amb_context_code = p_amb_context_code
789 AND xlj.event_class_code = p_event_class_code
790 AND xlj.event_type_code = p_event_type_code
791 AND xlj.line_definition_owner_code = p_line_definition_owner_code
792 AND xlj.line_definition_code = p_line_definition_code
793 AND xalt.accounting_line_type_code = xlj.accounting_line_type_code
794 AND xalt.accounting_line_code = xlj.accounting_line_code
795 AND xalt.event_class_code = xlj.event_class_code
796 AND xalt.application_id = xlj.application_id
797 AND xalt.amb_context_code = xlj.amb_context_code
798 AND xlj.application_id = xld.application_id
799 AND xlj.amb_context_code = xld.amb_context_code
800 AND xlj.event_class_code = xld.event_class_code
801 AND xlj.event_type_code = xld.event_type_code
802 AND xlj.line_definition_owner_code = xld.line_definition_owner_code
803 AND xlj.line_definition_code = xld.line_definition_code
804 AND xlj.accounting_line_type_code = xld.accounting_line_type_code
805 AND xlj.accounting_line_code = xld.accounting_line_code
806 AND ((xalt.natural_side_code = 'G' AND xld.side_code ='NA')
807 OR (xalt.natural_side_code <>'G' AND xld.side_code <> 'NA'));
808
809 l_return BOOLEAN;
810 l_log_module VARCHAR2(240);
811 BEGIN
812 IF g_log_enabled THEN
813 l_log_module := C_DEFAULT_MODULE||'.chk_adr_side_is_valid';
814 END IF;
815
816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
817 trace(p_msg => 'BEGIN of procedure chk_adr_side_is_valid'
818 ,p_module => l_log_module
819 ,p_level => C_LEVEL_PROCEDURE);
820 END IF;
821
822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
823 trace(p_msg => 'application_id = '||p_application_id||
824 ',amb_context_code = '||p_amb_context_code||
825 ',event_class_code = '||p_event_class_code||
826 ',event_type_code = '||p_event_type_code||
827 ',line_definition_owner_code = '||p_line_definition_owner_code||
828 ',line_definition_code = '||p_line_definition_code
829 ,p_module => l_log_module
830 ,p_level => C_LEVEL_STATEMENT);
831 END IF;
832
833 l_return := TRUE;
834
835 FOR l_adr_assgns IN c_invalid_side_code LOOP
836 l_return := FALSE;
837
838 xla_amb_setup_err_pkg.stack_error
839 (p_message_name => 'XLA_AB_WRONG_SIDE'
840 ,p_message_type => 'E'
841 ,p_message_category => 'LINE_ASSIGNMENT'
842 ,p_category_sequence => 9
843 ,p_application_id => p_application_id
844 ,p_amb_context_code => p_amb_context_code
845 ,p_event_class_code => p_event_class_code
846 ,p_event_type_code => p_event_type_code
847 ,p_line_definition_owner_code => p_line_definition_owner_code
848 ,p_line_definition_code => p_line_definition_code
849 ,p_accounting_line_type_code => l_adr_assgns.accounting_line_type_code
850 ,p_accounting_line_code => l_adr_assgns.accounting_line_code);
851 END LOOP;
852
853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
854 trace(p_msg => 'END of procedure chk_adr_side_is_valid'
855 ,p_module => l_log_module
856 ,p_level => C_LEVEL_PROCEDURE);
857 END IF;
858
859 RETURN l_return;
860
861 EXCEPTION
862 WHEN xla_exceptions_pkg.application_exception THEN
863 IF c_invalid_side_code%ISOPEN THEN
864 CLOSE c_invalid_side_code;
865 END IF;
866 RAISE;
867 WHEN OTHERS THEN
868 xla_exceptions_pkg.raise_message
869 (p_location => 'xla_line_definitions_pvt.chk_adr_side_is_valid');
870 END chk_adr_side_is_valid;
871
872 --=============================================================================
873 --=============================================================================
874 --
875 -- Name: chk_adr_assgns_is_complete
876 -- Description: Validate if any JLT assignment that does not contain flexfield
877 -- assignment and does not have complete segment assignments
878 -- There are two types of ADR assignment - Regular, and ADR for
879 -- non-upgrade entries (for Federal only.) For non-upgrade case,
880 -- the JLT must be a prior entry JLT.
881 -- All JLT assignment that is not for prior entry must have ADR
882 -- assignment. (For prior entry, ADR assignment may exist for
883 -- upgrade ADR for federal.)
884 -- If there is ADR assignment, it must be complete.
885 -- Return Value:
886 -- TRUE - if all ADR assignments are valid
887 -- FALSE - if any ADR assignment is invalid
888 --
889 --=============================================================================
890 FUNCTION chk_adr_assgns_is_complete
891 (p_application_id IN NUMBER
892 ,p_amb_context_code IN VARCHAR2
893 ,p_event_class_code IN VARCHAR2
894 ,p_event_type_code IN VARCHAR2
895 ,p_line_definition_owner_code IN VARCHAR2
896 ,p_line_definition_code IN VARCHAR2)
897 RETURN BOOLEAN
898 IS
899 CURSOR c_coa_id IS
900 SELECT xld.accounting_coa_id
901 FROM xla_line_definitions_b xld
902 WHERE xld.application_id = p_application_id
903 AND xld.amb_context_code = p_amb_context_code
904 AND xld.event_class_code = p_event_class_code
905 AND xld.event_type_code = p_event_type_code
906 AND xld.line_definition_owner_code = p_line_definition_owner_code
907 AND xld.line_definition_code = p_line_definition_code;
908
909 -- For JLT assignment of non-prior-entry JLT, there must be ADR assignment.
910 CURSOR c_invalid_no_adr IS
911 SELECT distinct xlj.accounting_line_type_code, xlj.accounting_line_code
912 FROM xla_line_defn_jlt_assgns xlj
913 ,xla_acct_line_types_b jlt
914 WHERE xlj.application_id = p_application_id
915 AND xlj.amb_context_code = p_amb_context_code
916 AND xlj.event_class_code = p_event_class_code
917 AND xlj.event_type_code = p_event_type_code
918 AND xlj.line_definition_owner_code = p_line_definition_owner_code
919 AND xlj.line_definition_code = p_line_definition_code
920 AND xlj.active_flag = 'Y'
921 AND xlj.application_id = jlt.application_id
922 AND xlj.amb_context_code = jlt.amb_context_code
923 AND xlj.event_class_code = jlt.event_class_code
924 AND xlj.accounting_line_type_code = jlt.accounting_line_type_code
925 AND xlj.accounting_line_code = jlt.accounting_line_code
926 AND jlt.business_method_code <> 'PRIOR_ENTRY'
927 AND NOT EXISTS
928 (SELECT 1 FROM xla_line_defn_adr_assgns xad1
929 WHERE xlj.application_id = xad1.application_id
930 AND xlj.amb_context_code = xad1.amb_context_code
931 AND xlj.event_class_code = xad1.event_class_code
932 AND xlj.event_type_code = xad1.event_type_code
933 AND xlj.line_definition_owner_code = xad1.line_definition_owner_code
934 AND xlj.line_definition_code = xad1.line_definition_code
935 AND xlj.accounting_line_type_code = xad1.accounting_line_type_code
936 AND xlj.accounting_line_code = xad1.accounting_line_code);
937
938
939 --
940 -- If ADR assignment exists, the ADR assignment must be complete
941 --
942 CURSOR c_invalid_adrs_no_coa IS
943 SELECT distinct xlj.accounting_line_type_code, xlj.accounting_line_code
944 FROM xla_line_defn_jlt_assgns xlj
945 --,xla_acct_line_types_b jlt
946 WHERE xlj.application_id = p_application_id
947 AND xlj.amb_context_code = p_amb_context_code
948 AND xlj.event_class_code = p_event_class_code
949 AND xlj.event_type_code = p_event_type_code
950 AND xlj.line_definition_owner_code = p_line_definition_owner_code
951 AND xlj.line_definition_code = p_line_definition_code
952 AND xlj.active_flag = 'Y'
953 --AND xlj.application_id = jlt.application_id
954 --AND xlj.amb_context_code = jlt.amb_context_code
955 --AND xlj.event_class_code = jlt.event_class_code
956 --AND xlj.accounting_line_type_code = jlt.accounting_line_type_code
957 --AND xlj.accounting_line_code = jlt.accounting_line_code
958 --AND jlt.business_method_code <> 'PRIOR_ENTRY'
959 AND EXISTS (SELECT 1 FROM xla_line_defn_adr_assgns xad1
960 WHERE xlj.application_id = xad1.application_id
961 AND xlj.amb_context_code = xad1.amb_context_code
962 AND xlj.event_class_code = xad1.event_class_code
963 AND xlj.event_type_code = xad1.event_type_code
964 AND xlj.line_definition_owner_code = xad1.line_definition_owner_code
965 AND xlj.line_definition_code = xad1.line_definition_code
966 AND xlj.accounting_line_type_code = xad1.accounting_line_type_code
967 AND xlj.accounting_line_code = xad1.accounting_line_code )
968 AND 2<>
969 (SELECT nvl(sum(decode(side_code, 'ALL', 2, 'NA', 2, 1)), 0)
970 FROM xla_line_defn_adr_assgns xad
971 WHERE xlj.application_id = xad.application_id
972 AND xlj.amb_context_code = xad.amb_context_code
973 AND xlj.event_class_code = xad.event_class_code
974 AND xlj.event_type_code = xad.event_type_code
975 AND xlj.line_definition_owner_code = xad.line_definition_owner_code
976 AND xlj.line_definition_code = xad.line_definition_code
977 AND xlj.accounting_line_type_code = xad.accounting_line_type_code
978 AND xlj.accounting_line_code = xad.accounting_line_code
979 AND xad.flexfield_segment_code = 'ALL');
980
981 l_coa_id INTEGER;
982
983 --
984 -- If ADR assignment exists, it must be complete.
985 --
986 CURSOR c_invalid_adrs IS
987 SELECT distinct xlj.accounting_line_type_code, xlj.accounting_line_code
988 FROM xla_line_defn_jlt_assgns xlj
989 ,fnd_id_flex_segments_vl fif
990 -- , xla_acct_line_types_b jlt
991 WHERE fif.application_id = 101
992 AND fif.id_flex_code = 'GL#'
993 AND fif.id_flex_num = l_coa_id
994 AND fif.enabled_flag = 'Y'
995 AND xlj.application_id = p_application_id
996 AND xlj.amb_context_code = p_amb_context_code
997 AND xlj.event_class_code = p_event_class_code
998 AND xlj.event_type_code = p_event_type_code
999 AND xlj.line_definition_owner_code = p_line_definition_owner_code
1000 AND xlj.line_definition_code = p_line_definition_code
1001 AND xlj.active_flag = 'Y'
1002 -- AND xlj.application_id = jlt.application_id
1003 -- AND xlj.amb_context_code = jlt.amb_context_code
1004 -- AND xlj.event_class_code = jlt.event_class_code
1005 -- AND xlj.accounting_line_type_code = jlt.accounting_line_type_code
1006 -- AND xlj.accounting_line_code = jlt.accounting_line_code
1007 -- AND jlt.business_method_code <> 'PRIOR_ENTRY' -- Bug 4922099
1008 AND EXISTS (SELECT 1 FROM xla_line_defn_adr_assgns xad1
1009 WHERE xlj.application_id = xad1.application_id
1010 AND xlj.amb_context_code = xad1.amb_context_code
1011 AND xlj.event_class_code = xad1.event_class_code
1012 AND xlj.event_type_code = xad1.event_type_code
1013 AND xlj.line_definition_owner_code = xad1.line_definition_owner_code
1014 AND xlj.line_definition_code = xad1.line_definition_code
1015 AND xlj.accounting_line_type_code = xad1.accounting_line_type_code
1016 AND xlj.accounting_line_code = xad1.accounting_line_code )
1017 AND (
1018 (NOT EXISTS
1019 (SELECT 'Y'
1020 FROM xla_line_defn_adr_assgns xad
1021 WHERE xlj.application_id = xad.application_id
1022 AND xlj.amb_context_code = xad.amb_context_code
1023 AND xlj.event_class_code = xad.event_class_code
1024 AND xlj.event_type_code = xad.event_type_code
1025 AND xlj.line_definition_owner_code = xad.line_definition_owner_code
1026 AND xlj.line_definition_code = xad.line_definition_code
1027 AND xlj.accounting_line_type_code = xad.accounting_line_type_code
1028 AND xlj.accounting_line_code = xad.accounting_line_code
1029 AND xad.flexfield_segment_code = fif.application_column_name
1030 AND xad.side_code in ('NA', 'CREDIT', 'ALL'))
1031 AND NOT EXISTS
1032 (SELECT 'Y'
1033 FROM xla_line_defn_adr_assgns xad
1034 WHERE xlj.application_id = xad.application_id
1035 AND xlj.amb_context_code = xad.amb_context_code
1036 AND xlj.event_class_code = xad.event_class_code
1037 AND xlj.event_type_code = xad.event_type_code
1038 AND xlj.line_definition_owner_code = xad.line_definition_owner_code
1039 AND xlj.line_definition_code = xad.line_definition_code
1040 AND xlj.accounting_line_type_code = xad.accounting_line_type_code
1041 AND xlj.accounting_line_code = xad.accounting_line_code
1042 AND xad.flexfield_segment_code = 'ALL'
1043 AND xad.side_code in ('NA', 'CREDIT', 'ALL')))
1044 OR ( NOT EXISTS
1045 (SELECT 'Y'
1046 FROM xla_line_defn_adr_assgns xad
1047 WHERE xlj.application_id = xad.application_id
1048 AND xlj.amb_context_code = xad.amb_context_code
1049 AND xlj.event_class_code = xad.event_class_code
1050 AND xlj.event_type_code = xad.event_type_code
1051 AND xlj.line_definition_owner_code = xad.line_definition_owner_code
1052 AND xlj.line_definition_code = xad.line_definition_code
1053 AND xlj.accounting_line_type_code = xad.accounting_line_type_code
1054 AND xlj.accounting_line_code = xad.accounting_line_code
1055 AND xad.flexfield_segment_code = fif.application_column_name
1056 AND xad.side_code in ('NA', 'DEBIT', 'ALL'))
1057 AND NOT EXISTS
1058 (SELECT 'Y'
1059 FROM xla_line_defn_adr_assgns xad
1060 WHERE xlj.application_id = xad.application_id
1061 AND xlj.amb_context_code = xad.amb_context_code
1062 AND xlj.event_class_code = xad.event_class_code
1063 AND xlj.event_type_code = xad.event_type_code
1064 AND xlj.line_definition_owner_code = xad.line_definition_owner_code
1065 AND xlj.line_definition_code = xad.line_definition_code
1066 AND xlj.accounting_line_type_code = xad.accounting_line_type_code
1067 AND xlj.accounting_line_code = xad.accounting_line_code
1068 AND xad.flexfield_segment_code = 'ALL'
1069 AND xad.side_code in ('NA', 'DEBIT', 'ALL'))));
1070
1071 l_return BOOLEAN;
1072 l_log_module VARCHAR2(240);
1073 BEGIN
1074 IF g_log_enabled THEN
1075 l_log_module := C_DEFAULT_MODULE||'.chk_adr_assgns_is_complete';
1076 END IF;
1077
1078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1079 trace(p_msg => 'BEGIN of procedure chk_adr_assgns_is_complete'
1080 ,p_module => l_log_module
1081 ,p_level => C_LEVEL_PROCEDURE);
1082 END IF;
1083
1084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1085 trace(p_msg => 'application_id = '||p_application_id||
1086 ',amb_context_code = '||p_amb_context_code||
1087 ',event_class_code = '||p_event_class_code||
1088 ',event_type_code = '||p_event_type_code||
1089 ',line_definition_owner_code = '||p_line_definition_owner_code||
1090 ',line_definition_code = '||p_line_definition_code
1091 ,p_module => l_log_module
1092 ,p_level => C_LEVEL_STATEMENT);
1093 END IF;
1094
1095 l_return := TRUE;
1096
1097 FOR l_adr_assgns IN c_invalid_no_adr LOOP
1098 l_return := FALSE;
1099
1100 xla_amb_setup_err_pkg.stack_error
1101 (p_message_name => 'XLA_AB_INCOMPLETE_ACCT'
1102 ,p_message_type => 'E'
1103 ,p_message_category => 'LINE_ASSIGNMENT'
1104 ,p_category_sequence => 9
1105 ,p_application_id => p_application_id
1106 ,p_amb_context_code => p_amb_context_code
1107 ,p_event_class_code => p_event_class_code
1108 ,p_event_type_code => p_event_type_code
1109 ,p_line_definition_owner_code => p_line_definition_owner_code
1110 ,p_line_definition_code => p_line_definition_code
1111 ,p_accounting_line_type_code => l_adr_assgns.accounting_line_type_code
1112 ,p_accounting_line_code => l_adr_assgns.accounting_line_code);
1113 END LOOP;
1114
1115 OPEN c_coa_id;
1116 FETCH c_coa_id INTO l_coa_id;
1117 CLOSE c_coa_id;
1118
1119 IF (l_coa_id IS NULL) THEN
1120 --
1121 -- Check if all JLT assignments contain ADR assignments
1122 --
1123 FOR l_adr_assgns IN c_invalid_adrs_no_coa LOOP
1124 l_return := FALSE;
1125
1126 xla_amb_setup_err_pkg.stack_error
1127 (p_message_name => 'XLA_AB_INCOMPLETE_ACCT'
1128 ,p_message_type => 'E'
1129 ,p_message_category => 'LINE_ASSIGNMENT'
1130 ,p_category_sequence => 9
1131 ,p_application_id => p_application_id
1132 ,p_amb_context_code => p_amb_context_code
1133 ,p_event_class_code => p_event_class_code
1134 ,p_event_type_code => p_event_type_code
1135 ,p_line_definition_owner_code => p_line_definition_owner_code
1136 ,p_line_definition_code => p_line_definition_code
1137 ,p_accounting_line_type_code => l_adr_assgns.accounting_line_type_code
1138 ,p_accounting_line_code => l_adr_assgns.accounting_line_code);
1139 END LOOP;
1140 ELSE
1141 FOR l_adr_assgns IN c_invalid_adrs LOOP
1142 l_return := FALSE;
1143
1144 xla_amb_setup_err_pkg.stack_error
1145 (p_message_name => 'XLA_AB_INCOMPLETE_ACCT'
1146 ,p_message_type => 'E'
1147 ,p_message_category => 'LINE_ASSIGNMENT'
1148 ,p_category_sequence => 9
1149 ,p_application_id => p_application_id
1150 ,p_amb_context_code => p_amb_context_code
1151 ,p_event_class_code => p_event_class_code
1152 ,p_event_type_code => p_event_type_code
1153 ,p_line_definition_owner_code => p_line_definition_owner_code
1154 ,p_line_definition_code => p_line_definition_code
1155 ,p_accounting_line_type_code => l_adr_assgns.accounting_line_type_code
1156 ,p_accounting_line_code => l_adr_assgns.accounting_line_code);
1157 END LOOP;
1158 END IF;
1159
1160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1161 trace(p_msg => 'END of procedure chk_adr_assgns_is_complete'
1162 ,p_module => l_log_module
1163 ,p_level => C_LEVEL_PROCEDURE);
1164 END IF;
1165
1166 RETURN l_return;
1167
1168 EXCEPTION
1169 WHEN xla_exceptions_pkg.application_exception THEN
1170 IF c_invalid_adrs%ISOPEN THEN
1171 CLOSE c_invalid_adrs;
1172 END IF;
1173 RAISE;
1174 WHEN OTHERS THEN
1175 xla_exceptions_pkg.raise_message
1176 (p_location => 'xla_line_definitions_pvt.chk_adr_assgns_is_complete');
1177 END chk_adr_assgns_is_complete;
1178
1179 --=============================================================================
1180 --
1181 -- Name: chk_adr_is_enabled
1182 -- Description:
1183 --
1184 --=============================================================================
1185 FUNCTION chk_adr_is_enabled
1186 (p_application_id IN NUMBER
1187 ,p_amb_context_code IN VARCHAR2
1188 ,p_event_class_code IN VARCHAR2
1189 ,p_event_type_code IN VARCHAR2
1190 ,p_line_definition_owner_code IN VARCHAR2
1191 ,p_line_definition_code IN VARCHAR2)
1192 RETURN BOOLEAN
1193 IS
1194 CURSOR c_invalid_adrs IS
1195 SELECT distinct xsr.segment_rule_type_code, xsr.segment_rule_code
1196 FROM xla_line_defn_jlt_assgns xjl
1197 ,xla_line_defn_adr_assgns xad
1198 ,xla_seg_rules_b xsr
1199 WHERE xsr.application_id = xad.application_id
1200 AND xsr.amb_context_code = xad.amb_context_code
1201 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1202 AND xsr.segment_rule_code = xad.segment_rule_code
1203 AND xsr.enabled_flag <> 'Y'
1204 AND xad.application_id = xjl.application_id
1205 AND xad.amb_context_code = xjl.amb_context_code
1206 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1207 AND xad.line_definition_code = xjl.line_definition_code
1208 AND xad.event_class_code = xjl.event_class_code
1209 AND xad.event_type_code = xjl.event_type_code
1210 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1211 AND xad.accounting_line_code = xjl.accounting_line_code
1212 AND xad.segment_rule_code is not null
1213 AND xjl.application_id = p_application_id
1214 AND xjl.amb_context_code = p_amb_context_code
1215 AND xjl.event_class_code = p_event_class_code
1216 AND xjl.event_type_code = p_event_type_code
1217 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1218 AND xjl.line_definition_code = p_line_definition_code
1219 AND xjl.active_flag = 'Y';
1220
1221 CURSOR c_adr IS
1222 SELECT distinct xsr.application_id, xsr.amb_context_code,
1223 xsr.segment_rule_type_code, xsr.segment_rule_code
1224 FROM xla_line_defn_jlt_assgns xjl
1225 ,xla_line_defn_adr_assgns xad
1226 ,xla_seg_rules_b xsr
1227 WHERE xsr.application_id = xad.application_id
1228 AND xsr.amb_context_code = xad.amb_context_code
1229 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1230 AND xsr.segment_rule_code = xad.segment_rule_code
1231 AND xad.application_id = xjl.application_id
1232 AND xad.amb_context_code = xjl.amb_context_code
1233 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1234 AND xad.line_definition_code = xjl.line_definition_code
1235 AND xad.event_class_code = xjl.event_class_code
1236 AND xad.event_type_code = xjl.event_type_code
1237 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1238 AND xad.accounting_line_code = xjl.accounting_line_code
1239 AND xad.segment_rule_code is not null
1240 AND xjl.application_id = p_application_id
1241 AND xjl.amb_context_code = p_amb_context_code
1242 AND xjl.event_class_code = p_event_class_code
1243 AND xjl.event_type_code = p_event_type_code
1244 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1245 AND xjl.line_definition_code = p_line_definition_code
1246 AND xjl.active_flag = 'Y';
1247
1248 l_adr c_adr%rowtype;
1249
1250 CURSOR c_invalid_child_adr IS
1251 SELECT xsd.value_segment_rule_type_code, xsd.value_segment_rule_code
1252 FROM xla_seg_rule_details xsd
1253 ,xla_seg_rules_b xsr
1254 WHERE xsd.application_id = l_adr.application_id
1255 AND xsd.amb_context_code = l_adr.amb_context_code
1256 AND xsd.segment_rule_type_code = l_adr.segment_rule_type_code
1257 AND xsd.segment_rule_code = l_adr.segment_rule_code
1258 AND xsd.value_type_code = 'A'
1259 AND xsd.value_segment_rule_appl_id = xsr.application_id
1260 AND xsd.value_segment_rule_type_code = xsr.segment_rule_type_code
1261 AND xsd.value_segment_rule_code = xsr.segment_rule_code
1262 AND xsd.amb_context_code = xsr.amb_context_code
1263 AND xsr.enabled_flag <> 'Y';
1264
1265 l_return BOOLEAN;
1266 l_log_module VARCHAR2(240);
1267 BEGIN
1268 IF g_log_enabled THEN
1269 l_log_module := C_DEFAULT_MODULE||'.chk_adr_is_enabled';
1270 END IF;
1271
1272 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1273 trace(p_msg => 'BEGIN of procedure chk_adr_is_enabled'
1274 ,p_module => l_log_module
1275 ,p_level => C_LEVEL_PROCEDURE);
1276 END IF;
1277
1278 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1279 trace(p_msg => 'application_id = '||p_application_id||
1280 ',amb_context_code = '||p_amb_context_code||
1281 ',event_class_code = '||p_event_class_code||
1282 ',event_type_code = '||p_event_type_code||
1283 ',line_definition_owner_code = '||p_line_definition_owner_code||
1284 ',line_definition_code = '||p_line_definition_code
1285 ,p_module => l_log_module
1286 ,p_level => C_LEVEL_STATEMENT);
1287 END IF;
1288
1289 l_return := TRUE;
1290
1291 FOR l_err IN c_invalid_adrs LOOP
1292 l_return := FALSE;
1293
1294 xla_amb_setup_err_pkg.stack_error
1295 (p_message_name => 'XLA_AB_DISABLD_SEG_RULE'
1296 ,p_message_type => 'E'
1297 ,p_message_category => 'SEG_RULE'
1298 ,p_category_sequence => 13
1299 ,p_application_id => p_application_id
1300 ,p_amb_context_code => p_amb_context_code
1301 ,p_event_class_code => p_event_class_code
1302 ,p_event_type_code => p_event_type_code
1303 ,p_line_definition_owner_code => p_line_definition_owner_code
1304 ,p_line_definition_code => p_line_definition_code
1305 ,p_segment_rule_type_code => l_err.segment_rule_type_code
1306 ,p_segment_rule_code => l_err.segment_rule_code);
1307
1308 END LOOP;
1309
1310 OPEN c_adr;
1311 LOOP
1312 FETCH c_adr
1313 INTO l_adr;
1314 EXIT WHEN c_adr%notfound;
1315
1316 FOR l_child_adr IN c_invalid_child_adr LOOP
1317 l_return := FALSE;
1318
1319 xla_amb_setup_err_pkg.stack_error
1320 (p_message_name => 'XLA_AB_DISABLD_SEG_RULE'
1321 ,p_message_type => 'E'
1322 ,p_message_category => 'SEG_RULE'
1323 ,p_category_sequence => 13
1324 ,p_application_id => p_application_id
1325 ,p_amb_context_code => p_amb_context_code
1326 ,p_event_class_code => p_event_class_code
1327 ,p_event_type_code => p_event_type_code
1328 ,p_line_definition_owner_code => p_line_definition_owner_code
1329 ,p_line_definition_code => p_line_definition_code
1330 ,p_segment_rule_type_code => l_child_adr.value_segment_rule_type_code
1331 ,p_segment_rule_code => l_child_adr.value_segment_rule_code);
1332
1333 END LOOP;
1334 END LOOP;
1335 CLOSE c_adr;
1336
1337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1338 trace(p_msg => 'END of procedure chk_adr_is_enabled'
1339 ,p_module => l_log_module
1340 ,p_level => C_LEVEL_PROCEDURE);
1341 END IF;
1342
1343 RETURN l_return;
1344
1345 EXCEPTION
1346 WHEN xla_exceptions_pkg.application_exception THEN
1347 IF c_invalid_adrs%ISOPEN THEN
1348 CLOSE c_invalid_adrs;
1349 END IF;
1350 RAISE;
1351
1352 WHEN OTHERS THEN
1353 IF c_invalid_adrs%ISOPEN THEN
1354 CLOSE c_invalid_adrs;
1355 END IF;
1356 xla_exceptions_pkg.raise_message
1357 (p_location => 'xla_line_definitions_pvt.chk_adr_is_enabled');
1358 END chk_adr_is_enabled;
1359
1360 --=============================================================================
1361 --
1362 -- Name: chk_adr_has_details
1363 -- Description:
1364 --
1365 --=============================================================================
1366 FUNCTION chk_adr_has_details
1367 (p_application_id IN NUMBER
1368 ,p_amb_context_code IN VARCHAR2
1369 ,p_event_class_code IN VARCHAR2
1370 ,p_event_type_code IN VARCHAR2
1371 ,p_line_definition_owner_code IN VARCHAR2
1372 ,p_line_definition_code IN VARCHAR2)
1373 RETURN BOOLEAN
1374 IS
1375 CURSOR c_invalid_adrs IS
1376 SELECT distinct xad.segment_rule_code, xad.segment_rule_type_code
1377 FROM xla_line_defn_adr_assgns xad, xla_line_defn_jlt_assgns xjl
1378 WHERE xad.application_id = xjl.application_id
1379 AND xad.amb_context_code = xjl.amb_context_code
1380 AND xad.event_class_code = xjl.event_class_code
1381 AND xad.event_type_code = xjl.event_type_code
1382 AND xad.line_definition_code = xjl.line_definition_code
1383 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1384 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1385 AND xad.accounting_line_code = xjl.accounting_line_code
1386 AND xjl.application_id = p_application_id
1387 AND xjl.amb_context_code = p_amb_context_code
1388 AND xjl.event_class_code = p_event_class_code
1389 AND xjl.event_type_code = p_event_type_code
1390 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1391 AND xjl.line_definition_code = p_line_definition_code
1392 AND xjl.active_flag = 'Y'
1393 AND xad.segment_rule_code is not null
1394 AND NOT EXISTS
1395 (SELECT 'x'
1396 FROM xla_seg_rule_details xsr
1397 WHERE xsr.application_id = NVL(xad.segment_rule_appl_id,xad.application_id)
1398 AND xsr.amb_context_code = xad.amb_context_code
1399 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1400 AND xsr.segment_rule_code = xad.segment_rule_code);
1401
1402 CURSOR c_adr IS
1403 SELECT distinct xsr.application_id, xsr.amb_context_code,
1404 xsr.segment_rule_type_code, xsr.segment_rule_code
1405 FROM xla_line_defn_jlt_assgns xjl
1406 ,xla_line_defn_adr_assgns xad
1407 ,xla_seg_rules_b xsr
1408 WHERE xsr.application_id = xad.application_id
1409 AND xsr.amb_context_code = xad.amb_context_code
1410 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1411 AND xsr.segment_rule_code = xad.segment_rule_code
1412 AND xad.application_id = xjl.application_id
1413 AND xad.amb_context_code = xjl.amb_context_code
1414 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1415 AND xad.line_definition_code = xjl.line_definition_code
1416 AND xad.event_class_code = xjl.event_class_code
1417 AND xad.event_type_code = xjl.event_type_code
1418 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1419 AND xad.accounting_line_code = xjl.accounting_line_code
1420 AND xad.segment_rule_code is not null
1421 AND xjl.application_id = p_application_id
1422 AND xjl.amb_context_code = p_amb_context_code
1423 AND xjl.event_class_code = p_event_class_code
1424 AND xjl.event_type_code = p_event_type_code
1425 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1426 AND xjl.line_definition_code = p_line_definition_code
1427 AND xjl.active_flag = 'Y';
1428
1429 l_adr c_adr%rowtype;
1430
1431 CURSOR c_invalid_child_adr IS
1432 SELECT xsd.value_segment_rule_type_code, xsd.value_segment_rule_code
1433 FROM xla_seg_rule_details xsd
1434 WHERE xsd.application_id = l_adr.application_id
1435 AND xsd.amb_context_code = l_adr.amb_context_code
1436 AND xsd.segment_rule_type_code = l_adr.segment_rule_type_code
1437 AND xsd.segment_rule_code = l_adr.segment_rule_code
1438 AND xsd.value_type_code = 'A'
1439 AND not exists (SELECT 'x'
1440 FROM xla_seg_rule_details xcd
1441 WHERE xcd.application_id = xsd.value_segment_rule_appl_id
1442 AND xcd.amb_context_code = xsd.amb_context_code
1443 AND xcd.segment_rule_type_code = xsd.value_segment_rule_type_code
1444 AND xcd.segment_rule_code = xsd.value_segment_rule_code);
1445
1446 l_return BOOLEAN;
1447 l_log_module VARCHAR2(240);
1448 BEGIN
1449 IF g_log_enabled THEN
1450 l_log_module := C_DEFAULT_MODULE||'.chk_adr_has_details';
1451 END IF;
1452
1453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1454 trace(p_msg => 'BEGIN of procedure chk_adr_has_details'
1455 ,p_module => l_log_module
1456 ,p_level => C_LEVEL_PROCEDURE);
1457 END IF;
1458
1459 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1460 trace(p_msg => 'application_id = '||p_application_id||
1461 ',amb_context_code = '||p_amb_context_code||
1462 ',event_class_code = '||p_event_class_code||
1463 ',event_type_code = '||p_event_type_code||
1464 ',line_definition_owner_code = '||p_line_definition_owner_code||
1465 ',line_definition_code = '||p_line_definition_code
1466 ,p_module => l_log_module
1467 ,p_level => C_LEVEL_STATEMENT);
1468 END IF;
1469
1470 l_return := TRUE;
1471
1472 FOR l_err IN c_invalid_adrs LOOP
1473 l_return := FALSE;
1474
1475 xla_amb_setup_err_pkg.stack_error
1476 (p_message_name => 'XLA_AB_SR_NO_DETAIL'
1477 ,p_message_type => 'E'
1478 ,p_message_category => 'SEG_RULE'
1479 ,p_category_sequence => 13
1480 ,p_application_id => p_application_id
1481 ,p_amb_context_code => p_amb_context_code
1482 ,p_event_class_code => p_event_class_code
1483 ,p_event_type_code => p_event_type_code
1484 ,p_line_definition_owner_code => p_line_definition_owner_code
1485 ,p_line_definition_code => p_line_definition_code
1486 ,p_segment_rule_type_code => l_err.segment_rule_type_code
1487 ,p_segment_rule_code => l_err.segment_rule_code);
1488 END LOOP;
1489
1490 OPEN c_adr;
1491 LOOP
1492 FETCH c_adr
1493 INTO l_adr;
1494 EXIT WHEN c_adr%notfound;
1495
1496 FOR l_child_adr IN c_invalid_child_adr LOOP
1497 l_return := FALSE;
1498
1499 xla_amb_setup_err_pkg.stack_error
1500 (p_message_name => 'XLA_AB_SR_NO_DETAIL'
1501 ,p_message_type => 'E'
1502 ,p_message_category => 'SEG_RULE'
1503 ,p_category_sequence => 13
1504 ,p_application_id => p_application_id
1505 ,p_amb_context_code => p_amb_context_code
1506 ,p_event_class_code => p_event_class_code
1507 ,p_event_type_code => p_event_type_code
1508 ,p_line_definition_owner_code => p_line_definition_owner_code
1509 ,p_line_definition_code => p_line_definition_code
1510 ,p_segment_rule_type_code => l_child_adr.value_segment_rule_type_code
1511 ,p_segment_rule_code => l_child_adr.value_segment_rule_code);
1512 END LOOP;
1513 END LOOP;
1514 CLOSE c_adr;
1515
1516 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1517 trace(p_msg => 'END of procedure chk_adr_has_details'
1518 ,p_module => l_log_module
1519 ,p_level => C_LEVEL_PROCEDURE);
1520 END IF;
1521
1522 RETURN l_return;
1523
1524 EXCEPTION
1525 WHEN xla_exceptions_pkg.application_exception THEN
1526 IF c_invalid_adrs%ISOPEN THEN
1527 CLOSE c_invalid_adrs;
1528 END IF;
1529 RAISE;
1530
1531 WHEN OTHERS THEN
1532 IF c_invalid_adrs%ISOPEN THEN
1533 CLOSE c_invalid_adrs;
1534 END IF;
1535 xla_exceptions_pkg.raise_message
1536 (p_location => 'xla_line_definitions_pvt.chk_adr_has_details');
1537 END chk_adr_has_details;
1538
1539
1540 --=============================================================================
1541 --
1542 -- Name: chk_adr_invalid_source_in_cond
1543 -- Description: Check if all sources used in the ADR condition is valid
1544 --
1545 --=============================================================================
1546 FUNCTION chk_adr_invalid_source_in_cond
1547 (p_application_id IN NUMBER
1548 ,p_amb_context_code IN VARCHAR2
1549 ,p_event_class_code IN VARCHAR2
1550 ,p_event_type_code IN VARCHAR2
1551 ,p_line_definition_owner_code IN VARCHAR2
1552 ,p_line_definition_code IN VARCHAR2)
1553 RETURN BOOLEAN
1554 IS
1555 --
1556 -- Get all JLT that have sources that do not belong to the event class of the
1557 -- line definition
1558 --
1559 CURSOR c_invalid_sources IS
1560 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1561 xco.source_type_code, xco.source_code
1562 FROM xla_conditions xco
1563 ,xla_seg_rule_details xsr
1564 ,xla_line_defn_adr_assgns xad
1565 ,xla_line_defn_jlt_assgns xjl
1566 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1567 AND xsr.application_id = xad.application_id
1568 AND xsr.amb_context_code = xad.amb_context_code
1569 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1570 AND xsr.segment_rule_code = xad.segment_rule_code
1571 AND xco.source_type_code = 'S'
1572 AND xad.application_id = xjl.application_id
1573 AND xad.amb_context_code = xjl.amb_context_code
1574 AND xad.event_class_code = xjl.event_class_code
1575 AND xad.event_type_code = xjl.event_type_code
1576 AND xad.line_definition_code = xjl.line_definition_code
1577 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1578 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1579 AND xad.accounting_line_code = xjl.accounting_line_code
1580 AND xad.segment_rule_code is not null
1581 AND xjl.application_id = p_application_id
1582 AND xjl.amb_context_code = p_amb_context_code
1583 AND xjl.event_class_code = p_event_class_code
1584 AND xjl.event_type_code = p_event_type_code
1585 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1586 AND xjl.line_definition_code = p_line_definition_code
1587 AND xjl.active_flag = 'Y'
1588 AND NOT EXISTS
1589 (SELECT 'y'
1590 FROM xla_event_sources xes
1591 WHERE xes.source_application_id = xco.source_application_id
1592 AND xes.source_type_code = xco.source_type_code
1593 AND xes.source_code = xco.source_code
1594 AND xes.application_id = p_application_id
1595 AND xes.event_class_code = p_event_class_code
1596 AND xes.active_flag = 'Y')
1597 UNION
1598 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1599 xco.value_source_type_code source_type_code, xco.value_source_code source_code
1600 FROM xla_conditions xco
1601 ,xla_seg_rule_details xsr
1602 ,xla_line_defn_adr_assgns xad
1603 ,xla_line_defn_jlt_assgns xjl
1604 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1605 AND xsr.application_id = xad.application_id
1606 AND xsr.amb_context_code = xad.amb_context_code
1607 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1608 AND xsr.segment_rule_code = xad.segment_rule_code
1609 AND xco.value_source_type_code = 'S'
1610 AND xad.application_id = xjl.application_id
1611 AND xad.amb_context_code = xjl.amb_context_code
1612 AND xad.event_class_code = xjl.event_class_code
1613 AND xad.event_type_code = xjl.event_type_code
1614 AND xad.line_definition_code = xjl.line_definition_code
1615 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1616 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1617 AND xad.accounting_line_code = xjl.accounting_line_code
1618 AND xad.segment_rule_code is not null
1619 AND xjl.application_id = p_application_id
1620 AND xjl.amb_context_code = p_amb_context_code
1621 AND xjl.event_class_code = p_event_class_code
1622 AND xjl.event_type_code = p_event_type_code
1623 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1624 AND xjl.line_definition_code = p_line_definition_code
1625 AND xjl.active_flag = 'Y'
1626 AND NOT EXISTS
1627 (SELECT 'y'
1628 FROM xla_event_sources xes
1629 WHERE xes.source_application_id = xco.value_source_application_id
1630 AND xes.source_type_code = xco.value_source_type_code
1631 AND xes.source_code = xco.value_source_code
1632 AND xes.application_id = p_application_id
1633 AND xes.event_class_code = p_event_class_code
1634 AND xes.active_flag = 'Y');
1635
1636 CURSOR c_cond_der_sources IS
1637 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1638 xco.source_type_code source_type_code, xco.source_code source_code
1639 FROM xla_conditions xco
1640 ,xla_seg_rule_details xsr
1641 ,xla_line_defn_adr_assgns xad
1642 ,xla_line_defn_jlt_assgns xjl
1643 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1644 AND xsr.application_id = xad.application_id
1645 AND xsr.amb_context_code = xad.amb_context_code
1646 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1647 AND xsr.segment_rule_code = xad.segment_rule_code
1648 AND xco.source_type_code = 'D'
1649 AND xad.application_id = xjl.application_id
1650 AND xad.amb_context_code = xjl.amb_context_code
1651 AND xad.event_class_code = xjl.event_class_code
1652 AND xad.event_type_code = xjl.event_type_code
1653 AND xad.line_definition_code = xjl.line_definition_code
1654 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1655 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1656 AND xad.accounting_line_code = xjl.accounting_line_code
1657 AND xad.segment_rule_code is not null
1658 AND xjl.application_id = p_application_id
1659 AND xjl.amb_context_code = p_amb_context_code
1660 AND xjl.event_class_code = p_event_class_code
1661 AND xjl.event_type_code = p_event_type_code
1662 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1663 AND xjl.line_definition_code = p_line_definition_code
1664 AND xjl.active_flag = 'Y'
1665 UNION
1666 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1667 xco.value_source_type_code source_type_code, xco.value_source_code source_code
1668 FROM xla_conditions xco
1669 ,xla_seg_rule_details xsr
1670 ,xla_line_defn_adr_assgns xad
1671 ,xla_line_defn_jlt_assgns xjl
1672 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1673 AND xsr.application_id = xad.application_id
1674 AND xsr.amb_context_code = xad.amb_context_code
1675 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1676 AND xsr.segment_rule_code = xad.segment_rule_code
1677 AND xco.value_source_type_code = 'D'
1678 AND xad.application_id = xjl.application_id
1679 AND xad.amb_context_code = xjl.amb_context_code
1680 AND xad.event_class_code = xjl.event_class_code
1681 AND xad.event_type_code = xjl.event_type_code
1682 AND xad.line_definition_code = xjl.line_definition_code
1683 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1684 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1685 AND xad.accounting_line_code = xjl.accounting_line_code
1686 AND xad.segment_rule_code is not null
1687 AND xjl.application_id = p_application_id
1688 AND xjl.amb_context_code = p_amb_context_code
1689 AND xjl.event_class_code = p_event_class_code
1690 AND xjl.event_type_code = p_event_type_code
1691 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1692 AND xjl.line_definition_code = p_line_definition_code
1693 AND xjl.active_flag = 'Y';
1694
1695 CURSOR c_child_adr IS
1696 SELECT distinct xsr.segment_rule_type_code, xsr.segment_rule_code,
1697 xsr.value_segment_rule_appl_id,
1698 xsr.value_segment_rule_type_code, xsr.value_segment_rule_code
1699 FROM xla_line_defn_jlt_assgns xjl
1700 ,xla_line_defn_adr_assgns xad
1701 ,xla_seg_rule_details xsr
1702 WHERE xsr.application_id = xad.application_id
1703 AND xsr.amb_context_code = xad.amb_context_code
1704 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1705 AND xsr.segment_rule_code = xad.segment_rule_code
1706 AND xsr.value_type_code = 'A'
1707 AND xad.application_id = xjl.application_id
1708 AND xad.amb_context_code = xjl.amb_context_code
1709 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1710 AND xad.line_definition_code = xjl.line_definition_code
1711 AND xad.event_class_code = xjl.event_class_code
1712 AND xad.event_type_code = xjl.event_type_code
1713 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1714 AND xad.accounting_line_code = xjl.accounting_line_code
1715 AND xad.segment_rule_code is not null
1716 AND xjl.application_id = p_application_id
1717 AND xjl.amb_context_code = p_amb_context_code
1718 AND xjl.event_class_code = p_event_class_code
1719 AND xjl.event_type_code = p_event_type_code
1720 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1721 AND xjl.line_definition_code = p_line_definition_code
1722 AND xjl.active_flag = 'Y';
1723
1724 l_child_adr c_child_adr%rowtype;
1725
1726 CURSOR c_invalid_child_sources IS
1727 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1728 xco.source_type_code, xco.source_code
1729 FROM xla_conditions xco
1730 ,xla_seg_rule_details xsr
1731 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1732 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
1733 AND xsr.amb_context_code = p_amb_context_code
1734 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
1735 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
1736 AND xco.source_type_code = 'S'
1737 AND NOT EXISTS
1738 (SELECT 'y'
1739 FROM xla_event_sources xes
1740 WHERE xes.source_application_id = xco.source_application_id
1741 AND xes.source_type_code = xco.source_type_code
1742 AND xes.source_code = xco.source_code
1743 AND xes.application_id = p_application_id
1744 AND xes.event_class_code = p_event_class_code
1745 AND xes.active_flag = 'Y')
1746 UNION
1747 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1748 xco.value_source_type_code source_type_code, xco.value_source_code source_code
1749 FROM xla_conditions xco
1750 ,xla_seg_rule_details xsr
1751 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1752 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
1753 AND xsr.amb_context_code = p_amb_context_code
1754 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
1755 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
1756 AND xco.value_source_type_code = 'S'
1757 AND NOT EXISTS
1758 (SELECT 'y'
1759 FROM xla_event_sources xes
1760 WHERE xes.source_application_id = xco.value_source_application_id
1761 AND xes.source_type_code = xco.value_source_type_code
1762 AND xes.source_code = xco.value_source_code
1763 AND xes.application_id = p_application_id
1764 AND xes.event_class_code = p_event_class_code
1765 AND xes.active_flag = 'Y');
1766
1767 CURSOR c_child_der_sources IS
1768 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1769 xco.source_type_code source_type_code, xco.source_code source_code
1770 FROM xla_conditions xco
1771 ,xla_seg_rule_details xsr
1772 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1773 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
1774 AND xsr.amb_context_code = p_amb_context_code
1775 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
1776 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
1777 AND xco.source_type_code = 'D'
1778 UNION
1779 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1780 xco.value_source_type_code source_type_code, xco.value_source_code source_code
1781 FROM xla_conditions xco
1782 ,xla_seg_rule_details xsr
1783 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
1784 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
1785 AND xsr.amb_context_code = p_amb_context_code
1786 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
1787 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
1788 AND xco.value_source_type_code = 'D';
1789
1790 l_return BOOLEAN;
1791 l_log_module VARCHAR2(240);
1792 BEGIN
1793 IF g_log_enabled THEN
1794 l_log_module := C_DEFAULT_MODULE||'.chk_adr_invalid_source_in_cond';
1795 END IF;
1796
1797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1798 trace(p_msg => 'BEGIN of procedure chk_adr_invalid_source_in_cond'
1799 ,p_module => l_log_module
1800 ,p_level => C_LEVEL_PROCEDURE);
1801 END IF;
1802
1803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1804 trace(p_msg => 'application_id = '||p_application_id||
1805 ',amb_context_code = '||p_amb_context_code||
1806 ',event_class_code = '||p_event_class_code||
1807 ',event_type_code = '||p_event_type_code||
1808 ',line_definition_owner_code = '||p_line_definition_owner_code||
1809 ',line_definition_code = '||p_line_definition_code
1810 ,p_module => l_log_module
1811 ,p_level => C_LEVEL_STATEMENT);
1812 END IF;
1813
1814 l_return := TRUE;
1815
1816 --
1817 -- Check if the condition of any JLT have seeded sources that are not assigned
1818 -- to the event class of the line definition
1819 --
1820 FOR l_err IN c_invalid_sources LOOP
1821 l_return := FALSE;
1822
1823 xla_amb_setup_err_pkg.stack_error
1824 (p_message_name => 'XLA_AB_SR_CON_UNASN_SRCE'
1825 ,p_message_type => 'E'
1826 ,p_message_category => 'SEG_RULE'
1827 ,p_category_sequence => 13
1828 ,p_application_id => p_application_id
1829 ,p_amb_context_code => p_amb_context_code
1830 ,p_event_class_code => p_event_class_code
1831 ,p_event_type_code => p_event_type_code
1832 ,p_line_definition_owner_code => p_line_definition_owner_code
1833 ,p_line_definition_code => p_line_definition_code
1834 ,p_segment_rule_type_code => l_err.segment_rule_type_code
1835 ,p_segment_rule_code => l_err.segment_rule_code
1836 ,p_source_type_code => l_err.source_type_code
1837 ,p_source_code => l_err.source_code);
1838 END LOOP;
1839
1840 FOR l_err IN c_cond_der_sources LOOP
1841 IF xla_sources_pkg.derived_source_is_invalid
1842 (p_application_id => p_application_id
1843 ,p_derived_source_code => l_err.source_code
1844 ,p_derived_source_type_code => 'D'
1845 ,p_event_class_code => p_event_class_code
1846 ,p_level => 'L') = 'TRUE' THEN
1847
1848 l_return := FALSE;
1849
1850 xla_amb_setup_err_pkg.stack_error
1851 (p_message_name => 'XLA_AB_SR_CON_UNASN_SRCE'
1852 ,p_message_type => 'E'
1853 ,p_message_category => 'SEG_RULE'
1854 ,p_category_sequence => 13
1855 ,p_application_id => p_application_id
1856 ,p_amb_context_code => p_amb_context_code
1857 ,p_event_class_code => p_event_class_code
1858 ,p_event_type_code => p_event_type_code
1859 ,p_line_definition_owner_code => p_line_definition_owner_code
1860 ,p_line_definition_code => p_line_definition_code
1861 ,p_segment_rule_type_code => l_err.segment_rule_type_code
1862 ,p_segment_rule_code => l_err.segment_rule_code
1863 ,p_source_type_code => l_err.source_type_code
1864 ,p_source_code => l_err.source_code);
1865 END IF;
1866 END LOOP;
1867
1868 OPEN c_child_adr;
1869 LOOP
1870 FETCH c_child_adr
1871 INTO l_child_adr;
1872 EXIT WHEN c_child_adr%notfound;
1873
1874 FOR l_err IN c_invalid_child_sources LOOP
1875 l_return := FALSE;
1876
1877 xla_amb_setup_err_pkg.stack_error
1878 (p_message_name => 'XLA_AB_SR_REF_RULE_COND'
1879 ,p_message_type => 'E'
1880 ,p_message_category => 'SEG_RULE'
1881 ,p_category_sequence => 13
1882 ,p_application_id => p_application_id
1883 ,p_amb_context_code => p_amb_context_code
1884 ,p_event_class_code => p_event_class_code
1885 ,p_event_type_code => p_event_type_code
1886 ,p_line_definition_owner_code => p_line_definition_owner_code
1887 ,p_line_definition_code => p_line_definition_code
1888 ,p_segment_rule_type_code => l_child_adr.segment_rule_type_code
1889 ,p_segment_rule_code => l_child_adr.segment_rule_code);
1890 END LOOP;
1891
1892 FOR l_err IN c_child_der_sources LOOP
1893 IF xla_sources_pkg.derived_source_is_invalid
1894 (p_application_id => p_application_id
1895 ,p_derived_source_code => l_err.source_code
1896 ,p_derived_source_type_code => 'D'
1897 ,p_event_class_code => p_event_class_code
1898 ,p_level => 'L') = 'TRUE' THEN
1899
1900 l_return := FALSE;
1901 xla_amb_setup_err_pkg.stack_error
1902 (p_message_name => 'XLA_AB_SR_REF_RULE_COND'
1903 ,p_message_type => 'E'
1904 ,p_message_category => 'SEG_RULE'
1905 ,p_category_sequence => 13
1906 ,p_application_id => p_application_id
1907 ,p_amb_context_code => p_amb_context_code
1908 ,p_event_class_code => p_event_class_code
1909 ,p_event_type_code => p_event_type_code
1910 ,p_line_definition_owner_code => p_line_definition_owner_code
1911 ,p_line_definition_code => p_line_definition_code
1912 ,p_segment_rule_type_code => l_child_adr.segment_rule_type_code
1913 ,p_segment_rule_code => l_child_adr.segment_rule_code);
1914 END IF;
1915 END LOOP;
1916 END LOOP;
1917 CLOSE c_child_adr;
1918
1919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1920 trace(p_msg => 'END of procedure chk_adr_invalid_source_in_cond'
1921 ,p_module => l_log_module
1922 ,p_level => C_LEVEL_PROCEDURE);
1923 END IF;
1924
1925 RETURN l_return;
1926
1927 EXCEPTION
1928 WHEN xla_exceptions_pkg.application_exception THEN
1929 IF c_invalid_sources%ISOPEN THEN
1930 CLOSE c_invalid_sources;
1931 END IF;
1932 IF c_cond_der_sources%ISOPEN THEN
1933 CLOSE c_cond_der_sources;
1934 END IF;
1935 RAISE;
1936
1937 WHEN OTHERS THEN
1938 IF c_invalid_sources%ISOPEN THEN
1939 CLOSE c_invalid_sources;
1940 END IF;
1941 IF c_cond_der_sources%ISOPEN THEN
1942 CLOSE c_cond_der_sources;
1943 END IF;
1944 xla_exceptions_pkg.raise_message
1945 (p_location => 'xla_line_definitions_pvt.chk_adr_invalid_source_in_cond');
1946 END chk_adr_invalid_source_in_cond;
1947
1948
1949
1950 --=============================================================================
1951 --
1952 -- Name: chk_adr_source_event_class
1953 -- Description: Check if all JLT of the line definition has all required
1954 -- accounting sources assigned
1955 --
1956 --=============================================================================
1957 FUNCTION chk_adr_source_event_class
1958 (p_application_id IN NUMBER
1959 ,p_amb_context_code IN VARCHAR2
1960 ,p_event_class_code IN VARCHAR2
1961 ,p_event_type_code IN VARCHAR2
1962 ,p_line_definition_owner_code IN VARCHAR2
1963 ,p_line_definition_code IN VARCHAR2)
1964 RETURN BOOLEAN
1965 IS
1966 --
1967 -- Get all JLT for which not all required line accounting sources are assigned
1968 --
1969 CURSOR c_invalid_sources IS
1970 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
1971 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
1972 FROM xla_seg_rule_details xsr
1973 ,xla_line_defn_adr_assgns xad
1974 ,xla_line_defn_jlt_assgns xjl
1975 WHERE xsr.application_id = xad.application_id
1976 AND xsr.amb_context_code = xad.amb_context_code
1977 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
1978 AND xsr.segment_rule_code = xad.segment_rule_code
1979 AND xsr.value_source_type_code = 'S'
1980 AND xad.application_id = xjl.application_id
1981 AND xad.amb_context_code = xjl.amb_context_code
1982 AND xad.line_definition_code = xjl.line_definition_code
1983 AND xad.event_class_code = xjl.event_class_code
1984 AND xad.event_type_code = xjl.event_type_code
1985 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
1986 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
1987 AND xad.accounting_line_code = xjl.accounting_line_code
1988 AND xad.segment_rule_code is not null
1989 AND xjl.application_id = p_application_id
1990 AND xjl.amb_context_code = p_amb_context_code
1991 AND xjl.event_class_code = p_event_class_code
1992 AND xjl.event_type_code = p_event_type_code
1993 AND xjl.line_definition_owner_code = p_line_definition_owner_code
1994 AND xjl.line_definition_code = p_line_definition_code
1995 AND xjl.active_flag = 'Y'
1996 AND NOT EXISTS
1997 (SELECT 'y'
1998 FROM xla_event_sources xes
1999 WHERE xes.source_application_id = xsr.value_source_application_id
2000 AND xes.source_type_code = xsr.value_source_type_code
2001 AND xes.source_code = xsr.value_source_code
2002 AND xes.application_id = xsr.application_id
2003 AND xes.event_class_code = p_event_class_code
2004 AND xes.active_flag = 'Y')
2005 UNION
2006 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2007 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
2008 FROM xla_seg_rule_details xsr
2009 ,xla_line_defn_adr_assgns xad
2010 ,xla_line_defn_jlt_assgns xjl
2011 WHERE xsr.application_id = xad.application_id
2012 AND xsr.amb_context_code = xad.amb_context_code
2013 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
2014 AND xsr.segment_rule_code = xad.segment_rule_code
2015 AND xsr.input_source_type_code = 'S'
2016 AND xad.application_id = xjl.application_id
2017 AND xad.amb_context_code = xjl.amb_context_code
2018 AND xad.line_definition_code = xjl.line_definition_code
2019 AND xad.event_class_code = xjl.event_class_code
2020 AND xad.event_type_code = xjl.event_type_code
2021 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
2022 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
2023 AND xad.accounting_line_code = xjl.accounting_line_code
2024 AND xad.segment_rule_code is not null
2025 AND xjl.application_id = p_application_id
2026 AND xjl.amb_context_code = p_amb_context_code
2027 AND xjl.event_class_code = p_event_class_code
2028 AND xjl.event_type_code = p_event_type_code
2029 AND xjl.line_definition_owner_code = p_line_definition_owner_code
2030 AND xjl.line_definition_code = p_line_definition_code
2031 AND xjl.active_flag = 'Y'
2032 AND NOT EXISTS
2033 (SELECT 'y'
2034 FROM xla_event_sources xes
2035 WHERE xes.source_application_id = xsr.input_source_application_id
2036 AND xes.source_type_code = xsr.input_source_type_code
2037 AND xes.source_code = xsr.input_source_code
2038 AND xes.application_id = xsr.application_id
2039 AND xes.event_class_code = p_event_class_code
2040 AND xes.active_flag = 'Y');
2041
2042 CURSOR c_der_sources IS
2043 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2044 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
2045 FROM xla_seg_rule_details xsr
2046 ,xla_line_defn_adr_assgns xad
2047 ,xla_line_defn_jlt_assgns xjl
2048 WHERE xsr.application_id = xad.application_id
2049 AND xsr.amb_context_code = xad.amb_context_code
2050 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
2051 AND xsr.segment_rule_code = xad.segment_rule_code
2052 AND xsr.value_source_type_code = 'D'
2053 AND xad.application_id = xjl.application_id
2054 AND xad.amb_context_code = xjl.amb_context_code
2055 AND xad.event_class_code = xjl.event_class_code
2056 AND xad.event_type_code = xjl.event_type_code
2057 AND xad.line_definition_code = xjl.line_definition_code
2058 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
2059 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
2060 AND xad.accounting_line_code = xjl.accounting_line_code
2061 AND xad.segment_rule_code is not null
2062 AND xjl.application_id = p_application_id
2063 AND xjl.amb_context_code = p_amb_context_code
2064 AND xjl.line_definition_owner_code = p_line_definition_owner_code
2065 AND xjl.line_definition_code = p_line_definition_code
2066 AND xjl.active_flag = 'Y'
2067 UNION
2068 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2069 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
2070 FROM xla_seg_rule_details xsr
2071 ,xla_line_defn_adr_assgns xad
2072 ,xla_line_defn_jlt_assgns xjl
2073 WHERE xsr.application_id = xad.application_id
2074 AND xsr.amb_context_code = xad.amb_context_code
2075 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
2076 AND xsr.segment_rule_code = xad.segment_rule_code
2077 AND xsr.input_source_type_code = 'D'
2078 AND xad.application_id = xjl.application_id
2079 AND xad.amb_context_code = xjl.amb_context_code
2080 AND xad.event_class_code = xjl.event_class_code
2081 AND xad.event_type_code = xjl.event_type_code
2082 AND xad.line_definition_code = xjl.line_definition_code
2083 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
2084 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
2085 AND xad.accounting_line_code = xjl.accounting_line_code
2086 AND xad.segment_rule_code is not null
2087 AND xjl.application_id = p_application_id
2088 AND xjl.amb_context_code = p_amb_context_code
2089 AND xjl.line_definition_owner_code = p_line_definition_owner_code
2090 AND xjl.line_definition_code = p_line_definition_code
2091 AND xjl.active_flag = 'Y';
2092
2093
2094 CURSOR c_child_adr IS
2095 SELECT distinct xsr.segment_rule_type_code, xsr.segment_rule_code,
2096 xsr.value_segment_rule_appl_id,
2097 xsr.value_segment_rule_type_code, xsr.value_segment_rule_code
2098 FROM xla_line_defn_jlt_assgns xjl
2099 ,xla_line_defn_adr_assgns xad
2100 ,xla_seg_rule_details xsr
2101 WHERE xsr.application_id = xad.application_id
2102 AND xsr.amb_context_code = xad.amb_context_code
2103 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
2104 AND xsr.segment_rule_code = xad.segment_rule_code
2105 AND xsr.value_type_code = 'A'
2106 AND xad.application_id = xjl.application_id
2107 AND xad.amb_context_code = xjl.amb_context_code
2108 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
2109 AND xad.line_definition_code = xjl.line_definition_code
2110 AND xad.event_class_code = xjl.event_class_code
2111 AND xad.event_type_code = xjl.event_type_code
2112 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
2113 AND xad.accounting_line_code = xjl.accounting_line_code
2114 AND xad.segment_rule_code is not null
2115 AND xjl.application_id = p_application_id
2116 AND xjl.amb_context_code = p_amb_context_code
2117 AND xjl.event_class_code = p_event_class_code
2118 AND xjl.event_type_code = p_event_type_code
2119 AND xjl.line_definition_owner_code = p_line_definition_owner_code
2120 AND xjl.line_definition_code = p_line_definition_code
2121 AND xjl.active_flag = 'Y';
2122
2123 l_child_adr c_child_adr%rowtype;
2124
2125 CURSOR c_invalid_child_sources IS
2126 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2127 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
2128 FROM xla_seg_rule_details xsr
2129 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
2130 AND xsr.amb_context_code = p_amb_context_code
2131 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
2132 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
2133 AND xsr.value_source_type_code = 'S'
2134 AND NOT EXISTS
2135 (SELECT 'y'
2136 FROM xla_event_sources xes
2137 WHERE xes.source_application_id = xsr.value_source_application_id
2138 AND xes.source_type_code = xsr.value_source_type_code
2139 AND xes.source_code = xsr.value_source_code
2140 AND xes.application_id = xsr.application_id
2141 AND xes.event_class_code = p_event_class_code
2142 AND xes.active_flag = 'Y')
2143 UNION
2144 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2145 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
2146 FROM xla_seg_rule_details xsr
2147 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
2148 AND xsr.amb_context_code = p_amb_context_code
2149 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
2150 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
2151 AND xsr.input_source_type_code = 'S'
2152 AND NOT EXISTS
2153 (SELECT 'y'
2154 FROM xla_event_sources xes
2155 WHERE xes.source_application_id = xsr.input_source_application_id
2156 AND xes.source_type_code = xsr.input_source_type_code
2157 AND xes.source_code = xsr.input_source_code
2158 AND xes.application_id = xsr.application_id
2159 AND xes.event_class_code = p_event_class_code
2160 AND xes.active_flag = 'Y');
2161
2162 CURSOR c_child_der_sources IS
2163 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2164 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
2165 FROM xla_seg_rule_details xsr
2166 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
2167 AND xsr.amb_context_code = p_amb_context_code
2168 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
2169 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
2170 AND xsr.value_source_type_code = 'D'
2171 UNION
2172 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
2173 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
2174 FROM xla_seg_rule_details xsr
2175 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
2176 AND xsr.amb_context_code = p_amb_context_code
2177 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
2178 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
2179 AND xsr.input_source_type_code = 'D';
2180
2181 l_return BOOLEAN;
2182 l_log_module VARCHAR2(240);
2183 BEGIN
2184 IF g_log_enabled THEN
2185 l_log_module := C_DEFAULT_MODULE||'.chk_adr_source_event_class';
2186 END IF;
2187
2188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2189 trace(p_msg => 'BEGIN of procedure chk_adr_source_event_class'
2190 ,p_module => l_log_module
2191 ,p_level => C_LEVEL_PROCEDURE);
2192 END IF;
2193
2194 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2195 trace(p_msg => 'application_id = '||p_application_id||
2196 ',amb_context_code = '||p_amb_context_code||
2197 ',event_class_code = '||p_event_class_code||
2198 ',event_type_code = '||p_event_type_code||
2199 ',line_definition_owner_code = '||p_line_definition_owner_code||
2200 ',line_definition_code = '||p_line_definition_code
2201 ,p_module => l_log_module
2202 ,p_level => C_LEVEL_STATEMENT);
2203 END IF;
2204
2205 l_return := TRUE;
2206
2207 --
2208 -- Check if any JLT does not have all required line accounting sources
2209 --
2210 FOR l_err IN c_invalid_sources LOOP
2211 l_return := FALSE;
2212
2213 xla_amb_setup_err_pkg.stack_error
2214 (p_message_name => 'XLA_AB_SR_UNASSN_SOURCE'
2215 ,p_message_type => 'E'
2216 ,p_message_category => 'SEG_RULE'
2217 ,p_category_sequence => 13
2218 ,p_application_id => p_application_id
2219 ,p_amb_context_code => p_amb_context_code
2220 ,p_event_class_code => p_event_class_code
2221 ,p_event_type_code => p_event_type_code
2222 ,p_line_definition_owner_code => p_line_definition_owner_code
2223 ,p_line_definition_code => p_line_definition_code
2224 ,p_segment_rule_type_code => l_err.segment_rule_type_code
2225 ,p_segment_rule_code => l_err.segment_rule_code
2226 ,p_source_type_code => l_err.source_type_code
2227 ,p_source_code => l_err.source_code);
2228 END LOOP;
2229
2230 FOR l_err IN c_der_sources LOOP
2231 IF xla_sources_pkg.derived_source_is_invalid
2232 (p_application_id => p_application_id
2233 ,p_derived_source_code => l_err.source_code
2234 ,p_derived_source_type_code => 'D'
2235 ,p_event_class_code => p_event_class_code
2236 ,p_level => 'L') = 'TRUE' THEN
2237
2238 l_return := FALSE;
2239 xla_amb_setup_err_pkg.stack_error
2240 (p_message_name => 'XLA_AB_SR_UNASSN_SOURCE'
2241 ,p_message_type => 'E'
2242 ,p_message_category => 'SEG_RULE'
2243 ,p_category_sequence => 13
2244 ,p_application_id => p_application_id
2245 ,p_amb_context_code => p_amb_context_code
2246 ,p_event_class_code => p_event_class_code
2247 ,p_event_type_code => p_event_type_code
2248 ,p_line_definition_owner_code => p_line_definition_owner_code
2249 ,p_line_definition_code => p_line_definition_code
2250 ,p_segment_rule_type_code => l_err.segment_rule_type_code
2251 ,p_segment_rule_code => l_err.segment_rule_code
2252 ,p_source_type_code => l_err.source_type_code
2253 ,p_source_code => l_err.source_code);
2254 END IF;
2255 END LOOP;
2256
2257
2258 OPEN c_child_adr;
2259 LOOP
2260 FETCH c_child_adr
2261 INTO l_child_adr;
2262 EXIT WHEN c_child_adr%notfound;
2263
2264 FOR l_err IN c_invalid_child_sources LOOP
2265 l_return := FALSE;
2266
2267 xla_amb_setup_err_pkg.stack_error
2268 (p_message_name => 'XLA_AB_SR_REF_RULE_DET'
2269 ,p_message_type => 'E'
2270 ,p_message_category => 'SEG_RULE'
2271 ,p_category_sequence => 13
2272 ,p_application_id => p_application_id
2273 ,p_amb_context_code => p_amb_context_code
2274 ,p_event_class_code => p_event_class_code
2275 ,p_event_type_code => p_event_type_code
2276 ,p_line_definition_owner_code => p_line_definition_owner_code
2277 ,p_line_definition_code => p_line_definition_code
2278 ,p_segment_rule_type_code => l_child_adr.segment_rule_type_code
2279 ,p_segment_rule_code => l_child_adr.segment_rule_code);
2280 END LOOP;
2281
2282 FOR l_err IN c_child_der_sources LOOP
2283 IF xla_sources_pkg.derived_source_is_invalid
2284 (p_application_id => p_application_id
2285 ,p_derived_source_code => l_err.source_code
2286 ,p_derived_source_type_code => 'D'
2287 ,p_event_class_code => p_event_class_code
2288 ,p_level => 'L') = 'TRUE' THEN
2289
2290 l_return := FALSE;
2291 xla_amb_setup_err_pkg.stack_error
2292 (p_message_name => 'XLA_AB_SR_REF_RULE_DET'
2293 ,p_message_type => 'E'
2294 ,p_message_category => 'SEG_RULE'
2295 ,p_category_sequence => 13
2296 ,p_application_id => p_application_id
2297 ,p_amb_context_code => p_amb_context_code
2298 ,p_event_class_code => p_event_class_code
2299 ,p_event_type_code => p_event_type_code
2300 ,p_line_definition_owner_code => p_line_definition_owner_code
2301 ,p_line_definition_code => p_line_definition_code
2302 ,p_segment_rule_type_code => l_child_adr.segment_rule_type_code
2303 ,p_segment_rule_code => l_child_adr.segment_rule_code);
2304 END IF;
2305 END LOOP;
2306 END LOOP;
2307 CLOSE c_child_adr;
2308
2309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2310 trace(p_msg => 'END of procedure chk_adr_source_event_class'
2311 ,p_module => l_log_module
2312 ,p_level => C_LEVEL_PROCEDURE);
2313 END IF;
2314
2315 RETURN l_return;
2316
2317 EXCEPTION
2318 WHEN xla_exceptions_pkg.application_exception THEN
2319 IF c_invalid_sources%ISOPEN THEN
2320 CLOSE c_invalid_sources;
2321 END IF;
2322 IF c_der_sources%ISOPEN THEN
2323 CLOSE c_der_sources;
2324 END IF;
2325 RAISE;
2326
2327 WHEN OTHERS THEN
2328 IF c_invalid_sources%ISOPEN THEN
2329 CLOSE c_invalid_sources;
2330 END IF;
2331 IF c_der_sources%ISOPEN THEN
2332 CLOSE c_der_sources;
2333 END IF;
2334 xla_exceptions_pkg.raise_message
2335 (p_location => 'xla_line_definitions_pvt.chk_adr_source_event_class');
2336
2337 END chk_adr_source_event_class;
2338
2339
2340 --=============================================================================
2341 --
2342 -- Name: validate_adr_assgns
2343 -- Description: Validate all ADR assigned to the JLT of the line definition
2344 -- is valid
2345 -- Return Value:
2346 -- TRUE - if all ADR assignments are valid
2347 -- FALSE - if any ADR assignment is invalid
2348 --
2349 --=============================================================================
2350 FUNCTION validate_adr_assgns
2351 (p_application_id IN NUMBER
2352 ,p_amb_context_code IN VARCHAR2
2353 ,p_event_class_code IN VARCHAR2
2354 ,p_event_type_code IN VARCHAR2
2355 ,p_line_definition_owner_code IN VARCHAR2
2356 ,p_line_definition_code IN VARCHAR2)
2357 RETURN BOOLEAN
2358 IS
2359 l_return BOOLEAN;
2360 l_log_module VARCHAR2(240);
2361 BEGIN
2362 IF g_log_enabled THEN
2363 l_log_module := C_DEFAULT_MODULE||'.validate_adr_assgns';
2364 END IF;
2365
2366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2367 trace(p_msg => 'BEGIN of procedure validate_adr_assgns'
2368 ,p_module => l_log_module
2369 ,p_level => C_LEVEL_PROCEDURE);
2370 END IF;
2371
2372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2373 trace(p_msg => 'application_id = '||p_application_id||
2374 ',amb_context_code = '||p_amb_context_code||
2375 ',event_class_code = '||p_event_class_code||
2376 ',event_type_code = '||p_event_type_code||
2377 ',line_definition_owner_code = '||p_line_definition_owner_code||
2378 ',line_definition_code = '||p_line_definition_code
2379 ,p_module => l_log_module
2380 ,p_level => C_LEVEL_STATEMENT);
2381 END IF;
2382
2383 l_return := TRUE;
2384
2385 l_return :=chk_adr_side_is_valid
2386 (p_application_id => p_application_id
2387 ,p_amb_context_code => p_amb_context_code
2388 ,p_event_class_code => p_event_class_code
2389 ,p_event_type_code => p_event_type_code
2390 ,p_line_definition_owner_code => p_line_definition_owner_code
2391 ,p_line_definition_code => p_line_definition_code)
2392 AND l_return;
2393
2394 l_return := chk_adr_assgns_is_complete
2395 (p_application_id => p_application_id
2396 ,p_amb_context_code => p_amb_context_code
2397 ,p_event_class_code => p_event_class_code
2398 ,p_event_type_code => p_event_type_code
2399 ,p_line_definition_owner_code => p_line_definition_owner_code
2400 ,p_line_definition_code => p_line_definition_code)
2401 AND l_return;
2402
2403 l_return := chk_adr_is_enabled
2404 (p_application_id => p_application_id
2405 ,p_amb_context_code => p_amb_context_code
2406 ,p_event_class_code => p_event_class_code
2407 ,p_event_type_code => p_event_type_code
2408 ,p_line_definition_owner_code => p_line_definition_owner_code
2409 ,p_line_definition_code => p_line_definition_code)
2410 AND l_return;
2411
2412 l_return := chk_adr_has_details
2413 (p_application_id => p_application_id
2414 ,p_amb_context_code => p_amb_context_code
2415 ,p_event_class_code => p_event_class_code
2416 ,p_event_type_code => p_event_type_code
2417 ,p_line_definition_owner_code => p_line_definition_owner_code
2418 ,p_line_definition_code => p_line_definition_code)
2419 AND l_return;
2420
2421 l_return := chk_adr_invalid_source_in_cond
2422 (p_application_id => p_application_id
2423 ,p_amb_context_code => p_amb_context_code
2424 ,p_event_class_code => p_event_class_code
2425 ,p_event_type_code => p_event_type_code
2426 ,p_line_definition_owner_code => p_line_definition_owner_code
2427 ,p_line_definition_code => p_line_definition_code)
2428 AND l_return;
2429
2430 l_return := chk_adr_source_event_class
2431 (p_application_id => p_application_id
2432 ,p_amb_context_code => p_amb_context_code
2433 ,p_event_class_code => p_event_class_code
2434 ,p_event_type_code => p_event_type_code
2435 ,p_line_definition_owner_code => p_line_definition_owner_code
2436 ,p_line_definition_code => p_line_definition_code)
2437 AND l_return;
2438
2439 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2440 trace(p_msg => 'END of procedure validate_adr_assgns'
2441 ,p_module => l_log_module
2442 ,p_level => C_LEVEL_PROCEDURE);
2443 END IF;
2444
2445 RETURN l_return;
2446
2447 EXCEPTION
2448 WHEN xla_exceptions_pkg.application_exception THEN
2449 RAISE;
2450 WHEN OTHERS THEN
2451 xla_exceptions_pkg.raise_message
2452 (p_location => 'xla_line_definitions_pvt.validate_adr_assgns');
2453 END validate_adr_assgns;
2454
2455
2456 --=============================================================================
2457 --
2458 -- Name: chk_jlt_exists
2459 -- Description: Check if at least one active JLT is assigned to the line definition
2460 --
2461 --=============================================================================
2462 FUNCTION chk_jlt_exists
2463 (p_application_id IN NUMBER
2464 ,p_amb_context_code IN VARCHAR2
2465 ,p_event_class_code IN VARCHAR2
2466 ,p_event_type_code IN VARCHAR2
2467 ,p_line_definition_owner_code IN VARCHAR2
2468 ,p_line_definition_code IN VARCHAR2)
2469 RETURN BOOLEAN
2470 IS
2471 --
2472 -- Get any JLT assignment that has a disabled JLT
2473 --
2474 CURSOR c_active_line_assgns IS
2475 SELECT 'X'
2476 FROM xla_line_defn_jlt_assgns xld
2477 WHERE xld.application_id = p_application_id
2478 AND xld.amb_context_code = p_amb_context_code
2479 AND xld.event_class_code = p_event_class_code
2480 AND xld.event_type_code = p_event_type_code
2481 AND xld.line_definition_owner_code = p_line_definition_owner_code
2482 AND xld.line_definition_code = p_line_definition_code
2483 AND xld.active_flag = 'Y';
2484
2485 l_return BOOLEAN;
2486 l_exists VARCHAR2(1);
2487 l_log_module VARCHAR2(240);
2488 BEGIN
2489 IF g_log_enabled THEN
2490 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_exists';
2491 END IF;
2492
2493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2494 trace(p_msg => 'BEGIN of procedure chk_jlt_exists'
2495 ,p_module => l_log_module
2496 ,p_level => C_LEVEL_PROCEDURE);
2497 END IF;
2498
2499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2500 trace(p_msg => 'application_id = '||p_application_id||
2501 ',amb_context_code = '||p_amb_context_code||
2502 ',event_class_code = '||p_event_class_code||
2503 ',event_type_code = '||p_event_type_code||
2504 ',line_definition_owner_code = '||p_line_definition_owner_code||
2505 ',line_definition_code = '||p_line_definition_code
2506 ,p_module => l_log_module
2507 ,p_level => C_LEVEL_STATEMENT);
2508 END IF;
2509
2510 l_return := TRUE;
2511
2512 --
2513 -- Check if at least one active JLT is assigned to the line definition
2514 --
2515 OPEN c_active_line_assgns;
2516 FETCH c_active_line_assgns INTO l_exists;
2517 IF (c_active_line_assgns%NOTFOUND) THEN
2518 l_return := FALSE;
2519
2520 xla_amb_setup_err_pkg.stack_error
2521 (p_message_name => 'XLA_AB_LESS_LINE_TYPES_JLD'
2522 ,p_message_type => 'E'
2523 ,p_message_category => 'LINE_ASSIGNMENT'
2524 ,p_category_sequence => 9
2525 ,p_application_id => p_application_id
2526 ,p_amb_context_code => p_amb_context_code
2527 ,p_event_class_code => p_event_class_code
2528 ,p_event_type_code => p_event_type_code
2529 ,p_line_definition_owner_code => p_line_definition_owner_code
2530 ,p_line_definition_code => p_line_definition_code);
2531 END IF;
2532 CLOSE c_active_line_assgns;
2533
2534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2535 trace(p_msg => 'END of procedure chk_jlt_exists'
2536 ,p_module => l_log_module
2537 ,p_level => C_LEVEL_PROCEDURE);
2538 END IF;
2539
2540 RETURN l_return;
2541
2542 EXCEPTION
2543 WHEN xla_exceptions_pkg.application_exception THEN
2544 IF (c_active_line_assgns%ISOPEN) THEN
2545 CLOSE c_active_line_assgns;
2546 END IF;
2547 RAISE;
2548
2549 WHEN OTHERS THEN
2550 IF (c_active_line_assgns%ISOPEN) THEN
2551 CLOSE c_active_line_assgns;
2552 END IF;
2553 xla_exceptions_pkg.raise_message
2554 (p_location => 'xla_line_definitions_pvt.chk_jlt_exists');
2555 END chk_jlt_exists;
2556
2557 --=============================================================================
2558 --
2559 -- Name: chk_jlt_is_enabled
2560 -- Description: Check if all JLT assigned to the line definition is enabled
2561 --
2562 --=============================================================================
2563 FUNCTION chk_jlt_is_enabled
2564 (p_application_id IN NUMBER
2565 ,p_amb_context_code IN VARCHAR2
2566 ,p_event_class_code IN VARCHAR2
2567 ,p_event_type_code IN VARCHAR2
2568 ,p_line_definition_owner_code IN VARCHAR2
2569 ,p_line_definition_code IN VARCHAR2)
2570 RETURN BOOLEAN
2571 IS
2572 --
2573 -- Get any JLT assignment that has a disabled JLT
2574 --
2575 CURSOR c_invalid_jlt IS
2576 SELECT distinct event_class_code, event_type_code,
2577 accounting_line_type_code, accounting_line_code
2578 FROM xla_line_defn_jlt_assgns xld
2579 WHERE xld.application_id = p_application_id
2580 AND xld.amb_context_code = p_amb_context_code
2581 AND xld.event_class_code = p_event_class_code
2582 AND xld.event_type_code = p_event_type_code
2583 AND xld.line_definition_owner_code = p_line_definition_owner_code
2584 AND xld.line_definition_code = p_line_definition_code
2585 AND xld.active_flag = 'Y'
2586 AND NOT EXISTS
2587 (SELECT 'y'
2588 FROM xla_acct_line_types_b xal
2589 WHERE xal.application_id = xld.application_id
2590 AND xal.amb_context_code = xld.amb_context_code
2591 AND xal.event_class_code = xld.event_class_code
2592 AND xal.accounting_line_type_code = xld.accounting_line_type_code
2593 AND xal.accounting_line_code = xld.accounting_line_code
2594 AND xal.enabled_flag = 'Y');
2595
2596 l_return BOOLEAN;
2597 l_log_module VARCHAR2(240);
2598 BEGIN
2599 IF g_log_enabled THEN
2600 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_is_enabled';
2601 END IF;
2602
2603 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2604 trace(p_msg => 'BEGIN of procedure chk_jlt_is_enabled'
2605 ,p_module => l_log_module
2606 ,p_level => C_LEVEL_PROCEDURE);
2607 END IF;
2608
2609 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2610 trace(p_msg => 'application_id = '||p_application_id||
2611 ',amb_context_code = '||p_amb_context_code||
2612 ',event_class_code = '||p_event_class_code||
2613 ',event_type_code = '||p_event_type_code||
2614 ',line_definition_owner_code = '||p_line_definition_owner_code||
2615 ',line_definition_code = '||p_line_definition_code
2616 ,p_module => l_log_module
2617 ,p_level => C_LEVEL_STATEMENT);
2618 END IF;
2619
2620 l_return := TRUE;
2621
2622 --
2623 -- Check if any disabled JLT is assigned to the line definition
2624 --
2625 FOR l_err IN c_invalid_jlt LOOP
2626 l_return := FALSE;
2627
2628 xla_amb_setup_err_pkg.stack_error
2629 (p_message_name => 'XLA_AB_DISABLD_LINE_TYPE'
2630 ,p_message_type => 'E'
2631 ,p_message_category => 'LINE_TYPE'
2632 ,p_category_sequence => 10
2633 ,p_application_id => p_application_id
2634 ,p_amb_context_code => p_amb_context_code
2635 ,p_event_class_code => p_event_class_code
2636 ,p_event_type_code => p_event_type_code
2637 ,p_line_definition_owner_code => p_line_definition_owner_code
2638 ,p_line_definition_code => p_line_definition_code
2639 ,p_accounting_line_type_code => l_err.accounting_line_type_code
2640 ,p_accounting_line_code => l_err.accounting_line_code);
2641 END LOOP;
2642
2643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2644 trace(p_msg => 'END of procedure chk_jlt_is_enabled'
2645 ,p_module => l_log_module
2646 ,p_level => C_LEVEL_PROCEDURE);
2647 END IF;
2648
2649 RETURN l_return;
2650
2651 EXCEPTION
2652 WHEN xla_exceptions_pkg.application_exception THEN
2653 IF (c_invalid_jlt%ISOPEN) THEN
2654 CLOSE c_invalid_jlt;
2655 END IF;
2656 RAISE;
2657
2658 WHEN OTHERS THEN
2659 IF (c_invalid_jlt%ISOPEN) THEN
2660 CLOSE c_invalid_jlt;
2661 END IF;
2662 xla_exceptions_pkg.raise_message
2663 (p_location => 'xla_line_definitions_pvt.chk_jlt_is_enabled');
2664 END chk_jlt_is_enabled;
2665
2666 --=============================================================================
2667 --
2668 -- Name: chk_jlt_encum_type_exists
2669 -- Description: Check if all encumbrance type of the JLTs assigned to the
2670 -- line definition contain encumrbance type id
2671 --
2672 --=============================================================================
2673 FUNCTION chk_jlt_encum_type_exists
2674 (p_application_id IN NUMBER
2675 ,p_amb_context_code IN VARCHAR2
2676 ,p_event_class_code IN VARCHAR2
2677 ,p_event_type_code IN VARCHAR2
2678 ,p_line_definition_owner_code IN VARCHAR2
2679 ,p_line_definition_code IN VARCHAR2)
2680 RETURN BOOLEAN
2681 IS
2682 --
2683 -- Get any encumbrance JLT that doesn't have an encumbrance
2684 --
2685 CURSOR c_invalid_jlt IS
2686 SELECT distinct xld.event_class_code, xld.event_type_code,
2687 xld.accounting_line_type_code, xld.accounting_line_code
2688 FROM xla_line_defn_jlt_assgns xld
2689 , xla_acct_line_types_b xal
2690 WHERE xal.application_id = xld.application_id
2691 AND xal.amb_context_code = xld.amb_context_code
2692 AND xal.event_class_code = xld.event_class_code
2693 AND xal.accounting_line_type_code = xld.accounting_line_type_code
2694 AND xal.accounting_line_code = xld.accounting_line_code
2695 AND xal.enabled_flag = 'Y'
2696 AND xal.accounting_entry_type_code = 'E'
2697 AND NVL(xal.business_method_code,'NONE') <> 'PRIOR_ENTRY'
2698 AND xal.encumbrance_type_id IS NULL
2699 AND xld.application_id = p_application_id
2700 AND xld.amb_context_code = p_amb_context_code
2701 AND xld.event_class_code = p_event_class_code
2702 AND xld.event_type_code = p_event_type_code
2703 AND xld.line_definition_owner_code = p_line_definition_owner_code
2704 AND xld.line_definition_code = p_line_definition_code
2705 AND xld.active_flag = 'Y';
2706
2707 l_return BOOLEAN;
2708 l_log_module VARCHAR2(240);
2709 BEGIN
2710 IF g_log_enabled THEN
2711 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_encum_type_exists';
2712 END IF;
2713
2714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2715 trace(p_msg => 'BEGIN of procedure chk_jlt_encum_type_exists'
2716 ,p_module => l_log_module
2717 ,p_level => C_LEVEL_PROCEDURE);
2718 END IF;
2719
2720 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2721 trace(p_msg => 'application_id = '||p_application_id||
2722 ',amb_context_code = '||p_amb_context_code||
2723 ',event_class_code = '||p_event_class_code||
2724 ',event_type_code = '||p_event_type_code||
2725 ',line_definition_owner_code = '||p_line_definition_owner_code||
2726 ',line_definition_code = '||p_line_definition_code
2727 ,p_module => l_log_module
2728 ,p_level => C_LEVEL_STATEMENT);
2729 END IF;
2730
2731 l_return := TRUE;
2732
2733 --
2734 -- Check if any disabled JLT is assigned to the line definition
2735 --
2736 FOR l_err IN c_invalid_jlt LOOP
2737 l_return := FALSE;
2738
2739 xla_amb_setup_err_pkg.stack_error
2740 (p_message_name => 'XLA_AB_INVALID_NO_ENCUM_TYPE'
2741 ,p_message_type => 'E'
2742 ,p_message_category => 'LINE_TYPE'
2743 ,p_category_sequence => 10
2744 ,p_application_id => p_application_id
2745 ,p_amb_context_code => p_amb_context_code
2746 ,p_event_class_code => p_event_class_code
2747 ,p_event_type_code => p_event_type_code
2748 ,p_line_definition_owner_code => p_line_definition_owner_code
2749 ,p_line_definition_code => p_line_definition_code
2750 ,p_accounting_line_type_code => l_err.accounting_line_type_code
2751 ,p_accounting_line_code => l_err.accounting_line_code);
2752 END LOOP;
2753
2754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2755 trace(p_msg => 'END of procedure chk_jlt_encum_type_exists'
2756 ,p_module => l_log_module
2757 ,p_level => C_LEVEL_PROCEDURE);
2758 END IF;
2759
2760 RETURN l_return;
2761
2762 EXCEPTION
2763 WHEN xla_exceptions_pkg.application_exception THEN
2764 IF (c_invalid_jlt%ISOPEN) THEN
2765 CLOSE c_invalid_jlt;
2766 END IF;
2767 RAISE;
2768
2769 WHEN OTHERS THEN
2770 IF (c_invalid_jlt%ISOPEN) THEN
2771 CLOSE c_invalid_jlt;
2772 END IF;
2773 xla_exceptions_pkg.raise_message
2774 (p_location => 'xla_line_definitions_pvt.chk_jlt_encum_type_exists');
2775 END chk_jlt_encum_type_exists;
2776
2777 --=============================================================================
2778 --
2779 -- Name: chk_jlt_acct_class_exists
2780 -- Description: Check if all accounting class of the JLTs assigned to the
2781 -- line definition are enabled
2782 --
2783 --=============================================================================
2784 FUNCTION chk_jlt_acct_class_exists
2785 (p_application_id IN NUMBER
2786 ,p_amb_context_code IN VARCHAR2
2787 ,p_event_class_code IN VARCHAR2
2788 ,p_event_type_code IN VARCHAR2
2789 ,p_line_definition_owner_code IN VARCHAR2
2790 ,p_line_definition_code IN VARCHAR2)
2791 RETURN BOOLEAN
2792 IS
2793 --
2794 -- Get any JLT that the accounting class does not exist in the lookup
2795 --
2796 CURSOR c_invalid_jlt IS
2797 SELECT distinct xld.event_class_code, xld.event_type_code,
2798 xld.accounting_line_type_code, xld.accounting_line_code
2799 FROM xla_line_defn_jlt_assgns xld
2800 , xla_acct_line_types_b xal
2801 WHERE xal.application_id = xld.application_id
2802 AND xal.amb_context_code = xld.amb_context_code
2803 AND xal.event_class_code = xld.event_class_code
2804 AND xal.accounting_line_type_code = xld.accounting_line_type_code
2805 AND xal.accounting_line_code = xld.accounting_line_code
2806 AND xal.enabled_flag = 'Y'
2807 AND xld.application_id = p_application_id
2808 AND xld.amb_context_code = p_amb_context_code
2809 AND xld.event_class_code = p_event_class_code
2810 AND xld.event_type_code = p_event_type_code
2811 AND xld.line_definition_owner_code = p_line_definition_owner_code
2812 AND xld.line_definition_code = p_line_definition_code
2813 AND xld.active_flag = 'Y'
2814 AND NOT EXISTS
2815 (SELECT 'y'
2816 FROM xla_lookups xlk
2817 WHERE xlk.lookup_type = 'XLA_ACCOUNTING_CLASS'
2818 AND xlk.lookup_code = xal.accounting_class_code);
2819
2820 l_return BOOLEAN;
2821 l_log_module VARCHAR2(240);
2822 BEGIN
2823 IF g_log_enabled THEN
2824 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_acct_class_exists';
2825 END IF;
2826
2827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2828 trace(p_msg => 'BEGIN of procedure chk_jlt_acct_class_exists'
2829 ,p_module => l_log_module
2830 ,p_level => C_LEVEL_PROCEDURE);
2831 END IF;
2832
2833 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2834 trace(p_msg => 'application_id = '||p_application_id||
2835 ',amb_context_code = '||p_amb_context_code||
2836 ',event_class_code = '||p_event_class_code||
2837 ',event_type_code = '||p_event_type_code||
2838 ',line_definition_owner_code = '||p_line_definition_owner_code||
2839 ',line_definition_code = '||p_line_definition_code
2840 ,p_module => l_log_module
2841 ,p_level => C_LEVEL_STATEMENT);
2842 END IF;
2843
2844 l_return := TRUE;
2845
2846 --
2847 -- Check if any disabled JLT is assigned to the line definition
2848 --
2849 FOR l_err IN c_invalid_jlt LOOP
2850 l_return := FALSE;
2851
2852 xla_amb_setup_err_pkg.stack_error
2853 (p_message_name => 'XLA_AB_INVALID_ACCT_CLASS'
2854 ,p_message_type => 'E'
2855 ,p_message_category => 'LINE_TYPE'
2856 ,p_category_sequence => 10
2857 ,p_application_id => p_application_id
2858 ,p_amb_context_code => p_amb_context_code
2859 ,p_event_class_code => p_event_class_code
2860 ,p_event_type_code => p_event_type_code
2861 ,p_line_definition_owner_code => p_line_definition_owner_code
2862 ,p_line_definition_code => p_line_definition_code
2863 ,p_accounting_line_type_code => l_err.accounting_line_type_code
2864 ,p_accounting_line_code => l_err.accounting_line_code);
2865 END LOOP;
2866
2867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2868 trace(p_msg => 'END of procedure chk_jlt_acct_class_exists'
2869 ,p_module => l_log_module
2870 ,p_level => C_LEVEL_PROCEDURE);
2871 END IF;
2872
2873 RETURN l_return;
2874
2875 EXCEPTION
2876 WHEN xla_exceptions_pkg.application_exception THEN
2877 IF (c_invalid_jlt%ISOPEN) THEN
2878 CLOSE c_invalid_jlt;
2879 END IF;
2880 RAISE;
2881
2882 WHEN OTHERS THEN
2883 IF (c_invalid_jlt%ISOPEN) THEN
2884 CLOSE c_invalid_jlt;
2885 END IF;
2886 xla_exceptions_pkg.raise_message
2887 (p_location => 'xla_line_definitions_pvt.chk_jlt_acct_class_exists');
2888 END chk_jlt_acct_class_exists;
2889
2890 --=============================================================================
2891 --
2892 -- Name: chk_jlt_rounding_class_exists
2893 -- Description: Check if all rounding class of the JLTs assigned to the
2894 -- line definition are enabled
2895 --
2896 --=============================================================================
2897 FUNCTION chk_jlt_rounding_class_exists
2898 (p_application_id IN NUMBER
2899 ,p_amb_context_code IN VARCHAR2
2900 ,p_event_class_code IN VARCHAR2
2901 ,p_event_type_code IN VARCHAR2
2902 ,p_line_definition_owner_code IN VARCHAR2
2903 ,p_line_definition_code IN VARCHAR2)
2904 RETURN BOOLEAN
2905 IS
2906 --
2907 -- Get any JLT where its rounding class does not exist in the lookup
2908 --
2909 CURSOR c_invalid_jlt IS
2910 SELECT distinct xld.event_class_code, xld.event_type_code,
2911 xld.accounting_line_type_code, xld.accounting_line_code
2912 FROM xla_line_defn_jlt_assgns xld
2913 , xla_acct_line_types_b xal
2914 WHERE xal.application_id = xld.application_id
2915 AND xal.amb_context_code = xld.amb_context_code
2916 AND xal.event_class_code = xld.event_class_code
2917 AND xal.accounting_line_type_code = xld.accounting_line_type_code
2918 AND xal.accounting_line_code = xld.accounting_line_code
2919 AND xal.enabled_flag = 'Y'
2920 AND xld.application_id = p_application_id
2921 AND xld.amb_context_code = p_amb_context_code
2922 AND xld.event_class_code = p_event_class_code
2923 AND xld.event_type_code = p_event_type_code
2924 AND xld.line_definition_owner_code = p_line_definition_owner_code
2925 AND xld.line_definition_code = p_line_definition_code
2926 AND xld.active_flag = 'Y'
2927 AND NOT EXISTS
2928 (SELECT 'y'
2929 FROM xla_lookups xlk
2930 WHERE xlk.lookup_type = 'XLA_ACCOUNTING_CLASS'
2931 AND xlk.lookup_code = xal.rounding_class_code);
2932
2933 l_return BOOLEAN;
2934 l_log_module VARCHAR2(240);
2935 BEGIN
2936 IF g_log_enabled THEN
2937 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_rounding_class_exists';
2938 END IF;
2939
2940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2941 trace(p_msg => 'BEGIN of procedure chk_jlt_rounding_class_exists'
2942 ,p_module => l_log_module
2943 ,p_level => C_LEVEL_PROCEDURE);
2944 END IF;
2945
2946 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2947 trace(p_msg => 'application_id = '||p_application_id||
2948 ',amb_context_code = '||p_amb_context_code||
2949 ',event_class_code = '||p_event_class_code||
2950 ',event_type_code = '||p_event_type_code||
2951 ',line_definition_owner_code = '||p_line_definition_owner_code||
2952 ',line_definition_code = '||p_line_definition_code
2953 ,p_module => l_log_module
2954 ,p_level => C_LEVEL_STATEMENT);
2955 END IF;
2956
2957 l_return := TRUE;
2958
2959 --
2960 -- Check if any disabled JLT is assigned to the line definition
2961 --
2962 FOR l_err IN c_invalid_jlt LOOP
2963 l_return := FALSE;
2964
2965 xla_amb_setup_err_pkg.stack_error
2966 (p_message_name => 'XLA_AB_INVALID_ROUNDING_CLASS'
2967 ,p_message_type => 'E'
2968 ,p_message_category => 'LINE_TYPE'
2969 ,p_category_sequence => 10
2970 ,p_application_id => p_application_id
2971 ,p_amb_context_code => p_amb_context_code
2972 ,p_event_class_code => p_event_class_code
2973 ,p_event_type_code => p_event_type_code
2974 ,p_line_definition_owner_code => p_line_definition_owner_code
2975 ,p_line_definition_code => p_line_definition_code
2976 ,p_accounting_line_type_code => l_err.accounting_line_type_code
2977 ,p_accounting_line_code => l_err.accounting_line_code);
2978 END LOOP;
2979
2980 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2981 trace(p_msg => 'END of procedure chk_jlt_rounding_class_exists'
2982 ,p_module => l_log_module
2983 ,p_level => C_LEVEL_PROCEDURE);
2984 END IF;
2985
2986 RETURN l_return;
2987
2988 EXCEPTION
2989 WHEN xla_exceptions_pkg.application_exception THEN
2990 IF (c_invalid_jlt%ISOPEN) THEN
2991 CLOSE c_invalid_jlt;
2992 END IF;
2993 RAISE;
2994
2995 WHEN OTHERS THEN
2996 IF (c_invalid_jlt%ISOPEN) THEN
2997 CLOSE c_invalid_jlt;
2998 END IF;
2999 xla_exceptions_pkg.raise_message
3000 (p_location => 'xla_line_definitions_pvt.chk_jlt_rounding_class_exists');
3001 END chk_jlt_rounding_class_exists;
3002
3003 --=============================================================================
3004 --
3005 -- Name: chk_jlt_bflow_class_exists
3006 -- Description: Check if all business flow class of the JLTs assigned to the
3007 -- line definition are enabled
3008 --
3009 --=============================================================================
3010 FUNCTION chk_jlt_bflow_class_exists
3011 (p_application_id IN NUMBER
3012 ,p_amb_context_code IN VARCHAR2
3013 ,p_event_class_code IN VARCHAR2
3014 ,p_event_type_code IN VARCHAR2
3015 ,p_line_definition_owner_code IN VARCHAR2
3016 ,p_line_definition_code IN VARCHAR2)
3017 RETURN BOOLEAN
3018 IS
3019 --
3020 -- Get any JLT that's business flow class does not exists in the lookup
3021 --
3022 CURSOR c_invalid_jlt IS
3023 SELECT distinct xld.event_class_code, xld.event_type_code,
3024 xld.accounting_line_type_code, xld.accounting_line_code
3025 FROM xla_line_defn_jlt_assgns xld
3026 , xla_acct_line_types_b xal
3027 WHERE xal.application_id = xld.application_id
3028 AND xal.amb_context_code = xld.amb_context_code
3029 AND xal.event_class_code = xld.event_class_code
3030 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3031 AND xal.accounting_line_code = xld.accounting_line_code
3032 AND xal.enabled_flag = 'Y'
3033 AND xal.business_class_code IS NOT NULL
3034 AND xld.application_id = p_application_id
3035 AND xld.amb_context_code = p_amb_context_code
3036 AND xld.event_class_code = p_event_class_code
3037 AND xld.event_type_code = p_event_type_code
3038 AND xld.line_definition_owner_code = p_line_definition_owner_code
3039 AND xld.line_definition_code = p_line_definition_code
3040 AND xld.active_flag = 'Y'
3041 AND NOT EXISTS
3042 (SELECT 'y'
3043 FROM xla_lookups xlk
3044 WHERE xlk.lookup_type = 'XLA_BUSINESS_FLOW_CLASS'
3045 AND xlk.lookup_code = xal.business_class_code);
3046
3047 l_return BOOLEAN;
3048 l_log_module VARCHAR2(240);
3049 BEGIN
3050 IF g_log_enabled THEN
3051 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_bflow_class_exists';
3052 END IF;
3053
3054 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3055 trace(p_msg => 'BEGIN of procedure chk_jlt_bflow_class_exists'
3056 ,p_module => l_log_module
3057 ,p_level => C_LEVEL_PROCEDURE);
3058 END IF;
3059
3060 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3061 trace(p_msg => 'application_id = '||p_application_id||
3062 ',amb_context_code = '||p_amb_context_code||
3063 ',event_class_code = '||p_event_class_code||
3064 ',event_type_code = '||p_event_type_code||
3065 ',line_definition_owner_code = '||p_line_definition_owner_code||
3066 ',line_definition_code = '||p_line_definition_code
3067 ,p_module => l_log_module
3068 ,p_level => C_LEVEL_STATEMENT);
3069 END IF;
3070
3071 l_return := TRUE;
3072
3073 --
3074 -- Check if any disabled JLT is assigned to the line definition
3075 --
3076 FOR l_err IN c_invalid_jlt LOOP
3077 l_return := FALSE;
3078
3079 xla_amb_setup_err_pkg.stack_error
3080 (p_message_name => 'XLA_AB_INVALID_BFLOW_CLASS'
3081 ,p_message_type => 'E'
3082 ,p_message_category => 'LINE_TYPE'
3083 ,p_category_sequence => 10
3084 ,p_application_id => p_application_id
3085 ,p_amb_context_code => p_amb_context_code
3086 ,p_event_class_code => p_event_class_code
3087 ,p_event_type_code => p_event_type_code
3088 ,p_line_definition_owner_code => p_line_definition_owner_code
3089 ,p_line_definition_code => p_line_definition_code
3090 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3091 ,p_accounting_line_code => l_err.accounting_line_code);
3092 END LOOP;
3093
3094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3095 trace(p_msg => 'END of procedure chk_jlt_bflow_class_exists'
3096 ,p_module => l_log_module
3097 ,p_level => C_LEVEL_PROCEDURE);
3098 END IF;
3099
3100 RETURN l_return;
3101
3102 EXCEPTION
3103 WHEN xla_exceptions_pkg.application_exception THEN
3104 IF (c_invalid_jlt%ISOPEN) THEN
3105 CLOSE c_invalid_jlt;
3106 END IF;
3107 RAISE;
3108
3109 WHEN OTHERS THEN
3110 IF (c_invalid_jlt%ISOPEN) THEN
3111 CLOSE c_invalid_jlt;
3112 END IF;
3113 xla_exceptions_pkg.raise_message
3114 (p_location => 'xla_line_definitions_pvt.chk_jlt_bflow_class_exists');
3115 END chk_jlt_bflow_class_exists;
3116
3117 --=============================================================================
3118 --
3119 -- Name: chk_jlt_business_class
3120 -- Description: Check if all JLT assignments has correct business class
3121 --
3122 --=============================================================================
3123 FUNCTION chk_jlt_business_class
3124 (p_application_id IN NUMBER
3125 ,p_amb_context_code IN VARCHAR2
3126 ,p_event_class_code IN VARCHAR2
3127 ,p_event_type_code IN VARCHAR2
3128 ,p_line_definition_owner_code IN VARCHAR2
3129 ,p_line_definition_code IN VARCHAR2)
3130 RETURN BOOLEAN
3131 IS
3132 --
3133 -- Get any JLT assignment that has a business flow method of 'NONE'
3134 -- and have inherit_desc_flag set to 'Y'
3135 --
3136 CURSOR c_invalid_jlt IS
3137 SELECT distinct event_class_code, event_type_code,
3138 accounting_line_type_code, accounting_line_code
3139 FROM xla_line_defn_jlt_assgns xld
3140 WHERE xld.application_id = p_application_id
3141 AND xld.amb_context_code = p_amb_context_code
3142 AND xld.event_class_code = p_event_class_code
3143 AND xld.event_type_code = p_event_type_code
3144 AND xld.line_definition_owner_code = p_line_definition_owner_code
3145 AND xld.line_definition_code = p_line_definition_code
3146 AND xld.inherit_desc_flag = 'Y'
3147 AND EXISTS
3148 (SELECT 'y'
3149 FROM xla_acct_line_types_b xal
3150 WHERE xal.application_id = xld.application_id
3151 AND xal.amb_context_code = xld.amb_context_code
3152 AND xal.event_class_code = xld.event_class_code
3153 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3154 AND xal.accounting_line_code = xld.accounting_line_code
3155 AND xal.business_method_code = 'NONE');
3156
3157 --
3158 -- Bug 4922099
3159 -- NOTE: ADR's can be attached to Business Flow JLTs, hence following validation needs to be removed.
3160 --
3161
3162 /*
3163 --
3164 -- Get any JLT assignment that has a business flow method of 'PRIOR_ENTRY'
3165 -- and has ADRs assigned to it.
3166 --
3167 CURSOR c_pe_adr_jlt IS
3168 SELECT distinct xld.event_class_code, xld.event_type_code,
3169 xld.accounting_line_type_code, xld.accounting_line_code
3170 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b xal
3171 WHERE xld.application_id = p_application_id
3172 AND xld.amb_context_code = p_amb_context_code
3173 AND xld.event_class_code = p_event_class_code
3174 AND xld.event_type_code = p_event_type_code
3175 AND xld.line_definition_owner_code = p_line_definition_owner_code
3176 AND xld.line_definition_code = p_line_definition_code
3177 AND xal.application_id = xld.application_id
3178 AND xal.amb_context_code = xld.amb_context_code
3179 AND xal.event_class_code = xld.event_class_code
3180 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3181 AND xal.accounting_line_code = xld.accounting_line_code
3182 AND xal.business_method_code = 'PRIOR_ENTRY'
3183 AND EXISTS
3184 (SELECT 'y'
3185 FROM xla_line_defn_adr_assgns adr
3186 WHERE adr.application_id = xld.application_id
3187 AND adr.amb_context_code = xld.amb_context_code
3188 AND adr.event_class_code = xld.event_class_code
3189 AND adr.event_type_code = xld.event_type_code
3190 AND adr.line_definition_owner_code = xld.line_definition_owner_code
3191 AND adr.line_definition_code = xld.line_definition_code
3192 AND adr.accounting_line_type_code = xld.accounting_line_type_code
3193 AND adr.accounting_line_code = xld.accounting_line_code);
3194 */
3195
3196 --
3197 -- Get any JLT assignment that has a business flow method of 'PRIOR_ENTRY'
3198 -- and has analytical criteria assigned to it.
3199 --
3200 CURSOR c_pe_ac_jlt IS
3201 SELECT distinct xld.event_class_code, xld.event_type_code,
3202 xld.accounting_line_type_code, xld.accounting_line_code
3203 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b xal
3204 WHERE xld.application_id = p_application_id
3205 AND xld.amb_context_code = p_amb_context_code
3206 AND xld.event_class_code = p_event_class_code
3207 AND xld.event_type_code = p_event_type_code
3208 AND xld.line_definition_owner_code = p_line_definition_owner_code
3209 AND xld.line_definition_code = p_line_definition_code
3210 AND xal.application_id = xld.application_id
3211 AND xal.amb_context_code = xld.amb_context_code
3212 AND xal.event_class_code = xld.event_class_code
3213 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3214 AND xal.accounting_line_code = xld.accounting_line_code
3215 AND xal.business_method_code = 'PRIOR_ENTRY'
3216 AND EXISTS
3217 (SELECT 'y'
3218 FROM xla_line_defn_ac_assgns adr
3219 WHERE adr.application_id = xld.application_id
3220 AND adr.amb_context_code = xld.amb_context_code
3221 AND adr.event_class_code = xld.event_class_code
3222 AND adr.event_type_code = xld.event_type_code
3223 AND adr.line_definition_owner_code = xld.line_definition_owner_code
3224 AND adr.line_definition_code = xld.line_definition_code
3225 AND adr.accounting_line_type_code = xld.accounting_line_type_code
3226 AND adr.accounting_line_code = xld.accounting_line_code);
3227
3228 --
3229 -- Get any JLT assignment that has a business flow method of 'NONE'
3230 -- and has inherit_adr_flag set to 'Y'
3231 --
3232 CURSOR c_se_adr_jlt IS
3233 SELECT distinct xld.event_class_code, xld.event_type_code,
3234 xld.accounting_line_type_code, xld.accounting_line_code
3235 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b xal
3236 WHERE xld.application_id = p_application_id
3237 AND xld.amb_context_code = p_amb_context_code
3238 AND xld.event_class_code = p_event_class_code
3239 AND xld.event_type_code = p_event_type_code
3240 AND xld.line_definition_owner_code = p_line_definition_owner_code
3241 AND xld.line_definition_code = p_line_definition_code
3242 AND xal.application_id = xld.application_id
3243 AND xal.amb_context_code = xld.amb_context_code
3244 AND xal.event_class_code = xld.event_class_code
3245 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3246 AND xal.accounting_line_code = xld.accounting_line_code
3247 AND xal.business_method_code = 'NONE'
3248 AND EXISTS
3249 (SELECT 'y'
3250 FROM xla_line_defn_adr_assgns adr
3251 WHERE adr.application_id = xld.application_id
3252 AND adr.amb_context_code = xld.amb_context_code
3253 AND adr.event_class_code = xld.event_class_code
3254 AND adr.event_type_code = xld.event_type_code
3255 AND adr.line_definition_owner_code = xld.line_definition_owner_code
3256 AND adr.line_definition_code = xld.line_definition_code
3257 AND adr.accounting_line_type_code = xld.accounting_line_type_code
3258 AND adr.accounting_line_code = xld.accounting_line_code
3259 AND adr.inherit_adr_flag = 'Y');
3260
3261 --
3262 -- Get any JLT assignment that has an invalid business flow class
3263 --
3264 CURSOR c_invalid_class IS
3265 SELECT distinct xld.event_class_code, xld.event_type_code,
3266 xld.accounting_line_type_code, xld.accounting_line_code
3267 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b xal
3268 WHERE xld.application_id = p_application_id
3269 AND xld.amb_context_code = p_amb_context_code
3270 AND xld.event_class_code = p_event_class_code
3271 AND xld.event_type_code = p_event_type_code
3272 AND xld.line_definition_owner_code = p_line_definition_owner_code
3273 AND xld.line_definition_code = p_line_definition_code
3274 AND xal.application_id = xld.application_id
3275 AND xal.amb_context_code = xld.amb_context_code
3276 AND xal.event_class_code = xld.event_class_code
3277 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3278 AND xal.accounting_line_code = xld.accounting_line_code
3279 AND xal.business_class_code IS NOT NULL
3280 AND NOT EXISTS
3281 (SELECT 'y'
3282 FROM xla_lookups lkp
3283 WHERE lkp.lookup_code = xal.business_class_code
3284 AND lkp.lookup_type = 'XLA_BUSINESS_FLOW_CLASS'
3285 AND lkp.enabled_flag = 'Y'
3286 AND lkp.end_date_active IS NULL);
3287
3288
3289 l_return BOOLEAN;
3290 l_log_module VARCHAR2(240);
3291 BEGIN
3292 IF g_log_enabled THEN
3293 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_business_class';
3294 END IF;
3295
3296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3297 trace(p_msg => 'BEGIN of procedure chk_jlt_is_enabled'
3298 ,p_module => l_log_module
3299 ,p_level => C_LEVEL_PROCEDURE);
3300 END IF;
3301
3302 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3303 trace(p_msg => 'application_id = '||p_application_id||
3304 ',amb_context_code = '||p_amb_context_code||
3305 ',event_class_code = '||p_event_class_code||
3306 ',event_type_code = '||p_event_type_code||
3307 ',line_definition_owner_code = '||p_line_definition_owner_code||
3308 ',line_definition_code = '||p_line_definition_code
3309 ,p_module => l_log_module
3310 ,p_level => C_LEVEL_STATEMENT);
3311 END IF;
3312
3313 l_return := TRUE;
3314
3315 --
3316 -- Check if any JLT that has business flow method of 'NONE'
3317 -- is assigned to the line definition with inherit_desc_flag = 'Y'
3318 --
3319 FOR l_err IN c_invalid_jlt LOOP
3320 l_return := FALSE;
3321
3322 xla_amb_setup_err_pkg.stack_error
3323 (p_message_name => 'XLA_AB_NO_SAME_PRIOR_LINE_TYPE'
3324 ,p_message_type => 'E'
3325 ,p_message_category => 'LINE_TYPE'
3326 ,p_category_sequence => 10
3327 ,p_application_id => p_application_id
3328 ,p_amb_context_code => p_amb_context_code
3329 ,p_event_class_code => p_event_class_code
3330 ,p_event_type_code => p_event_type_code
3331 ,p_line_definition_owner_code => p_line_definition_owner_code
3332 ,p_line_definition_code => p_line_definition_code
3333 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3334 ,p_accounting_line_code => l_err.accounting_line_code);
3335 END LOOP;
3336
3337 --
3338 -- Bug 4922099
3339 -- ADRs can be attached to Business flow JLTs, hence following validation needs to be removed .
3340 --
3341 /*
3342 FOR l_err IN c_pe_adr_jlt LOOP
3343 l_return := FALSE;
3344
3345 xla_amb_setup_err_pkg.stack_error
3346 (p_message_name => 'XLA_AB_PRIOR_LINE_TYPE_ADR'
3347 ,p_message_type => 'E'
3348 ,p_message_category => 'LINE_TYPE'
3349 ,p_category_sequence => 10
3350 ,p_application_id => p_application_id
3351 ,p_amb_context_code => p_amb_context_code
3352 ,p_event_class_code => p_event_class_code
3353 ,p_event_type_code => p_event_type_code
3354 ,p_line_definition_owner_code => p_line_definition_owner_code
3355 ,p_line_definition_code => p_line_definition_code
3356 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3357 ,p_accounting_line_code => l_err.accounting_line_code);
3358 END LOOP;
3359 */
3360
3361 FOR l_err IN c_pe_ac_jlt LOOP
3362 l_return := FALSE;
3363
3364 xla_amb_setup_err_pkg.stack_error
3365 (p_message_name => 'XLA_AB_PRIOR_LINE_TYPE_AC'
3366 ,p_message_type => 'E'
3367 ,p_message_category => 'LINE_TYPE'
3368 ,p_category_sequence => 10
3369 ,p_application_id => p_application_id
3370 ,p_amb_context_code => p_amb_context_code
3371 ,p_event_class_code => p_event_class_code
3372 ,p_event_type_code => p_event_type_code
3373 ,p_line_definition_owner_code => p_line_definition_owner_code
3374 ,p_line_definition_code => p_line_definition_code
3375 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3376 ,p_accounting_line_code => l_err.accounting_line_code);
3377 END LOOP;
3378
3379 FOR l_err IN c_se_adr_jlt LOOP
3380 l_return := FALSE;
3381
3382 xla_amb_setup_err_pkg.stack_error
3383 (p_message_name => 'XLA_AB_NO_SAME_LINE_TYPE_ADR'
3384 ,p_message_type => 'E'
3385 ,p_message_category => 'LINE_TYPE'
3386 ,p_category_sequence => 10
3387 ,p_application_id => p_application_id
3388 ,p_amb_context_code => p_amb_context_code
3389 ,p_event_class_code => p_event_class_code
3390 ,p_event_type_code => p_event_type_code
3391 ,p_line_definition_owner_code => p_line_definition_owner_code
3392 ,p_line_definition_code => p_line_definition_code
3393 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3394 ,p_accounting_line_code => l_err.accounting_line_code);
3395 END LOOP;
3396
3397 FOR l_err IN c_invalid_class LOOP
3398 l_return := FALSE;
3399
3400 xla_amb_setup_err_pkg.stack_error
3401 (p_message_name => 'XLA_AB_INVALID_BUS_FLOW_CLASS'
3402 ,p_message_type => 'E'
3403 ,p_message_category => 'LINE_TYPE'
3404 ,p_category_sequence => 10
3405 ,p_application_id => p_application_id
3406 ,p_amb_context_code => p_amb_context_code
3407 ,p_event_class_code => p_event_class_code
3408 ,p_event_type_code => p_event_type_code
3409 ,p_line_definition_owner_code => p_line_definition_owner_code
3410 ,p_line_definition_code => p_line_definition_code
3411 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3412 ,p_accounting_line_code => l_err.accounting_line_code);
3413 END LOOP;
3414
3415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3416 trace(p_msg => 'END of procedure chk_jlt_business_class'
3417 ,p_module => l_log_module
3418 ,p_level => C_LEVEL_PROCEDURE);
3419 END IF;
3420
3421 RETURN l_return;
3422
3423 EXCEPTION
3424 WHEN xla_exceptions_pkg.application_exception THEN
3425 IF c_invalid_class%ISOPEN THEN
3426 CLOSE c_invalid_class;
3427 END IF;
3428 IF c_se_adr_jlt%ISOPEN THEN
3429 CLOSE c_se_adr_jlt;
3430 END IF;
3431 -- Bug 4922099
3432 /*
3433 IF c_pe_adr_jlt%ISOPEN THEN
3434 CLOSE c_pe_adr_jlt;
3435 END IF;
3436 */
3437 IF c_pe_ac_jlt%ISOPEN THEN
3438 CLOSE c_pe_ac_jlt;
3439 END IF;
3440 IF c_invalid_jlt%ISOPEN THEN
3441 CLOSE c_invalid_jlt;
3442 END IF;
3443 RAISE;
3444
3445 WHEN OTHERS THEN
3446 IF c_invalid_class%ISOPEN THEN
3447 CLOSE c_invalid_class;
3448 END IF;
3449 IF c_se_adr_jlt%ISOPEN THEN
3450 CLOSE c_se_adr_jlt;
3451 END IF;
3452 -- Bug 4922099
3453 /*
3454 IF c_pe_adr_jlt%ISOPEN THEN
3455 CLOSE c_pe_adr_jlt;
3456 END IF;
3457 */
3458 IF c_pe_ac_jlt%ISOPEN THEN
3459 CLOSE c_pe_ac_jlt;
3460 END IF;
3461 IF c_invalid_jlt%ISOPEN THEN
3462 CLOSE c_invalid_jlt;
3463 END IF;
3464 xla_exceptions_pkg.raise_message
3465 (p_location => 'xla_line_definitions_pvt.chk_jlt_business_class');
3466 END chk_jlt_business_class;
3467
3468
3469 --=============================================================================
3470 --
3471 -- Name: chk_jld_same_entry
3472 -- Description: Check if all JLT assignments has correct business class
3473 --
3474 --=============================================================================
3475 FUNCTION chk_jld_same_entry
3476 (p_application_id IN NUMBER
3477 ,p_amb_context_code IN VARCHAR2
3478 ,p_event_class_code IN VARCHAR2
3479 ,p_event_type_code IN VARCHAR2
3480 ,p_line_definition_owner_code IN VARCHAR2
3481 ,p_line_definition_code IN VARCHAR2)
3482 RETURN BOOLEAN
3483 IS
3484 --
3485 -- Get any JLT assignment that has a business flow method of 'NONE'
3486 -- and have inherit_desc_flag set to 'Y'
3487 --
3488 CURSOR c_same_entry_jlt_debit IS
3489 SELECT 'x'
3490 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b xal
3491 WHERE xld.application_id = p_application_id
3492 AND xld.amb_context_code = p_amb_context_code
3493 AND xld.event_class_code = p_event_class_code
3494 AND xld.event_type_code = p_event_type_code
3495 AND xld.line_definition_owner_code = p_line_definition_owner_code
3496 AND xld.line_definition_code = p_line_definition_code
3497 AND xal.application_id = xld.application_id
3498 AND xal.amb_context_code = xld.amb_context_code
3499 AND xal.event_class_code = xld.event_class_code
3500 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3501 AND xal.accounting_line_code = xld.accounting_line_code
3502 AND xal.business_method_code = 'SAME_ENTRY'
3503 AND xal.natural_side_code = 'D';
3504
3505 CURSOR c_same_entry_jlt_credit IS
3506 SELECT 'x'
3507 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b xal
3508 WHERE xld.application_id = p_application_id
3509 AND xld.amb_context_code = p_amb_context_code
3510 AND xld.event_class_code = p_event_class_code
3511 AND xld.event_type_code = p_event_type_code
3512 AND xld.line_definition_owner_code = p_line_definition_owner_code
3513 AND xld.line_definition_code = p_line_definition_code
3514 AND xal.application_id = xld.application_id
3515 AND xal.amb_context_code = xld.amb_context_code
3516 AND xal.event_class_code = xld.event_class_code
3517 AND xal.accounting_line_type_code = xld.accounting_line_type_code
3518 AND xal.accounting_line_code = xld.accounting_line_code
3519 AND xal.business_method_code = 'SAME_ENTRY'
3520 AND xal.natural_side_code = 'C';
3521
3522
3523 l_return BOOLEAN;
3524 l_log_module VARCHAR2(240);
3525 l_exist VARCHAR2(1);
3526 BEGIN
3527 IF g_log_enabled THEN
3528 l_log_module := C_DEFAULT_MODULE||'.chk_jld_same_entry';
3529 END IF;
3530
3531 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3532 trace(p_msg => 'BEGIN of procedure chk_jld_same_entry'
3533 ,p_module => l_log_module
3534 ,p_level => C_LEVEL_PROCEDURE);
3535 END IF;
3536
3537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3538 trace(p_msg => 'application_id = '||p_application_id||
3539 ',amb_context_code = '||p_amb_context_code||
3540 ',event_class_code = '||p_event_class_code||
3541 ',event_type_code = '||p_event_type_code||
3542 ',line_definition_owner_code = '||p_line_definition_owner_code||
3543 ',line_definition_code = '||p_line_definition_code
3544 ,p_module => l_log_module
3545 ,p_level => C_LEVEL_STATEMENT);
3546 END IF;
3547
3548 l_return := TRUE;
3549
3550 OPEN c_same_entry_jlt_debit;
3551 FETCH c_same_entry_jlt_debit
3552 INTO l_exist;
3553 IF c_same_entry_jlt_debit%found then
3554 OPEN c_same_entry_jlt_credit;
3555 FETCH c_same_entry_jlt_credit
3556 INTO l_exist;
3557 IF c_same_entry_jlt_credit%found then
3558 l_return := FALSE;
3559
3560 xla_amb_setup_err_pkg.stack_error
3561 (p_message_name => 'XLA_AB_SE_DEBIT_CREDIT'
3562 ,p_message_type => 'W'
3563 ,p_message_category => 'LINE_ASSIGNMENT'
3564 ,p_category_sequence => 9
3565 ,p_application_id => p_application_id
3566 ,p_amb_context_code => p_amb_context_code
3567 ,p_event_class_code => p_event_class_code
3568 ,p_event_type_code => p_event_type_code
3569 ,p_line_definition_owner_code => p_line_definition_owner_code
3570 ,p_line_definition_code => p_line_definition_code);
3571
3572 END IF;
3573 CLOSE c_same_entry_jlt_credit;
3574 END IF;
3575 CLOSE c_same_entry_jlt_debit;
3576
3577 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3578 trace(p_msg => 'END of procedure chk_jlt_business_class'
3579 ,p_module => l_log_module
3580 ,p_level => C_LEVEL_PROCEDURE);
3581 END IF;
3582
3583 RETURN l_return;
3584
3585 EXCEPTION
3586 WHEN xla_exceptions_pkg.application_exception THEN
3587 IF c_same_entry_jlt_debit%ISOPEN THEN
3588 CLOSE c_same_entry_jlt_debit;
3589 END IF;
3590 IF c_same_entry_jlt_credit%ISOPEN THEN
3591 CLOSE c_same_entry_jlt_credit;
3592 END IF;
3593 RAISE;
3594
3595 WHEN OTHERS THEN
3596 IF c_same_entry_jlt_debit%ISOPEN THEN
3597 CLOSE c_same_entry_jlt_debit;
3598 END IF;
3599 IF c_same_entry_jlt_credit%ISOPEN THEN
3600 CLOSE c_same_entry_jlt_credit;
3601 END IF;
3602
3603 xla_exceptions_pkg.raise_message
3604 (p_location => 'xla_line_definitions_pvt.chk_jld_same_entry');
3605 END chk_jld_same_entry;
3606
3607
3608
3609 --=============================================================================
3610 --
3611 -- Name: chk_jlt_invalid_source_in_cond
3612 -- Description: Check if all sources used in the JLT condition is valid
3613 --
3614 --=============================================================================
3615 FUNCTION chk_jlt_invalid_source_in_cond
3616 (p_application_id IN NUMBER
3617 ,p_amb_context_code IN VARCHAR2
3618 ,p_event_class_code IN VARCHAR2
3619 ,p_event_type_code IN VARCHAR2
3620 ,p_line_definition_owner_code IN VARCHAR2
3621 ,p_line_definition_code IN VARCHAR2)
3622 RETURN BOOLEAN
3623 IS
3624 --
3625 -- Get all JLT that have sources that do not belong to the event class of the
3626 -- line definition
3627 --
3628 CURSOR c_invalid_sources IS
3629 SELECT distinct xld.event_class_code, xld.event_type_code,
3630 xld.accounting_line_type_code, xld.accounting_line_code,
3631 xco.source_type_code, xco.source_code
3632 FROM xla_conditions xco, xla_line_defn_jlt_assgns xld
3633 WHERE xld.application_id = p_application_id
3634 AND xld.amb_context_code = p_amb_context_code
3635 AND xld.event_class_code = p_event_class_code
3636 AND xld.event_type_code = p_event_type_code
3637 AND xld.line_definition_owner_code = p_line_definition_owner_code
3638 AND xld.line_definition_code = p_line_definition_code
3639 AND xld.active_flag = 'Y'
3640 AND xco.application_id = xld.application_id
3641 AND xco.amb_context_code = xld.amb_context_code
3642 AND xco.event_class_code = xld.event_class_code
3643 AND xco.accounting_line_type_code = xld.accounting_line_type_code
3644 AND xco.accounting_line_code = xld.accounting_line_code
3645 AND xco.source_type_code = 'S'
3646 AND NOT EXISTS
3647 (SELECT 'y'
3648 FROM xla_event_sources xes
3649 WHERE xes.source_application_id = xco.source_application_id
3650 AND xes.source_type_code = xco.source_type_code
3651 AND xes.source_code = xco.source_code
3652 AND xes.application_id = p_application_id
3653 AND xes.event_class_code = p_event_class_code
3654 AND xes.active_flag = 'Y')
3655 UNION
3656 SELECT distinct xld.event_class_code, xld.event_type_code,
3657 xld.accounting_line_type_code, xld.accounting_line_code,
3658 xco.value_source_type_code source_type_code, xco.value_source_code source_code
3659 FROM xla_conditions xco, xla_line_defn_jlt_assgns xld
3660 WHERE xld.application_id = p_application_id
3661 AND xld.amb_context_code = p_amb_context_code
3662 AND xld.event_class_code = p_event_class_code
3663 AND xld.event_type_code = p_event_type_code
3664 AND xld.line_definition_owner_code = p_line_definition_owner_code
3665 AND xld.line_definition_code = p_line_definition_code
3666 AND xld.active_flag = 'Y'
3667 AND xco.application_id = xld.application_id
3668 AND xco.amb_context_code = xld.amb_context_code
3669 AND xco.event_class_code = xld.event_class_code
3670 AND xco.accounting_line_type_code = xld.accounting_line_type_code
3671 AND xco.accounting_line_code = xld.accounting_line_code
3672 AND xco.value_source_type_code = 'S'
3673 AND NOT EXISTS
3674 (SELECT 'y'
3675 FROM xla_event_sources xes
3676 WHERE xes.source_application_id = xco.value_source_application_id
3677 AND xes.source_type_code = xco.value_source_type_code
3678 AND xes.source_code = xco.value_source_code
3679 AND xes.application_id = p_application_id
3680 AND xes.event_class_code = p_event_class_code
3681 AND xes.active_flag = 'Y');
3682
3683 --
3684 -- Get all dervied sources used by the condition of the JLT
3685 --
3686 CURSOR c_jlt_cond_der_sources IS
3687 SELECT distinct xld.event_class_code, xld.event_type_code,
3688 xld.accounting_line_type_code, xld.accounting_line_code,
3689 xco.source_type_code, xco.source_code
3690 FROM xla_conditions xco, xla_line_defn_jlt_assgns xld
3691 WHERE xld.application_id = p_application_id
3692 AND xld.amb_context_code = p_amb_context_code
3693 AND xld.event_class_code = p_event_class_code
3694 AND xld.event_type_code = p_event_type_code
3695 AND xld.line_definition_owner_code = p_line_definition_owner_code
3696 AND xld.line_definition_code = p_line_definition_code
3697 AND xld.active_flag = 'Y'
3698 AND xco.application_id = xld.application_id
3699 AND xco.amb_context_code = xld.amb_context_code
3700 AND xco.event_class_code = xld.event_class_code
3701 AND xco.accounting_line_type_code = xld.accounting_line_type_code
3702 AND xco.accounting_line_code = xld.accounting_line_code
3703 AND xco.source_type_code = 'D'
3704 UNION
3705 SELECT distinct xld.event_class_code, xld.event_type_code,
3706 xld.accounting_line_type_code, xld.accounting_line_code,
3707 xco.value_source_type_code source_type_code, xco.value_source_code source_code
3708 FROM xla_conditions xco, xla_line_defn_jlt_assgns xld
3709 WHERE xld.application_id = p_application_id
3710 AND xld.amb_context_code = p_amb_context_code
3711 AND xld.event_class_code = p_event_class_code
3712 AND xld.event_type_code = p_event_type_code
3713 AND xld.line_definition_owner_code = p_line_definition_owner_code
3714 AND xld.line_definition_code = p_line_definition_code
3715 AND xld.active_flag = 'Y'
3716 AND xco.application_id = xld.application_id
3717 AND xco.amb_context_code = xld.amb_context_code
3718 AND xco.event_class_code = xld.event_class_code
3719 AND xco.accounting_line_type_code = xld.accounting_line_type_code
3720 AND xco.accounting_line_code = xld.accounting_line_code
3721 AND xco.value_source_type_code = 'D';
3722
3723 l_return BOOLEAN;
3724 l_log_module VARCHAR2(240);
3725 BEGIN
3726 IF g_log_enabled THEN
3727 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_invalid_source_in_cond';
3728 END IF;
3729
3730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3731 trace(p_msg => 'BEGIN of procedure chk_jlt_invalid_source_in_cond'
3732 ,p_module => l_log_module
3733 ,p_level => C_LEVEL_PROCEDURE);
3734 END IF;
3735
3736 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3737 trace(p_msg => 'application_id = '||p_application_id||
3738 ',amb_context_code = '||p_amb_context_code||
3739 ',event_class_code = '||p_event_class_code||
3740 ',event_type_code = '||p_event_type_code||
3741 ',line_definition_owner_code = '||p_line_definition_owner_code||
3742 ',line_definition_code = '||p_line_definition_code
3743 ,p_module => l_log_module
3744 ,p_level => C_LEVEL_STATEMENT);
3745 END IF;
3746
3747 l_return := TRUE;
3748
3749 --
3750 -- Check if the condition of any JLT have seeded sources that are not assigned
3751 -- to the event class of the line definition
3752 --
3753 FOR l_err IN c_invalid_sources LOOP
3754 l_return := FALSE;
3755
3756 xla_amb_setup_err_pkg.stack_error
3757 (p_message_name => 'XLA_AB_LT_CON_UNASN_SRCE'
3758 ,p_message_type => 'E'
3759 ,p_message_category => 'LINE_TYPE'
3760 ,p_category_sequence => 10
3761 ,p_application_id => p_application_id
3762 ,p_amb_context_code => p_amb_context_code
3763 ,p_event_class_code => p_event_class_code
3764 ,p_event_type_code => p_event_type_code
3765 ,p_line_definition_owner_code => p_line_definition_owner_code
3766 ,p_line_definition_code => p_line_definition_code
3767 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3768 ,p_accounting_line_code => l_err.accounting_line_code
3769 ,p_source_type_code => l_err.source_type_code
3770 ,p_source_code => l_err.source_code);
3771 END LOOP;
3772
3773 --
3774 -- Check if any derveried source used by the condition of the JLT is invalid
3775 --
3776 FOR l_err IN c_jlt_cond_der_sources LOOP
3777 IF xla_sources_pkg.derived_source_is_invalid
3778 (p_application_id => p_application_id
3779 ,p_derived_source_code => l_err.source_code
3780 ,p_derived_source_type_code => 'D'
3781 ,p_event_class_code => p_event_class_code
3782 ,p_level => 'L') = 'TRUE' THEN
3783 l_return := FALSE;
3784
3785 xla_amb_setup_err_pkg.stack_error
3786 (p_message_name => 'XLA_AB_LT_CON_UNASN_SRCE'
3787 ,p_message_type => 'E'
3788 ,p_message_category => 'LINE_TYPE'
3789 ,p_category_sequence => 10
3790 ,p_application_id => p_application_id
3791 ,p_amb_context_code => p_amb_context_code
3792 ,p_event_class_code => p_event_class_code
3793 ,p_event_type_code => p_event_type_code
3794 ,p_line_definition_owner_code => p_line_definition_owner_code
3795 ,p_line_definition_code => p_line_definition_code
3796 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3797 ,p_accounting_line_code => l_err.accounting_line_code
3798 ,p_source_type_code => l_err.source_type_code
3799 ,p_source_code => l_err.source_code);
3800
3801 END IF;
3802 END LOOP;
3803
3804 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3805 trace(p_msg => 'END of procedure chk_jlt_invalid_source_in_cond'
3806 ,p_module => l_log_module
3807 ,p_level => C_LEVEL_PROCEDURE);
3808 END IF;
3809
3810 RETURN l_return;
3811
3812 EXCEPTION
3813 WHEN xla_exceptions_pkg.application_exception THEN
3814 IF (c_invalid_sources%ISOPEN) THEN
3815 CLOSE c_invalid_sources;
3816 END IF;
3817 IF (c_jlt_cond_der_sources%ISOPEN) THEN
3818 CLOSE c_jlt_cond_der_sources;
3819 END IF;
3820 RAISE;
3821
3822 WHEN OTHERS THEN
3823 IF (c_invalid_sources%ISOPEN) THEN
3824 CLOSE c_invalid_sources;
3825 END IF;
3826 IF (c_jlt_cond_der_sources%ISOPEN) THEN
3827 CLOSE c_jlt_cond_der_sources;
3828 END IF;
3829 xla_exceptions_pkg.raise_message
3830 (p_location => 'xla_line_definitions_pvt.chk_jlt_invalid_source_in_cond');
3831
3832 END chk_jlt_invalid_source_in_cond;
3833
3834
3835 --=============================================================================
3836 -- 5642205
3837 -- Name: chk_jlt_invalid_source_in_jlt
3838 -- Description: Check if all sources used in the JLT attribute is valid
3839 --
3840 --=============================================================================
3841 FUNCTION chk_jlt_invalid_source_in_jlt
3842 (p_application_id IN NUMBER
3843 ,p_amb_context_code IN VARCHAR2
3844 ,p_event_class_code IN VARCHAR2
3845 ,p_event_type_code IN VARCHAR2
3846 ,p_line_definition_owner_code IN VARCHAR2
3847 ,p_line_definition_code IN VARCHAR2)
3848 RETURN BOOLEAN
3849 IS
3850 --
3851 -- Get all JLT that have sources that do not belong to the event class of the
3852 -- line definition. Modified for bug 6124149
3853 --
3854 CURSOR c_invalid_sources IS
3855 SELECT distinct xld.event_class_code, xld.event_type_code,
3856 xld.accounting_line_type_code, xld.accounting_line_code,
3857 xco.source_type_code, xco.source_code
3858 ,xco.accounting_attribute_code
3859 FROM xla_jlt_acct_attrs xco, xla_line_defn_jlt_assgns xld,
3860 xla_acct_attributes_b xaab
3861 WHERE xld.application_id = p_application_id
3862 AND xld.amb_context_code = p_amb_context_code
3863 AND xld.event_class_code = p_event_class_code
3864 AND xld.event_type_code = p_event_type_code
3865 AND xld.line_definition_owner_code = p_line_definition_owner_code
3866 AND xld.line_definition_code = p_line_definition_code
3867 AND xld.active_flag = 'Y'
3868 AND xco.application_id = xld.application_id
3869 AND xco.amb_context_code = xld.amb_context_code
3870 AND xco.event_class_code = xld.event_class_code
3871 AND xco.accounting_line_type_code = xld.accounting_line_type_code
3872 AND xco.accounting_line_code = xld.accounting_line_code
3873 AND xco.source_type_code in ('S','D')
3874 AND xaab.accounting_attribute_code = xco.accounting_attribute_code
3875 AND xaab.assignment_level_code <> 'JLT_ONLY'
3876 AND NOT EXISTS
3877 (SELECT 'y'
3878 FROM xla_evt_class_acct_attrs xes
3879 WHERE xes.source_application_id = xco.source_application_id
3880 AND xes.source_type_code = xco.source_type_code
3881 AND xes.source_code = xco.source_code
3882 AND xes.application_id = p_application_id
3883 AND xes.event_class_code = p_event_class_code);
3884
3885
3886 --
3887 -- Get all dervied sources used by the attributes of the JLT
3888 --
3889 CURSOR c_jlt_attr_der_sources IS
3890 SELECT distinct xld.event_class_code, xld.event_type_code,
3891 xld.accounting_line_type_code, xld.accounting_line_code,
3892 xco.source_type_code, xco.source_code
3893 ,xco.accounting_attribute_code
3894 FROM xla_jlt_acct_attrs xco, xla_line_defn_jlt_assgns xld
3895 WHERE xld.application_id = p_application_id
3896 AND xld.amb_context_code = p_amb_context_code
3897 AND xld.event_class_code = p_event_class_code
3898 AND xld.event_type_code = p_event_type_code
3899 AND xld.line_definition_owner_code = p_line_definition_owner_code
3900 AND xld.line_definition_code = p_line_definition_code
3901 AND xld.active_flag = 'Y'
3902 AND xco.application_id = xld.application_id
3903 AND xco.amb_context_code = xld.amb_context_code
3904 AND xco.event_class_code = xld.event_class_code
3905 AND xco.accounting_line_type_code = xld.accounting_line_type_code
3906 AND xco.accounting_line_code = xld.accounting_line_code
3907 AND xco.source_type_code = 'D';
3908
3909 l_return BOOLEAN;
3910 l_log_module VARCHAR2(240);
3911 BEGIN
3912 IF g_log_enabled THEN
3913 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_invalid_source_in_jlt';
3914 END IF;
3915
3916 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3917 trace(p_msg => 'BEGIN of procedure chk_jlt_invalid_source_in_jlt'
3918 ,p_module => l_log_module
3919 ,p_level => C_LEVEL_PROCEDURE);
3920 END IF;
3921
3922 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3923 trace(p_msg => 'application_id = '||p_application_id||
3924 ',amb_context_code = '||p_amb_context_code||
3925 ',event_class_code = '||p_event_class_code||
3926 ',event_type_code = '||p_event_type_code||
3927 ',line_definition_owner_code = '||p_line_definition_owner_code||
3928 ',line_definition_code = '||p_line_definition_code
3929 ,p_module => l_log_module
3930 ,p_level => C_LEVEL_STATEMENT);
3931 END IF;
3932
3933 l_return := TRUE;
3934
3935 --
3936 -- Check if the attribute of any JLT have seeded sources that are not assigned
3937 -- to the event class of the line definition
3938 --
3939 FOR l_err IN c_invalid_sources LOOP
3940 l_return := FALSE;
3941
3942 xla_amb_setup_err_pkg.stack_error
3943 (p_message_name => 'XLA_AB_LT_ATTR_UNASN_SRCE'
3944 ,p_message_type => 'E'
3945 ,p_message_category => 'LINE_TYPE'
3946 ,p_category_sequence => 10
3947 ,p_application_id => p_application_id
3948 ,p_amb_context_code => p_amb_context_code
3949 ,p_event_class_code => p_event_class_code
3950 ,p_event_type_code => p_event_type_code
3951 ,p_line_definition_owner_code => p_line_definition_owner_code
3952 ,p_line_definition_code => p_line_definition_code
3953 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3954 ,p_accounting_line_code => l_err.accounting_line_code
3955 ,p_source_type_code => l_err.source_type_code
3956 ,p_source_code => l_err.source_code
3957 ,p_accounting_source_code => l_err.accounting_attribute_code);
3958 END LOOP;
3959
3960 --
3961 -- Check if any derveried source used by the attribute of the JLT is invalid
3962 --
3963 FOR l_err IN c_jlt_attr_der_sources LOOP
3964 IF xla_sources_pkg.derived_source_is_invalid
3965 (p_application_id => p_application_id
3966 ,p_derived_source_code => l_err.source_code
3967 ,p_derived_source_type_code => 'D'
3968 ,p_event_class_code => p_event_class_code
3969 ,p_level => 'L') = 'TRUE' THEN
3970 l_return := FALSE;
3971
3972 xla_amb_setup_err_pkg.stack_error
3973 (p_message_name => 'XLA_AB_CS_UNASN_SRCE'
3974 ,p_message_type => 'E'
3975 ,p_message_category => 'LINE_TYPE'
3976 ,p_category_sequence => 10
3977 ,p_application_id => p_application_id
3978 ,p_amb_context_code => p_amb_context_code
3979 ,p_event_class_code => p_event_class_code
3980 ,p_event_type_code => p_event_type_code
3981 ,p_line_definition_owner_code => p_line_definition_owner_code
3982 ,p_line_definition_code => p_line_definition_code
3983 ,p_accounting_line_type_code => l_err.accounting_line_type_code
3984 ,p_accounting_line_code => l_err.accounting_line_code
3985 ,p_source_type_code => l_err.source_type_code
3986 ,p_source_code => l_err.source_code
3987 ,p_accounting_source_code => l_err.accounting_attribute_code);
3988
3989 END IF;
3990 END LOOP;
3991
3992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3993 trace(p_msg => 'END of procedure chk_jlt_invalid_source_in_jlt'
3994 ,p_module => l_log_module
3995 ,p_level => C_LEVEL_PROCEDURE);
3996 END IF;
3997
3998 RETURN l_return;
3999
4000 EXCEPTION
4001 WHEN xla_exceptions_pkg.application_exception THEN
4002 IF (c_invalid_sources%ISOPEN) THEN
4003 CLOSE c_invalid_sources;
4004 END IF;
4005 IF (c_jlt_attr_der_sources%ISOPEN) THEN
4006 CLOSE c_jlt_attr_der_sources;
4007 END IF;
4008 RAISE;
4009
4010 WHEN OTHERS THEN
4011 IF (c_invalid_sources%ISOPEN) THEN
4012 CLOSE c_invalid_sources;
4013 END IF;
4014 IF (c_jlt_attr_der_sources%ISOPEN) THEN
4015 CLOSE c_jlt_attr_der_sources;
4016 END IF;
4017 xla_exceptions_pkg.raise_message
4018 (p_location => 'xla_line_definitions_pvt.chk_jlt_invalid_source_in_jlt');
4019
4020 END chk_jlt_invalid_source_in_jlt;
4021
4022 --=============================================================================
4023 --
4024 -- Name: chk_jlt_acct_source_assigned
4025 -- Description: Check if all JLT of the line definition has all required
4026 -- accounting sources assigned
4027 --
4028 --=============================================================================
4029 FUNCTION chk_jlt_acct_source_assigned
4030 (p_application_id IN NUMBER
4031 ,p_amb_context_code IN VARCHAR2
4032 ,p_event_class_code IN VARCHAR2
4033 ,p_event_type_code IN VARCHAR2
4034 ,p_line_definition_owner_code IN VARCHAR2
4035 ,p_line_definition_code IN VARCHAR2)
4036 RETURN BOOLEAN
4037 IS
4038 --
4039 -- Get all JLT for which not all required line accounting sources are assigned
4040 --
4041 CURSOR c_non_pe_jlt IS
4042 SELECT xld.accounting_line_type_code
4043 ,xld.accounting_line_code
4044 ,xja.accounting_attribute_code
4045 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b jlt, xla_jlt_acct_attrs xja
4046 WHERE xld.application_id = xja.application_id
4047 AND xld.amb_context_code = xja.amb_context_code
4048 AND xld.event_class_code = xja.event_class_code
4049 AND xld.accounting_line_type_code = xja.accounting_line_type_code
4050 AND xld.accounting_line_code = xja.accounting_line_code
4051 AND xld.application_id = jlt.application_id
4052 AND xld.amb_context_code = jlt.amb_context_code
4053 AND xld.event_class_code = jlt.event_class_code
4054 AND xld.accounting_line_type_code = jlt.accounting_line_type_code
4055 AND xld.accounting_line_code = jlt.accounting_line_code
4056 AND jlt.business_method_code <> 'PRIOR_ENTRY'
4057 AND xld.application_id = p_application_id
4058 AND xld.amb_context_code = p_amb_context_code
4059 AND xld.event_class_code = p_event_class_code
4060 AND xld.event_type_code = p_event_type_code
4061 AND xld.line_definition_owner_code= p_line_definition_owner_code
4062 AND xld.line_definition_code = p_line_definition_code
4063 AND xja.source_code is null
4064 AND EXISTS (SELECT 'x'
4065 FROM xla_acct_attributes_b xaa
4066 WHERE xaa.accounting_attribute_code = xja.accounting_attribute_code
4067 AND xaa.assignment_required_code = 'Y'
4068 AND xaa.assignment_level_code IN ('EVT_CLASS_JLT','JLT_ONLY'));
4069
4070 CURSOR c_pe_jlt IS
4071 SELECT xld.accounting_line_type_code
4072 ,xld.accounting_line_code
4073 ,xja.accounting_attribute_code
4074 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b jlt, xla_jlt_acct_attrs xja
4075 WHERE xld.application_id = xja.application_id
4076 AND xld.amb_context_code = xja.amb_context_code
4077 AND xld.event_class_code = xja.event_class_code
4078 AND xld.accounting_line_type_code = xja.accounting_line_type_code
4079 AND xld.accounting_line_code = xja.accounting_line_code
4080 AND xld.application_id = jlt.application_id
4081 AND xld.amb_context_code = jlt.amb_context_code
4082 AND xld.event_class_code = jlt.event_class_code
4083 AND xld.accounting_line_type_code = jlt.accounting_line_type_code
4084 AND xld.accounting_line_code = jlt.accounting_line_code
4085 AND jlt.business_method_code = 'PRIOR_ENTRY'
4086 AND xld.application_id = p_application_id
4087 AND xld.amb_context_code = p_amb_context_code
4088 AND xld.event_class_code = p_event_class_code
4089 AND xld.event_type_code = p_event_type_code
4090 AND xld.line_definition_owner_code= p_line_definition_owner_code
4091 AND xld.line_definition_code = p_line_definition_code
4092 AND xja.source_code is null
4093 AND EXISTS (SELECT 'x'
4094 FROM xla_acct_attributes_b xaa
4095 WHERE xaa.accounting_attribute_code = xja.accounting_attribute_code
4096 AND xaa.assignment_required_code = 'Y'
4097 AND xaa.assignment_level_code IN ('EVT_CLASS_JLT','JLT_ONLY')
4098 AND xaa.inherited_flag = 'N');
4099
4100
4101 l_return BOOLEAN;
4102 l_log_module VARCHAR2(240);
4103 BEGIN
4104 IF g_log_enabled THEN
4105 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_acct_source_assigned';
4106 END IF;
4107
4108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4109 trace(p_msg => 'BEGIN of procedure chk_jlt_acct_source_assigned'
4110 ,p_module => l_log_module
4111 ,p_level => C_LEVEL_PROCEDURE);
4112 END IF;
4113
4114 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4115 trace(p_msg => 'application_id = '||p_application_id||
4116 ',amb_context_code = '||p_amb_context_code||
4117 ',event_class_code = '||p_event_class_code||
4118 ',event_type_code = '||p_event_type_code||
4119 ',line_definition_owner_code = '||p_line_definition_owner_code||
4120 ',line_definition_code = '||p_line_definition_code
4121 ,p_module => l_log_module
4122 ,p_level => C_LEVEL_STATEMENT);
4123 END IF;
4124
4125 l_return := TRUE;
4126
4127 --
4128 -- Check if any JLT does not have all required line accounting sources
4129 --
4130 FOR l_err IN c_non_pe_jlt LOOP
4131 l_return := FALSE;
4132
4133 xla_amb_setup_err_pkg.stack_error
4134 (p_message_name => 'XLA_AB_LT_ACCTING_SOURCE'
4135 ,p_message_type => 'E'
4136 ,p_message_category => 'LINE_TYPE'
4137 ,p_category_sequence => 10
4138 ,p_application_id => p_application_id
4139 ,p_amb_context_code => p_amb_context_code
4140 ,p_event_class_code => p_event_class_code
4141 ,p_event_type_code => p_event_type_code
4142 ,p_line_definition_owner_code => p_line_definition_owner_code
4143 ,p_line_definition_code => p_line_definition_code
4144 ,p_accounting_line_type_code => l_err.accounting_line_type_code
4145 ,p_accounting_line_code => l_err.accounting_line_code
4146 ,p_accounting_source_code => l_err.accounting_attribute_code);
4147 END LOOP;
4148
4149 FOR l_err IN c_pe_jlt LOOP
4150 l_return := FALSE;
4151
4152 xla_amb_setup_err_pkg.stack_error
4153 (p_message_name => 'XLA_AB_LT_ACCTING_SOURCE'
4154 ,p_message_type => 'E'
4155 ,p_message_category => 'LINE_TYPE'
4156 ,p_category_sequence => 10
4157 ,p_application_id => p_application_id
4158 ,p_amb_context_code => p_amb_context_code
4159 ,p_event_class_code => p_event_class_code
4160 ,p_event_type_code => p_event_type_code
4161 ,p_line_definition_owner_code => p_line_definition_owner_code
4162 ,p_line_definition_code => p_line_definition_code
4163 ,p_accounting_line_type_code => l_err.accounting_line_type_code
4164 ,p_accounting_line_code => l_err.accounting_line_code
4165 ,p_accounting_source_code => l_err.accounting_attribute_code);
4166 END LOOP;
4167
4168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4169 trace(p_msg => 'END of procedure chk_jlt_acct_source_assigned'
4170 ,p_module => l_log_module
4171 ,p_level => C_LEVEL_PROCEDURE);
4172 END IF;
4173
4174 RETURN l_return;
4175
4176 EXCEPTION
4177 WHEN xla_exceptions_pkg.application_exception THEN
4178 IF (c_non_pe_jlt%ISOPEN) THEN
4179 CLOSE c_non_pe_jlt;
4180 END IF;
4181 IF (c_pe_jlt%ISOPEN) THEN
4182 CLOSE c_pe_jlt;
4183 END IF;
4184 RAISE;
4185
4186 WHEN OTHERS THEN
4187 IF (c_non_pe_jlt%ISOPEN) THEN
4188 CLOSE c_non_pe_jlt;
4189 END IF;
4190 IF (c_pe_jlt%ISOPEN) THEN
4191 CLOSE c_pe_jlt;
4192 END IF;
4193 xla_exceptions_pkg.raise_message
4194 (p_location => 'xla_line_definitions_pvt.chk_jlt_acct_source_assigned');
4195
4196 END chk_jlt_acct_source_assigned;
4197
4198
4199 --=============================================================================
4200 --
4201 -- Name: chk_jlt_inv_acct_group_src
4202 -- Description: Check if all JLT of the line definition has all required
4203 -- accounting sources assigned
4204 --
4205 --=============================================================================
4206 FUNCTION chk_jlt_inv_acct_group_src
4207 (p_application_id IN NUMBER
4208 ,p_amb_context_code IN VARCHAR2
4209 ,p_event_class_code IN VARCHAR2
4210 ,p_event_type_code IN VARCHAR2
4211 ,p_line_definition_owner_code IN VARCHAR2
4212 ,p_line_definition_code IN VARCHAR2)
4213 RETURN BOOLEAN
4214 IS
4215 CURSOR c_jlt_assgns IS
4216 SELECT accounting_line_type_code, accounting_line_code
4217 FROM xla_line_defn_jlt_assgns
4218 WHERE application_id = p_application_id
4219 AND amb_context_code = p_amb_context_code
4220 AND event_class_code = p_event_class_code
4221 AND event_type_code = p_event_type_code
4222 AND line_definition_owner_code = p_line_definition_owner_code
4223 AND line_definition_code = p_line_definition_code;
4224
4225 CURSOR c_business_method(l_accounting_line_type_code VARCHAR2
4226 ,l_accounting_line_code VARCHAR2)
4227 IS
4228 SELECT business_method_code, mpa_option_code
4229 FROM xla_acct_line_types_b
4230 WHERE application_id = p_application_id
4231 AND amb_context_code = p_amb_context_code
4232 AND event_class_code = p_event_class_code
4233 AND accounting_line_type_code = l_accounting_line_type_code
4234 AND accounting_line_code = l_accounting_line_code;
4235
4236 CURSOR c_mapping_groups(l_accounting_line_type_code VARCHAR2
4237 ,l_accounting_line_code VARCHAR2) IS
4238 SELECT distinct xaa.assignment_group_code
4239 FROM xla_jlt_acct_attrs xja, xla_acct_attributes_b xaa
4240 WHERE xja.application_id = p_application_id
4241 AND xja.amb_context_code = p_amb_context_code
4242 AND xja.event_class_code = p_event_class_code
4243 AND xja.accounting_line_type_code = l_accounting_line_type_code
4244 AND xja.accounting_line_code = l_accounting_line_code
4245 AND xja.accounting_attribute_code = xaa.accounting_attribute_code
4246 AND xja.source_code IS NOT NULL
4247 UNION
4248 SELECT distinct xaa.assignment_group_code
4249 FROM xla_evt_class_acct_attrs xec, xla_acct_attributes_b xaa
4250 WHERE xec.application_id = p_application_id
4251 AND xec.event_class_code = p_event_class_code
4252 AND xec.accounting_attribute_code = xaa.accounting_attribute_code
4253 AND xaa.assignment_level_code = 'EVT_CLASS_ONLY'
4254 AND xec.default_flag = 'Y';
4255
4256 CURSOR c_group_acct_sources(l_accounting_line_type_code VARCHAR2
4257 ,l_accounting_line_code VARCHAR2
4258 ,l_assignment_group_code VARCHAR2) IS
4259 SELECT distinct xaa.accounting_attribute_code
4260 FROM xla_acct_attributes_b xaa
4261 ,xla_jlt_acct_attrs xja
4262 WHERE xaa.assignment_level_code = 'EVT_CLASS_JLT'
4263 AND xaa.assignment_required_code = 'G'
4264 AND xaa.accounting_attribute_code = xja.accounting_attribute_code
4265 AND xaa.assignment_group_code = l_assignment_group_code
4266 AND xja.application_id = p_application_id
4267 AND xja.amb_context_code = p_amb_context_code
4268 AND xja.event_class_code = p_event_class_code
4269 AND xja.accounting_line_type_code = l_accounting_line_type_code
4270 AND xja.accounting_line_code = l_accounting_line_code
4271 AND xja.source_code IS NULL;
4272
4273 CURSOR c_pe_mapping_groups(l_accounting_line_type_code VARCHAR2
4274 ,l_accounting_line_code VARCHAR2) IS
4275 SELECT distinct xaa.assignment_group_code
4276 FROM xla_jlt_acct_attrs xja, xla_acct_attributes_b xaa
4277 WHERE xja.application_id = p_application_id
4278 AND xja.amb_context_code = p_amb_context_code
4279 AND xja.event_class_code = p_event_class_code
4280 AND xja.accounting_line_type_code = l_accounting_line_type_code
4281 AND xja.accounting_line_code = l_accounting_line_code
4282 AND xja.accounting_attribute_code = xaa.accounting_attribute_code
4283 AND (xja.source_code IS NOT NULL
4284 OR xaa.inherited_flag = 'Y')
4285 UNION
4286 SELECT distinct xaa.assignment_group_code
4287 FROM xla_evt_class_acct_attrs xec, xla_acct_attributes_b xaa
4288 WHERE xec.application_id = p_application_id
4289 AND xec.event_class_code = p_event_class_code
4290 AND xec.accounting_attribute_code = xaa.accounting_attribute_code
4291 AND xaa.assignment_level_code = 'EVT_CLASS_ONLY'
4292 AND xec.default_flag = 'Y';
4293
4294 CURSOR c_pe_group_acct_sources(l_accounting_line_type_code VARCHAR2
4295 ,l_accounting_line_code VARCHAR2
4296 ,l_assignment_group_code VARCHAR2) IS
4297 SELECT distinct xaa.accounting_attribute_code
4298 FROM xla_acct_attributes_b xaa
4299 ,xla_jlt_acct_attrs xja
4300 WHERE xaa.assignment_level_code = 'EVT_CLASS_JLT'
4301 AND xaa.assignment_required_code = 'G'
4302 AND xaa.accounting_attribute_code = xja.accounting_attribute_code
4303 AND xaa.assignment_group_code = l_assignment_group_code
4304 AND xja.application_id = p_application_id
4305 AND xja.amb_context_code = p_amb_context_code
4306 AND xja.event_class_code = p_event_class_code
4307 AND xja.accounting_line_type_code = l_accounting_line_type_code
4308 AND xja.accounting_line_code = l_accounting_line_code
4309 AND xja.source_code IS NULL
4310 AND xaa.inherited_flag = 'N';
4311
4312 CURSOR c_bus_flow_acct_sources(l_accounting_line_type_code VARCHAR2
4313 ,l_accounting_line_code VARCHAR2) IS
4314 SELECT distinct xaa.accounting_attribute_code
4315 FROM xla_acct_attributes_b xaa
4316 ,xla_jlt_acct_attrs xja
4317 WHERE xaa.assignment_level_code = 'EVT_CLASS_JLT'
4318 AND xaa.assignment_required_code = 'G'
4319 AND xaa.accounting_attribute_code = xja.accounting_attribute_code
4320 AND xaa.assignment_group_code = 'BUSINESS_FLOW'
4321 AND xja.application_id = p_application_id
4322 AND xja.amb_context_code = p_amb_context_code
4323 AND xja.event_class_code = p_event_class_code
4324 AND xja.accounting_line_type_code = l_accounting_line_type_code
4325 AND xja.accounting_line_code = l_accounting_line_code
4326 and xja.source_code is null;
4327
4328 CURSOR c_mpa_acct_sources(l_accounting_line_type_code VARCHAR2
4329 ,l_accounting_line_code VARCHAR2) IS
4330 SELECT distinct xaa.accounting_attribute_code
4331 FROM xla_acct_attributes_b xaa
4332 ,xla_jlt_acct_attrs xja
4333 WHERE xaa.assignment_level_code = 'EVT_CLASS_JLT'
4334 AND xaa.assignment_required_code = 'G'
4335 AND xaa.accounting_attribute_code = xja.accounting_attribute_code
4336 AND xaa.assignment_group_code = 'MULTIPERIOD_CODE'
4337 AND xja.application_id = p_application_id
4338 AND xja.amb_context_code = p_amb_context_code
4339 AND xja.event_class_code = p_event_class_code
4340 AND xja.accounting_line_type_code = l_accounting_line_type_code
4341 AND xja.accounting_line_code = l_accounting_line_code
4342 and xja.source_code is null;
4343 l_return BOOLEAN;
4344 l_log_module VARCHAR2(240);
4345 l_business_method_code VARCHAR2(30);
4346 l_mpa_option_code VARCHAR2(30);
4347
4348 BEGIN
4349 IF g_log_enabled THEN
4350 l_log_module := C_DEFAULT_MODULE||'.chk_jlt_inv_acct_group_src';
4351 END IF;
4352
4353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4354 trace(p_msg => 'BEGIN of procedure chk_jlt_inv_acct_group_src'
4355 ,p_module => l_log_module
4356 ,p_level => C_LEVEL_PROCEDURE);
4357 END IF;
4358
4359 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4360 trace(p_msg => 'application_id = '||p_application_id||
4361 ',amb_context_code = '||p_amb_context_code||
4362 ',event_class_code = '||p_event_class_code||
4363 ',event_type_code = '||p_event_type_code||
4364 ',line_definition_owner_code = '||p_line_definition_owner_code||
4365 ',line_definition_code = '||p_line_definition_code
4366 ,p_module => l_log_module
4367 ,p_level => C_LEVEL_STATEMENT);
4368 END IF;
4369
4370 l_return := TRUE;
4371
4372 FOR l_jlt IN c_jlt_assgns LOOP
4373
4374 OPEN c_business_method(l_jlt.accounting_line_type_code
4375 ,l_jlt.accounting_line_code);
4376 FETCH c_business_method
4377 INTO l_business_method_code, l_mpa_option_code;
4378 CLOSE c_business_method;
4379
4380 IF l_business_method_code = 'PRIOR_ENTRY' THEN
4381 FOR l_err IN c_bus_flow_acct_sources(l_jlt.accounting_line_type_code
4382 ,l_jlt.accounting_line_code) LOOP
4383 l_return := FALSE;
4384 xla_amb_setup_err_pkg.stack_error
4385 (p_message_name => 'XLA_AB_BUS_FLOW_ACCT_SRC'
4386 ,p_message_type => 'E'
4387 ,p_message_category => 'LINE_TYPE'
4388 ,p_category_sequence => 10
4389 ,p_application_id => p_application_id
4390 ,p_amb_context_code => p_amb_context_code
4391 ,p_event_class_code => p_event_class_code
4392 ,p_event_type_code => p_event_type_code
4393 ,p_line_definition_owner_code => p_line_definition_owner_code
4394 ,p_line_definition_code => p_line_definition_code
4395 ,p_accounting_line_type_code => l_jlt.accounting_line_type_code
4396 ,p_accounting_line_code => l_jlt.accounting_line_code
4397 ,p_accounting_source_code => l_err.accounting_attribute_code
4398 ,p_accounting_group_code => 'BUSINESS_FLOW');
4399 END LOOP;
4400 END IF;
4401
4402 IF l_mpa_option_code <> 'NONE' THEN
4403 FOR l_err IN c_mpa_acct_sources(l_jlt.accounting_line_type_code
4404 ,l_jlt.accounting_line_code) LOOP
4405 l_return := FALSE;
4406 xla_amb_setup_err_pkg.stack_error
4407 (p_message_name => 'XLA_AB_MPA_ACCT_SRC'
4408 ,p_message_type => 'E'
4409 ,p_message_category => 'LINE_TYPE'
4410 ,p_category_sequence => 10
4411 ,p_application_id => p_application_id
4412 ,p_amb_context_code => p_amb_context_code
4413 ,p_event_class_code => p_event_class_code
4414 ,p_event_type_code => p_event_type_code
4415 ,p_line_definition_owner_code => p_line_definition_owner_code
4416 ,p_line_definition_code => p_line_definition_code
4417 ,p_accounting_line_type_code => l_jlt.accounting_line_type_code
4418 ,p_accounting_line_code => l_jlt.accounting_line_code
4419 ,p_accounting_source_code => l_err.accounting_attribute_code
4420 ,p_accounting_group_code => 'MULTIPERIOD_CODE');
4421 END LOOP;
4422 END IF;
4423
4424
4425 IF l_business_method_code <> 'PRIOR_ENTRY' THEN
4426
4427 FOR l_mapping_group IN c_mapping_groups(l_jlt.accounting_line_type_code
4428 ,l_jlt.accounting_line_code) LOOP
4429 FOR l_err IN c_group_acct_sources(l_jlt.accounting_line_type_code
4430 ,l_jlt.accounting_line_code
4431 ,l_mapping_group.assignment_group_code) LOOP
4432 l_return := FALSE;
4433 xla_amb_setup_err_pkg.stack_error
4434 (p_message_name => 'XLA_AB_LT_ACCT_GROUP_SRC'
4435 ,p_message_type => 'E'
4436 ,p_message_category => 'LINE_TYPE'
4437 ,p_category_sequence => 10
4438 ,p_application_id => p_application_id
4439 ,p_amb_context_code => p_amb_context_code
4440 ,p_event_class_code => p_event_class_code
4441 ,p_event_type_code => p_event_type_code
4442 ,p_line_definition_owner_code => p_line_definition_owner_code
4443 ,p_line_definition_code => p_line_definition_code
4444 ,p_accounting_line_type_code => l_jlt.accounting_line_type_code
4445 ,p_accounting_line_code => l_jlt.accounting_line_code
4446 ,p_accounting_source_code => l_err.accounting_attribute_code
4447 ,p_accounting_group_code => l_mapping_group.assignment_group_code);
4448 END LOOP;
4449 END LOOP;
4450 ELSE
4451 FOR l_pe_mapping_group IN c_pe_mapping_groups(l_jlt.accounting_line_type_code
4452 ,l_jlt.accounting_line_code) LOOP
4453 FOR l_err IN c_pe_group_acct_sources(l_jlt.accounting_line_type_code
4454 ,l_jlt.accounting_line_code
4455 ,l_pe_mapping_group.assignment_group_code) LOOP
4456 l_return := FALSE;
4457 xla_amb_setup_err_pkg.stack_error
4458 (p_message_name => 'XLA_AB_LT_ACCT_GROUP_SRC'
4459 ,p_message_type => 'E'
4460 ,p_message_category => 'LINE_TYPE'
4461 ,p_category_sequence => 10
4462 ,p_application_id => p_application_id
4463 ,p_amb_context_code => p_amb_context_code
4464 ,p_event_class_code => p_event_class_code
4465 ,p_event_type_code => p_event_type_code
4466 ,p_line_definition_owner_code => p_line_definition_owner_code
4467 ,p_line_definition_code => p_line_definition_code
4468 ,p_accounting_line_type_code => l_jlt.accounting_line_type_code
4469 ,p_accounting_line_code => l_jlt.accounting_line_code
4470 ,p_accounting_source_code => l_err.accounting_attribute_code
4471 ,p_accounting_group_code => l_pe_mapping_group.assignment_group_code);
4472 END LOOP;
4473 END LOOP;
4474 END IF;
4475 END LOOP;
4476
4477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4478 trace(p_msg => 'END of procedure chk_jlt_inv_acct_group_src'
4479 ,p_module => l_log_module
4480 ,p_level => C_LEVEL_PROCEDURE);
4481 END IF;
4482
4483 RETURN l_return;
4484
4485 EXCEPTION
4486 WHEN xla_exceptions_pkg.application_exception THEN
4487 IF (c_jlt_assgns%ISOPEN) THEN
4488 CLOSE c_jlt_assgns;
4489 END IF;
4490 IF (c_mapping_groups%ISOPEN) THEN
4491 CLOSE c_mapping_groups;
4492 END IF;
4493 IF (c_group_acct_sources%ISOPEN) THEN
4494 CLOSE c_group_acct_sources;
4495 END IF;
4496 IF (c_pe_mapping_groups%ISOPEN) THEN
4497 CLOSE c_mapping_groups;
4498 END IF;
4499 IF (c_pe_group_acct_sources%ISOPEN) THEN
4500 CLOSE c_group_acct_sources;
4501 END IF;
4502 RAISE;
4503
4504 WHEN OTHERS THEN
4505 IF (c_jlt_assgns%ISOPEN) THEN
4506 CLOSE c_jlt_assgns;
4507 END IF;
4508 IF (c_mapping_groups%ISOPEN) THEN
4509 CLOSE c_mapping_groups;
4510 END IF;
4511 IF (c_group_acct_sources%ISOPEN) THEN
4512 CLOSE c_group_acct_sources;
4513 END IF;
4514 IF (c_pe_mapping_groups%ISOPEN) THEN
4515 CLOSE c_mapping_groups;
4516 END IF;
4517 IF (c_pe_group_acct_sources%ISOPEN) THEN
4518 CLOSE c_group_acct_sources;
4519 END IF;
4520 xla_exceptions_pkg.raise_message
4521 (p_location => 'xla_line_definitions_pvt.chk_jlt_inv_acct_group_src');
4522
4523 END chk_jlt_inv_acct_group_src;
4524
4525 --=============================================================================
4526 --
4527 -- Name: validate_jlt_assgns
4528 -- Description: Validate JLT assignment of the line definition
4529 --
4530 --=============================================================================
4531 FUNCTION validate_jlt_assgns
4532 (p_application_id IN NUMBER
4533 ,p_amb_context_code IN VARCHAR2
4534 ,p_event_class_code IN VARCHAR2
4535 ,p_event_type_code IN VARCHAR2
4536 ,p_line_definition_owner_code IN VARCHAR2
4537 ,p_line_definition_code IN VARCHAR2)
4538 RETURN BOOLEAN
4539 IS
4540 l_return BOOLEAN;
4541 l_log_module VARCHAR2(240);
4542 BEGIN
4543 IF g_log_enabled THEN
4544 l_log_module := C_DEFAULT_MODULE||'.validate_jlt_assgns';
4545 END IF;
4546
4547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4548 trace(p_msg => 'BEGIN of procedure validate_jlt_assgns'
4549 ,p_module => l_log_module
4550 ,p_level => C_LEVEL_PROCEDURE);
4551 END IF;
4552
4553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4554 trace(p_msg => 'application_id = '||p_application_id||
4555 ',amb_context_code = '||p_amb_context_code||
4556 ',event_class_code = '||p_event_class_code||
4557 ',event_type_code = '||p_event_type_code||
4558 ',line_definition_owner_code = '||p_line_definition_owner_code||
4559 ',line_definition_code = '||p_line_definition_code
4560 ,p_module => l_log_module
4561 ,p_level => C_LEVEL_STATEMENT);
4562 END IF;
4563
4564 l_return := TRUE;
4565
4566 l_return := chk_jlt_exists
4567 (p_application_id => p_application_id
4568 ,p_amb_context_code => p_amb_context_code
4569 ,p_event_class_code => p_event_class_code
4570 ,p_event_type_code => p_event_type_code
4571 ,p_line_definition_owner_code => p_line_definition_owner_code
4572 ,p_line_definition_code => p_line_definition_code)
4573 AND l_return;
4574
4575 l_return := chk_jlt_is_enabled
4576 (p_application_id => p_application_id
4577 ,p_amb_context_code => p_amb_context_code
4578 ,p_event_class_code => p_event_class_code
4579 ,p_event_type_code => p_event_type_code
4580 ,p_line_definition_owner_code => p_line_definition_owner_code
4581 ,p_line_definition_code => p_line_definition_code)
4582 AND l_return;
4583
4584 l_return := chk_jlt_encum_type_exists
4585 (p_application_id => p_application_id
4586 ,p_amb_context_code => p_amb_context_code
4587 ,p_event_class_code => p_event_class_code
4588 ,p_event_type_code => p_event_type_code
4589 ,p_line_definition_owner_code => p_line_definition_owner_code
4590 ,p_line_definition_code => p_line_definition_code)
4591 AND l_return;
4592
4593 l_return := chk_jlt_acct_class_exists
4594 (p_application_id => p_application_id
4595 ,p_amb_context_code => p_amb_context_code
4596 ,p_event_class_code => p_event_class_code
4597 ,p_event_type_code => p_event_type_code
4598 ,p_line_definition_owner_code => p_line_definition_owner_code
4599 ,p_line_definition_code => p_line_definition_code)
4600 AND l_return;
4601
4602 l_return := chk_jlt_rounding_class_exists
4603 (p_application_id => p_application_id
4604 ,p_amb_context_code => p_amb_context_code
4605 ,p_event_class_code => p_event_class_code
4606 ,p_event_type_code => p_event_type_code
4607 ,p_line_definition_owner_code => p_line_definition_owner_code
4608 ,p_line_definition_code => p_line_definition_code)
4609 AND l_return;
4610
4611 l_return := chk_jlt_bflow_class_exists
4612 (p_application_id => p_application_id
4613 ,p_amb_context_code => p_amb_context_code
4614 ,p_event_class_code => p_event_class_code
4615 ,p_event_type_code => p_event_type_code
4616 ,p_line_definition_owner_code => p_line_definition_owner_code
4617 ,p_line_definition_code => p_line_definition_code)
4618 AND l_return;
4619
4620 l_return := chk_jlt_invalid_source_in_cond
4621 (p_application_id => p_application_id
4622 ,p_amb_context_code => p_amb_context_code
4623 ,p_event_class_code => p_event_class_code
4624 ,p_event_type_code => p_event_type_code
4625 ,p_line_definition_owner_code => p_line_definition_owner_code
4626 ,p_line_definition_code => p_line_definition_code)
4627 AND l_return;
4628
4629 l_return := chk_jlt_invalid_source_in_jlt -- 5642205
4630 (p_application_id => p_application_id
4631 ,p_amb_context_code => p_amb_context_code
4632 ,p_event_class_code => p_event_class_code
4633 ,p_event_type_code => p_event_type_code
4634 ,p_line_definition_owner_code => p_line_definition_owner_code
4635 ,p_line_definition_code => p_line_definition_code)
4636 AND l_return;
4637
4638 l_return := chk_jlt_acct_source_assigned
4639 (p_application_id => p_application_id
4640 ,p_amb_context_code => p_amb_context_code
4641 ,p_event_class_code => p_event_class_code
4642 ,p_event_type_code => p_event_type_code
4643 ,p_line_definition_owner_code => p_line_definition_owner_code
4644 ,p_line_definition_code => p_line_definition_code)
4645 AND l_return;
4646
4647 l_return := chk_jlt_inv_acct_group_src
4648 (p_application_id => p_application_id
4649 ,p_amb_context_code => p_amb_context_code
4650 ,p_event_class_code => p_event_class_code
4651 ,p_event_type_code => p_event_type_code
4652 ,p_line_definition_owner_code => p_line_definition_owner_code
4653 ,p_line_definition_code => p_line_definition_code)
4654 AND l_return;
4655
4656 l_return := chk_jlt_business_class
4657 (p_application_id => p_application_id
4658 ,p_amb_context_code => p_amb_context_code
4659 ,p_event_class_code => p_event_class_code
4660 ,p_event_type_code => p_event_type_code
4661 ,p_line_definition_owner_code => p_line_definition_owner_code
4662 ,p_line_definition_code => p_line_definition_code)
4663 AND l_return;
4664
4665
4666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4667 trace(p_msg => 'END of procedure validate_jlt_assgns'
4668 ,p_module => l_log_module
4669 ,p_level => C_LEVEL_PROCEDURE);
4670 END IF;
4671
4672 RETURN l_return;
4673
4674 EXCEPTION
4675 WHEN xla_exceptions_pkg.application_exception THEN
4676 RAISE;
4677 WHEN OTHERS THEN
4678 xla_exceptions_pkg.raise_message
4679 (p_location => 'xla_line_definitions_pvt.validate_jlt_assgns');
4680 END validate_jlt_assgns;
4681
4682 --=============================================================================
4683 --
4684 -- Name: chk_line_desc_is_enabled
4685 -- Description: Check if all line description of the line definition are enabled
4686 --
4687 --=============================================================================
4688 FUNCTION chk_line_desc_is_enabled
4689 (p_application_id IN NUMBER
4690 ,p_amb_context_code IN VARCHAR2
4691 ,p_event_class_code IN VARCHAR2
4692 ,p_event_type_code IN VARCHAR2
4693 ,p_line_definition_owner_code IN VARCHAR2
4694 ,p_line_definition_code IN VARCHAR2)
4695 RETURN BOOLEAN
4696 IS
4697 CURSOR c_invalid_line_desc IS
4698 SELECT distinct xdb.description_type_code, xdb.description_code
4699 FROM xla_line_defn_jlt_assgns xjl
4700 ,xla_descriptions_b xdb
4701 WHERE xjl.application_id = p_application_id
4702 AND xjl.amb_context_code = p_amb_context_code
4703 AND xjl.event_class_code = p_event_class_code
4704 AND xjl.event_type_code = p_event_type_code
4705 AND xjl.line_definition_owner_code = p_line_definition_owner_code
4706 AND xjl.line_definition_code = p_line_definition_code
4707 AND xjl.active_flag = 'Y'
4708 AND xjl.description_type_code IS NOT NULL
4709 AND xdb.application_id = xjl.application_id
4710 AND xdb.amb_context_code = xjl.amb_context_code
4711 AND xdb.description_type_code = xjl.description_type_code
4712 AND xdb.description_code = xjl.description_code
4713 AND xdb.enabled_flag <> 'Y';
4714
4715 l_return BOOLEAN;
4716 l_log_module VARCHAR2(240);
4717 BEGIN
4718 IF g_log_enabled THEN
4719 l_log_module := C_DEFAULT_MODULE||'.chk_line_desc_is_enabled';
4720 END IF;
4721
4722 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4723 trace(p_msg => 'BEGIN of procedure chk_line_desc_is_enabled'
4724 ,p_module => l_log_module
4725 ,p_level => C_LEVEL_PROCEDURE);
4726 END IF;
4727
4728 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4729 trace(p_msg => 'application_id = '||p_application_id||
4730 ',amb_context_code = '||p_amb_context_code||
4731 ',event_class_code = '||p_event_class_code||
4732 ',event_type_code = '||p_event_type_code||
4733 ',line_definition_owner_code = '||p_line_definition_owner_code||
4734 ',line_definition_code = '||p_line_definition_code
4735 ,p_module => l_log_module
4736 ,p_level => C_LEVEL_STATEMENT);
4737 END IF;
4738
4739 l_return := TRUE;
4740
4741 FOR l_err IN c_invalid_line_desc LOOP
4742 l_return := FALSE;
4743
4744 xla_amb_setup_err_pkg.stack_error
4745 (p_message_name => 'XLA_AB_DISABLD_LINE_DESC'
4746 ,p_message_type => 'E'
4747 ,p_message_category => 'LINE_DESCRIPTION'
4748 ,p_category_sequence => 11
4749 ,p_application_id => p_application_id
4750 ,p_amb_context_code => p_amb_context_code
4751 ,p_event_class_code => p_event_class_code
4752 ,p_event_type_code => p_event_type_code
4753 ,p_line_definition_owner_code => p_line_definition_owner_code
4754 ,p_line_definition_code => p_line_definition_code
4755 ,p_description_type_code => l_err.description_type_code
4756 ,p_description_code => l_err.description_code);
4757 END LOOP;
4758
4759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4760 trace(p_msg => 'END of procedure chk_line_desc_is_enabled'
4761 ,p_module => l_log_module
4762 ,p_level => C_LEVEL_PROCEDURE);
4763 END IF;
4764
4765 RETURN l_return;
4766
4767 EXCEPTION
4768 WHEN xla_exceptions_pkg.application_exception THEN
4769 IF (c_invalid_line_desc%ISOPEN) THEN
4770 CLOSE c_invalid_line_desc;
4771 END IF;
4772 RAISE;
4773
4774 WHEN OTHERS THEN
4775 IF (c_invalid_line_desc%ISOPEN) THEN
4776 CLOSE c_invalid_line_desc;
4777 END IF;
4778 xla_exceptions_pkg.raise_message
4779 (p_location => 'xla_line_definitions_pvt.chk_line_desc_is_enabled');
4780
4781 END chk_line_desc_is_enabled;
4782
4783 --=============================================================================
4784 --
4785 -- Name: chk_line_desc_inv_src_in_cond
4786 -- Description: Check if all sources used in the JLT condition is valid
4787 --
4788 --=============================================================================
4789 FUNCTION chk_line_desc_inv_src_in_cond
4790 (p_application_id IN NUMBER
4791 ,p_amb_context_code IN VARCHAR2
4792 ,p_event_class_code IN VARCHAR2
4793 ,p_event_type_code IN VARCHAR2
4794 ,p_line_definition_owner_code IN VARCHAR2
4795 ,p_line_definition_code IN VARCHAR2)
4796 RETURN BOOLEAN
4797 IS
4798 --
4799 -- Get all JLT that have sources that do not belong to the event class of the
4800 -- line definition
4801 --
4802 CURSOR c_invalid_sources IS
4803 SELECT distinct xjl.description_type_code, xjl.description_code,
4804 xco.source_type_code source_type_code, xco.source_code source_code
4805 FROM xla_conditions xco
4806 ,xla_desc_priorities xdp
4807 ,xla_line_defn_jlt_assgns xjl
4808 WHERE xco.description_prio_id = xdp.description_prio_id
4809 AND xdp.application_id = xjl.application_id
4810 AND xdp.amb_context_code = xjl.amb_context_code
4811 AND xdp.description_type_code = xjl.description_type_code
4812 AND xdp.description_code = xjl.description_code
4813 AND xjl.application_id = p_application_id
4814 AND xjl.amb_context_code = p_amb_context_code
4815 AND xjl.event_class_code = p_event_class_code
4816 AND xjl.event_type_code = p_event_type_code
4817 AND xjl.line_definition_owner_code = p_line_definition_owner_code
4818 AND xjl.line_definition_code = p_line_definition_code
4819 AND xjl.active_flag = 'Y'
4820 AND xco.source_type_code = 'S'
4821 AND NOT EXISTS
4822 (SELECT 'y'
4823 FROM xla_event_sources xes
4824 WHERE xes.source_application_id = xco.source_application_id
4825 AND xes.source_type_code = xco.source_type_code
4826 AND xes.source_code = xco.source_code
4827 AND xes.application_id = xjl.application_id
4828 AND xes.event_class_code = xjl.event_class_code
4829 AND xes.active_flag = 'Y')
4830 UNION
4831 SELECT distinct xjl.description_type_code, xjl.description_code,
4832 xco.value_source_type_code source_type_code, xco.value_source_code source_code
4833 FROM xla_conditions xco
4834 ,xla_desc_priorities xdp
4835 ,xla_line_defn_jlt_assgns xjl
4836 WHERE xco.description_prio_id = xdp.description_prio_id
4837 AND xdp.application_id = xjl.application_id
4838 AND xdp.amb_context_code = xjl.amb_context_code
4839 AND xdp.description_type_code = xjl.description_type_code
4840 AND xdp.description_code = xjl.description_code
4841 AND xjl.application_id = p_application_id
4842 AND xjl.amb_context_code = p_amb_context_code
4843 AND xjl.event_class_code = p_event_class_code
4844 AND xjl.event_type_code = p_event_type_code
4845 AND xjl.line_definition_owner_code = p_line_definition_owner_code
4846 AND xjl.line_definition_code = p_line_definition_code
4847 AND xjl.active_flag = 'Y'
4848 AND xco.value_source_type_code = 'S'
4849 AND NOT EXISTS
4850 (SELECT 'y'
4851 FROM xla_event_sources xes
4852 WHERE xes.source_application_id = xco.value_source_application_id
4853 AND xes.source_type_code = xco.value_source_type_code
4854 AND xes.source_code = xco.value_source_code
4855 AND xes.application_id = xjl.application_id
4856 AND xes.event_class_code = xjl.event_class_code
4857 AND xes.active_flag = 'Y');
4858
4859 CURSOR c_der_sources IS
4860 SELECT distinct xjl.description_type_code, xjl.description_code,
4861 xco.source_type_code source_type_code, xco.source_code source_code
4862 FROM xla_conditions xco
4863 ,xla_desc_priorities xdp
4864 ,xla_line_defn_jlt_assgns xjl
4865 WHERE xco.description_prio_id = xdp.description_prio_id
4866 AND xdp.application_id = xjl.application_id
4867 AND xdp.amb_context_code = xjl.amb_context_code
4868 AND xdp.description_type_code = xjl.description_type_code
4869 AND xdp.description_code = xjl.description_code
4870 AND xjl.application_id = p_application_id
4871 AND xjl.amb_context_code = p_amb_context_code
4872 AND xjl.event_class_code = p_event_class_code
4873 AND xjl.event_type_code = p_event_type_code
4874 AND xjl.line_definition_owner_code = p_line_definition_owner_code
4875 AND xjl.line_definition_code = p_line_definition_code
4876 AND xjl.active_flag = 'Y'
4877 AND xco.source_type_code = 'D'
4878 UNION
4879 SELECT distinct xjl.description_type_code, xjl.description_code,
4880 xco.value_source_type_code source_type_code, xco.value_source_code source_code
4881 FROM xla_conditions xco
4882 ,xla_desc_priorities xdp
4883 ,xla_line_defn_jlt_assgns xjl
4884 WHERE xco.description_prio_id = xdp.description_prio_id
4885 AND xdp.application_id = xjl.application_id
4886 AND xdp.amb_context_code = xjl.amb_context_code
4887 AND xdp.description_type_code = xjl.description_type_code
4888 AND xdp.description_code = xjl.description_code
4889 AND xjl.application_id = p_application_id
4890 AND xjl.amb_context_code = p_amb_context_code
4891 AND xjl.event_class_code = p_event_class_code
4892 AND xjl.event_type_code = p_event_type_code
4893 AND xjl.line_definition_owner_code = p_line_definition_owner_code
4894 AND xjl.line_definition_code = p_line_definition_code
4895 AND xjl.active_flag = 'Y'
4896 AND xco.value_source_type_code = 'D';
4897
4898 l_return BOOLEAN;
4899 l_log_module VARCHAR2(240);
4900 BEGIN
4901 IF g_log_enabled THEN
4902 l_log_module := C_DEFAULT_MODULE||'.chk_line_desc_inv_src_in_cond';
4903 END IF;
4904
4905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4906 trace(p_msg => 'BEGIN of procedure chk_line_desc_inv_src_in_cond'
4907 ,p_module => l_log_module
4908 ,p_level => C_LEVEL_PROCEDURE);
4909 END IF;
4910
4911 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
4912 trace(p_msg => 'application_id = '||p_application_id||
4913 ',amb_context_code = '||p_amb_context_code||
4914 ',event_class_code = '||p_event_class_code||
4915 ',event_type_code = '||p_event_type_code||
4916 ',line_definition_owner_code = '||p_line_definition_owner_code||
4917 ',line_definition_code = '||p_line_definition_code
4918 ,p_module => l_log_module
4919 ,p_level => C_LEVEL_STATEMENT);
4920 END IF;
4921
4922 l_return := TRUE;
4923
4924 --
4925 -- Check if the condition of any JLT have seeded sources that are not assigned
4926 -- to the event class of the line definition
4927 --
4928 FOR l_err IN c_invalid_sources LOOP
4929 l_return := FALSE;
4930
4931 xla_amb_setup_err_pkg.stack_error
4932 (p_message_name => 'XLA_AB_LINE_DES_CON_SRC'
4933 ,p_message_type => 'E'
4934 ,p_message_category => 'LINE_DESCRIPTION'
4935 ,p_category_sequence => 11
4936 ,p_application_id => p_application_id
4937 ,p_amb_context_code => p_amb_context_code
4938 ,p_line_definition_owner_code => p_line_definition_owner_code
4939 ,p_line_definition_code => p_line_definition_code
4940 ,p_event_class_code => p_event_class_code
4941 ,p_event_type_code => p_event_type_code
4942 ,p_description_type_code => l_err.description_type_code
4943 ,p_description_code => l_err.description_code
4944 ,p_source_type_code => l_err.source_type_code
4945 ,p_source_code => l_err.source_code);
4946 END LOOP;
4947
4948 FOR l_err IN c_der_sources LOOP
4949 IF xla_sources_pkg.derived_source_is_invalid
4950 (p_application_id => p_application_id
4951 ,p_derived_source_code => l_err.source_code
4952 ,p_derived_source_type_code => 'D'
4953 ,p_event_class_code => p_event_class_code
4954 ,p_level => 'L') = 'TRUE' THEN
4955
4956 l_return := FALSE;
4957
4958 xla_amb_setup_err_pkg.stack_error
4959 (p_message_name => 'XLA_AB_LINE_DES_CON_SRC'
4960 ,p_message_type => 'E'
4961 ,p_message_category => 'LINE_DESCRIPTION'
4962 ,p_category_sequence => 11
4963 ,p_application_id => p_application_id
4964 ,p_amb_context_code => p_amb_context_code
4965 ,p_line_definition_owner_code => p_line_definition_owner_code
4966 ,p_line_definition_code => p_line_definition_code
4967 ,p_event_class_code => p_event_class_code
4968 ,p_event_type_code => p_event_type_code
4969 ,p_description_type_code => l_err.description_type_code
4970 ,p_description_code => l_err.description_code
4971 ,p_source_type_code => l_err.source_type_code
4972 ,p_source_code => l_err.source_code);
4973
4974 END IF;
4975 END LOOP;
4976
4977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4978 trace(p_msg => 'END of procedure chk_line_desc_inv_src_in_cond'
4979 ,p_module => l_log_module
4980 ,p_level => C_LEVEL_PROCEDURE);
4981 END IF;
4982
4983 RETURN l_return;
4984
4985 EXCEPTION
4986 WHEN xla_exceptions_pkg.application_exception THEN
4987 IF (c_invalid_sources%ISOPEN) THEN
4988 CLOSE c_invalid_sources;
4989 END IF;
4990 IF (c_der_sources%ISOPEN) THEN
4991 CLOSE c_der_sources;
4992 END IF;
4993 RAISE;
4994
4995 WHEN OTHERS THEN
4996 IF (c_invalid_sources%ISOPEN) THEN
4997 CLOSE c_invalid_sources;
4998 END IF;
4999 IF (c_der_sources%ISOPEN) THEN
5000 CLOSE c_der_sources;
5001 END IF;
5002 xla_exceptions_pkg.raise_message
5003 (p_location => 'xla_line_definitions_pvt.chk_line_desc_inv_src_in_cond');
5004
5005 END chk_line_desc_inv_src_in_cond;
5006
5007 --=============================================================================
5008 --
5009 -- Name: chk_line_desc_inv_src_in_dtl
5010 -- Description: Check if all sources used in the JLT condition is valid
5011 --
5012 --=============================================================================
5013 FUNCTION chk_line_desc_inv_src_in_dtl
5014 (p_application_id IN NUMBER
5015 ,p_amb_context_code IN VARCHAR2
5016 ,p_event_class_code IN VARCHAR2
5017 ,p_event_type_code IN VARCHAR2
5018 ,p_line_definition_owner_code IN VARCHAR2
5019 ,p_line_definition_code IN VARCHAR2)
5020 RETURN BOOLEAN
5021 IS
5022 --
5023 -- Get all JLT that have sources that do not belong to the event class of the
5024 -- line definition
5025 --
5026 CURSOR c_invalid_sources IS
5027 SELECT distinct xjl.description_type_code, xjl.description_code,
5028 xdd.source_type_code, xdd.source_code
5029 FROM xla_descript_details_b xdd
5030 ,xla_desc_priorities xdp
5031 ,xla_line_defn_jlt_assgns xjl
5032 WHERE xdd.description_prio_id = xdp.description_prio_id
5033 AND xdp.application_id = xjl.application_id
5034 AND xdp.amb_context_code = xjl.amb_context_code
5035 AND xdp.description_type_code = xjl.description_type_code
5036 AND xdp.description_code = xjl.description_code
5037 AND xjl.application_id = p_application_id
5038 AND xjl.amb_context_code = p_amb_context_code
5039 AND xjl.event_class_code = p_event_class_code
5040 AND xjl.event_type_code = p_event_type_code
5041 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5042 AND xjl.line_definition_code = p_line_definition_code
5043 AND xjl.active_flag = 'Y'
5044 AND xdd.source_type_code = 'S'
5045 AND NOT EXISTS
5046 (SELECT 'y'
5047 FROM xla_event_sources xes
5048 WHERE xes.source_application_id = xdd.source_application_id
5049 AND xes.source_type_code = xdd.source_type_code
5050 AND xes.source_code = xdd.source_code
5051 AND xes.application_id = xjl.application_id
5052 AND xes.event_class_code = xjl.event_class_code
5053 AND xes.active_flag = 'Y');
5054
5055 CURSOR c_der_sources IS
5056 SELECT distinct xjl.description_type_code, xjl.description_code,
5057 xdd.source_type_code, xdd.source_code
5058 FROM xla_descript_details_b xdd
5059 ,xla_desc_priorities xdp
5060 ,xla_line_defn_jlt_assgns xjl
5061 WHERE xdd.description_prio_id = xdp.description_prio_id
5062 AND xdp.application_id = xjl.application_id
5063 AND xdp.amb_context_code = xjl.amb_context_code
5064 AND xdp.description_type_code = xjl.description_type_code
5065 AND xdp.description_code = xjl.description_code
5066 AND xjl.application_id = p_application_id
5067 AND xjl.amb_context_code = p_amb_context_code
5068 AND xjl.event_class_code = p_event_class_code
5069 AND xjl.event_type_code = p_event_type_code
5070 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5071 AND xjl.line_definition_code = p_line_definition_code
5072 AND xjl.active_flag = 'Y'
5073 AND xdd.source_type_code = 'D';
5074
5075 l_return BOOLEAN;
5076 l_log_module VARCHAR2(240);
5077 BEGIN
5078 IF g_log_enabled THEN
5079 l_log_module := C_DEFAULT_MODULE||'.chk_line_desc_inv_src_in_dtl';
5080 END IF;
5081
5082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5083 trace(p_msg => 'BEGIN of procedure chk_line_desc_inv_src_in_dtl'
5084 ,p_module => l_log_module
5085 ,p_level => C_LEVEL_PROCEDURE);
5086 END IF;
5087
5088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5089 trace(p_msg => 'application_id = '||p_application_id||
5090 ',amb_context_code = '||p_amb_context_code||
5091 ',event_class_code = '||p_event_class_code||
5092 ',event_type_code = '||p_event_type_code||
5093 ',line_definition_owner_code = '||p_line_definition_owner_code||
5094 ',line_definition_code = '||p_line_definition_code
5095 ,p_module => l_log_module
5096 ,p_level => C_LEVEL_STATEMENT);
5097 END IF;
5098
5099 l_return := TRUE;
5100
5101 --
5102 -- Check if the condition of any JLT have seeded sources that are not assigned
5103 -- to the event class of the line definition
5104 --
5105 FOR l_err IN c_invalid_sources LOOP
5106 l_return := FALSE;
5107
5108 xla_amb_setup_err_pkg.stack_error
5109 (p_message_name => 'XLA_AB_LINE_DES_DET_SRC'
5110 ,p_message_type => 'E'
5111 ,p_message_category => 'LINE_DESCRIPTION'
5112 ,p_category_sequence => 11
5113 ,p_application_id => p_application_id
5114 ,p_amb_context_code => p_amb_context_code
5115 ,p_line_definition_owner_code => p_line_definition_owner_code
5116 ,p_line_definition_code => p_line_definition_code
5117 ,p_event_class_code => p_event_class_code
5118 ,p_event_type_code => p_event_type_code
5119 ,p_description_type_code => l_err.description_type_code
5120 ,p_description_code => l_err.description_code
5121 ,p_source_type_code => l_err.source_type_code
5122 ,p_source_code => l_err.source_code);
5123 END LOOP;
5124
5125 FOR l_err IN c_der_sources LOOP
5126 IF xla_sources_pkg.derived_source_is_invalid
5127 (p_application_id => p_application_id
5128 ,p_derived_source_code => l_err.source_code
5129 ,p_derived_source_type_code => 'D'
5130 ,p_event_class_code => p_event_class_code
5131 ,p_level => 'L') = 'TRUE' THEN
5132
5133 l_return := FALSE;
5134
5135 xla_amb_setup_err_pkg.stack_error
5136 (p_message_name => 'XLA_AB_LINE_DES_DET_SRC'
5137 ,p_message_type => 'E'
5138 ,p_message_category => 'LINE_DESCRIPTION'
5139 ,p_category_sequence => 11
5140 ,p_application_id => p_application_id
5141 ,p_amb_context_code => p_amb_context_code
5142 ,p_line_definition_owner_code => p_line_definition_owner_code
5143 ,p_line_definition_code => p_line_definition_code
5144 ,p_event_class_code => p_event_class_code
5145 ,p_event_type_code => p_event_type_code
5146 ,p_description_type_code => l_err.description_type_code
5147 ,p_description_code => l_err.description_code
5148 ,p_source_type_code => l_err.source_type_code
5149 ,p_source_code => l_err.source_code);
5150 END IF;
5151 END LOOP;
5152
5153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5154 trace(p_msg => 'END of procedure chk_line_desc_inv_src_in_dtl'
5155 ,p_module => l_log_module
5156 ,p_level => C_LEVEL_PROCEDURE);
5157 END IF;
5158
5159 RETURN l_return;
5160
5161 EXCEPTION
5162 WHEN xla_exceptions_pkg.application_exception THEN
5163 IF (c_invalid_sources%ISOPEN) THEN
5164 CLOSE c_invalid_sources;
5165 END IF;
5166 IF (c_der_sources%ISOPEN) THEN
5167 CLOSE c_der_sources;
5168 END IF;
5169 RAISE;
5170
5171 WHEN OTHERS THEN
5172 IF (c_invalid_sources%ISOPEN) THEN
5173 CLOSE c_invalid_sources;
5174 END IF;
5175 IF (c_der_sources%ISOPEN) THEN
5176 CLOSE c_der_sources;
5177 END IF;
5178 xla_exceptions_pkg.raise_message
5179 (p_location => 'xla_line_definitions_pvt.chk_line_desc_inv_src_in_dtl');
5180
5181 END chk_line_desc_inv_src_in_dtl;
5182
5183
5184
5185 --=============================================================================
5186 --
5187 -- Name: validate_line_descriptions
5188 -- Description: Validate JLT assignment of the line definition
5189 --
5190 --=============================================================================
5191 FUNCTION validate_line_descriptions
5192 (p_application_id IN NUMBER
5193 ,p_amb_context_code IN VARCHAR2
5194 ,p_event_class_code IN VARCHAR2
5195 ,p_event_type_code IN VARCHAR2
5196 ,p_line_definition_owner_code IN VARCHAR2
5197 ,p_line_definition_code IN VARCHAR2)
5198 RETURN BOOLEAN
5199 IS
5200 l_return BOOLEAN;
5201 l_log_module VARCHAR2(240);
5202 BEGIN
5203 IF g_log_enabled THEN
5204 l_log_module := C_DEFAULT_MODULE||'.validate_line_descriptions';
5205 END IF;
5206
5207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5208 trace(p_msg => 'BEGIN of procedure validate_line_descriptions'
5209 ,p_module => l_log_module
5210 ,p_level => C_LEVEL_PROCEDURE);
5211 END IF;
5212
5213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5214 trace(p_msg => 'application_id = '||p_application_id||
5215 ',amb_context_code = '||p_amb_context_code||
5216 ',event_class_code = '||p_event_class_code||
5217 ',event_type_code = '||p_event_type_code||
5218 ',line_definition_owner_code = '||p_line_definition_owner_code||
5219 ',line_definition_code = '||p_line_definition_code
5220 ,p_module => l_log_module
5221 ,p_level => C_LEVEL_STATEMENT);
5222 END IF;
5223
5224 l_return := TRUE;
5225
5226 l_return := chk_line_desc_is_enabled
5227 (p_application_id => p_application_id
5228 ,p_amb_context_code => p_amb_context_code
5229 ,p_event_class_code => p_event_class_code
5230 ,p_event_type_code => p_event_type_code
5231 ,p_line_definition_owner_code => p_line_definition_owner_code
5232 ,p_line_definition_code => p_line_definition_code)
5233 AND l_return;
5234
5235 l_return := chk_line_desc_inv_src_in_cond
5236 (p_application_id => p_application_id
5237 ,p_amb_context_code => p_amb_context_code
5238 ,p_event_class_code => p_event_class_code
5239 ,p_event_type_code => p_event_type_code
5240 ,p_line_definition_owner_code => p_line_definition_owner_code
5241 ,p_line_definition_code => p_line_definition_code)
5242 AND l_return;
5243
5244 l_return := chk_line_desc_inv_src_in_dtl
5245 (p_application_id => p_application_id
5246 ,p_amb_context_code => p_amb_context_code
5247 ,p_event_class_code => p_event_class_code
5248 ,p_event_type_code => p_event_type_code
5249 ,p_line_definition_owner_code => p_line_definition_owner_code
5250 ,p_line_definition_code => p_line_definition_code)
5251 AND l_return;
5252
5253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5254 trace(p_msg => 'END of procedure validate_line_descriptions'
5255 ,p_module => l_log_module
5256 ,p_level => C_LEVEL_PROCEDURE);
5257 END IF;
5258
5259 RETURN l_return;
5260
5261 EXCEPTION
5262 WHEN xla_exceptions_pkg.application_exception THEN
5263 RAISE;
5264 WHEN OTHERS THEN
5265 xla_exceptions_pkg.raise_message
5266 (p_location => 'xla_line_definitions_pvt.validate_line_descriptions');
5267 END validate_line_descriptions;
5268
5269 --=============================================================================
5270 --
5271 -- Name: chk_line_ac_is_enabled
5272 -- Description: Check if all line analytical criteria of the line definition
5273 -- are enabled
5274 --
5275 --=============================================================================
5276 FUNCTION chk_line_ac_is_enabled
5277 (p_application_id IN NUMBER
5278 ,p_amb_context_code IN VARCHAR2
5279 ,p_event_class_code IN VARCHAR2
5280 ,p_event_type_code IN VARCHAR2
5281 ,p_line_definition_owner_code IN VARCHAR2
5282 ,p_line_definition_code IN VARCHAR2)
5283 RETURN BOOLEAN
5284 IS
5285 CURSOR c_invalid_line_ac IS
5286 SELECT distinct xah.analytical_criterion_type_code, xah.analytical_criterion_code
5287 FROM xla_line_defn_ac_assgns xac
5288 ,xla_line_defn_jlt_assgns xjl
5289 ,xla_analytical_hdrs_b xah
5290 WHERE xah.amb_context_code = xac.amb_context_code
5291 AND xah.analytical_criterion_code = xac.analytical_criterion_code
5292 AND xah.analytical_criterion_type_code = xac.analytical_criterion_type_code
5293 AND xah.enabled_flag <> 'Y'
5294 AND xac.application_id = xjl.application_id
5295 AND xac.amb_context_code = xjl.amb_context_code
5296 AND xac.event_class_code = xjl.event_class_code
5297 AND xac.event_type_code = xjl.event_type_code
5298 AND xac.line_definition_code = xjl.line_definition_code
5299 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
5300 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
5301 AND xac.accounting_line_code = xjl.accounting_line_code
5302 AND xjl.application_id = p_application_id
5303 AND xjl.amb_context_code = p_amb_context_code
5304 AND xjl.event_class_code = p_event_class_code
5305 AND xjl.event_type_code = p_event_type_code
5306 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5307 AND xjl.line_definition_code = p_line_definition_code
5308 AND xjl.active_flag = 'Y';
5309
5310 l_return BOOLEAN;
5311 l_log_module VARCHAR2(240);
5312 BEGIN
5313 IF g_log_enabled THEN
5314 l_log_module := C_DEFAULT_MODULE||'.chk_line_ac_is_enabled';
5315 END IF;
5316
5317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5318 trace(p_msg => 'BEGIN of procedure chk_line_ac_is_enabled'
5319 ,p_module => l_log_module
5320 ,p_level => C_LEVEL_PROCEDURE);
5321 END IF;
5322
5323 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5324 trace(p_msg => 'application_id = '||p_application_id||
5325 ',amb_context_code = '||p_amb_context_code||
5326 ',event_class_code = '||p_event_class_code||
5327 ',event_type_code = '||p_event_type_code||
5328 ',line_definition_owner_code = '||p_line_definition_owner_code||
5329 ',line_definition_code = '||p_line_definition_code
5330 ,p_module => l_log_module
5331 ,p_level => C_LEVEL_STATEMENT);
5332 END IF;
5333
5334 l_return := TRUE;
5335
5336 FOR l_err IN c_invalid_line_ac LOOP
5337 l_return := FALSE;
5338
5339 xla_amb_setup_err_pkg.stack_error
5340 (p_message_name => 'XLA_AB_DISABLD_LINE_AC'
5341 ,p_message_type => 'E'
5342 ,p_message_category => 'LINE_AC'
5343 ,p_category_sequence => 12
5344 ,p_application_id => p_application_id
5345 ,p_amb_context_code => p_amb_context_code
5346 ,p_event_class_code => p_event_class_code
5347 ,p_event_type_code => p_event_type_code
5348 ,p_line_definition_owner_code => p_line_definition_owner_code
5349 ,p_line_definition_code => p_line_definition_code
5350 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
5351 ,p_anal_criterion_code => l_err.analytical_criterion_code);
5352 END LOOP;
5353
5354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5355 trace(p_msg => 'END of procedure chk_line_ac_is_enabled'
5356 ,p_module => l_log_module
5357 ,p_level => C_LEVEL_PROCEDURE);
5358 END IF;
5359
5360 RETURN l_return;
5361
5362 EXCEPTION
5363 WHEN xla_exceptions_pkg.application_exception THEN
5364 IF (c_invalid_line_ac%ISOPEN) THEN
5365 CLOSE c_invalid_line_ac;
5366 END IF;
5367 RAISE;
5368
5369 WHEN OTHERS THEN
5370 IF (c_invalid_line_ac%ISOPEN) THEN
5371 CLOSE c_invalid_line_ac;
5372 END IF;
5373 xla_exceptions_pkg.raise_message
5374 (p_location => 'xla_line_definitions_pvt.chk_line_ac_is_enabled');
5375
5376 END chk_line_ac_is_enabled;
5377
5378 --=============================================================================
5379 --
5380 -- Name: chk_ac_has_details
5381 -- Description:
5382 --
5383 --=============================================================================
5384 FUNCTION chk_ac_has_details
5385 (p_application_id IN NUMBER
5386 ,p_amb_context_code IN VARCHAR2
5387 ,p_event_class_code IN VARCHAR2
5388 ,p_event_type_code IN VARCHAR2
5389 ,p_line_definition_owner_code IN VARCHAR2
5390 ,p_line_definition_code IN VARCHAR2)
5391 RETURN BOOLEAN
5392 IS
5393 CURSOR c_invalid_ac IS
5394 SELECT distinct xac.analytical_criterion_type_code, xac.analytical_criterion_code
5395 FROM xla_line_defn_ac_assgns xac
5396 ,xla_line_defn_jlt_assgns xjl
5397 WHERE xac.application_id = xjl.application_id
5398 AND xac.amb_context_code = xjl.amb_context_code
5399 AND xac.event_class_code = xjl.event_class_code
5400 AND xac.event_type_code = xjl.event_type_code
5401 AND xac.line_definition_code = xjl.line_definition_code
5402 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
5403 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
5404 AND xac.accounting_line_code = xjl.accounting_line_code
5405 AND xjl.application_id = p_application_id
5406 AND xjl.amb_context_code = p_amb_context_code
5407 AND xjl.event_class_code = p_event_class_code
5408 AND xjl.event_type_code = p_event_type_code
5409 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5410 AND xjl.line_definition_code = p_line_definition_code
5411 AND xjl.active_flag = 'Y'
5412 AND NOT EXISTS
5413 (SELECT 'x'
5414 FROM xla_analytical_sources xas
5415 WHERE xas.application_id = xac.application_id
5416 AND xas.amb_context_code = xac.amb_context_code
5417 AND xas.event_class_code = xac.event_class_code
5418 AND xas.analytical_criterion_code = xac.analytical_criterion_code
5419 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code);
5420
5421 l_return BOOLEAN;
5422 l_log_module VARCHAR2(240);
5423 BEGIN
5424 IF g_log_enabled THEN
5425 l_log_module := C_DEFAULT_MODULE||'.chk_ac_has_details';
5426 END IF;
5427
5428 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5429 trace(p_msg => 'BEGIN of procedure chk_ac_has_details'
5430 ,p_module => l_log_module
5431 ,p_level => C_LEVEL_PROCEDURE);
5432 END IF;
5433
5434 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5435 trace(p_msg => 'application_id = '||p_application_id||
5436 ',amb_context_code = '||p_amb_context_code||
5437 ',event_class_code = '||p_event_class_code||
5438 ',event_type_code = '||p_event_type_code||
5439 ',line_definition_owner_code = '||p_line_definition_owner_code||
5440 ',line_definition_code = '||p_line_definition_code
5441 ,p_module => l_log_module
5442 ,p_level => C_LEVEL_STATEMENT);
5443 END IF;
5444
5445 l_return := TRUE;
5446
5447 FOR l_err IN c_invalid_ac LOOP
5448 l_return := FALSE;
5449
5450 xla_amb_setup_err_pkg.stack_error
5451 (p_message_name => 'XLA_AB_LINE_ANC_NO_DETAIL'
5452 ,p_message_type => 'E'
5453 ,p_message_category => 'LINE_AC'
5454 ,p_category_sequence => 12
5455 ,p_application_id => p_application_id
5456 ,p_amb_context_code => p_amb_context_code
5457 ,p_event_class_code => p_event_class_code
5458 ,p_event_type_code => p_event_type_code
5459 ,p_line_definition_owner_code => p_line_definition_owner_code
5460 ,p_line_definition_code => p_line_definition_code
5461 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
5462 ,p_anal_criterion_code => l_err.analytical_criterion_code);
5463 END LOOP;
5464
5465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5466 trace(p_msg => 'END of procedure chk_ac_has_details'
5467 ,p_module => l_log_module
5468 ,p_level => C_LEVEL_PROCEDURE);
5469 END IF;
5470
5471 RETURN l_return;
5472
5473 EXCEPTION
5474 WHEN xla_exceptions_pkg.application_exception THEN
5475 IF (c_invalid_ac%ISOPEN) THEN
5476 CLOSE c_invalid_ac;
5477 END IF;
5478 RAISE;
5479
5480 WHEN OTHERS THEN
5481 IF (c_invalid_ac%ISOPEN) THEN
5482 CLOSE c_invalid_ac;
5483 END IF;
5484 xla_exceptions_pkg.raise_message
5485 (p_location => 'xla_line_definitions_pvt.chk_ac_has_details');
5486
5487 END chk_ac_has_details;
5488
5489 --=============================================================================
5490 --
5491 -- Name: chk_ac_invalid_sources
5492 -- Description:
5493 --
5494 --=============================================================================
5495 FUNCTION chk_ac_invalid_sources
5496 (p_application_id IN NUMBER
5497 ,p_amb_context_code IN VARCHAR2
5498 ,p_event_class_code IN VARCHAR2
5499 ,p_event_type_code IN VARCHAR2
5500 ,p_line_definition_owner_code IN VARCHAR2
5501 ,p_line_definition_code IN VARCHAR2)
5502 RETURN BOOLEAN
5503 IS
5504 CURSOR c_invalid_sources IS
5505 SELECT distinct xas.analytical_criterion_type_code, xas.analytical_criterion_code,
5506 xas.source_code, xas.source_type_code
5507 FROM xla_analytical_sources xas
5508 ,xla_line_defn_ac_assgns xac
5509 ,xla_line_defn_jlt_assgns xjl
5510 ,xla_event_sources xes
5511 WHERE xas.application_id = xac.application_id
5512 AND xas.amb_context_code = xac.amb_context_code
5513 AND xas.event_class_code = xac.event_class_code
5514 AND xas.analytical_criterion_code = xac.analytical_criterion_code
5515 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code
5516 AND xas.source_type_code = 'S'
5517 AND xac.application_id = xjl.application_id
5518 AND xac.amb_context_code = xjl.amb_context_code
5519 AND xac.event_class_code = xjl.event_class_code
5520 AND xac.event_type_code = xjl.event_type_code
5521 AND xac.line_definition_code = xjl.line_definition_code
5522 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
5523 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
5524 AND xac.accounting_line_code = xjl.accounting_line_code
5525 AND xjl.application_id = p_application_id
5526 AND xjl.amb_context_code = p_amb_context_code
5527 AND xjl.event_class_code = p_event_class_code
5528 AND xjl.event_type_code = p_event_type_code
5529 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5530 AND xjl.line_definition_code = p_line_definition_code
5531 AND xjl.active_flag = 'Y'
5532 AND not exists (SELECT 'y'
5533 FROM xla_event_sources xes
5534 WHERE xes.source_application_id = xas.source_application_id
5535 AND xes.source_type_code = xas.source_type_code
5536 AND xes.source_code = xas.source_code
5537 AND xes.application_id = xas.application_id
5538 AND xes.event_class_code = xas.event_class_code
5539 AND xes.active_flag = 'Y');
5540
5541 CURSOR c_der_sources IS
5542 SELECT distinct xas.analytical_criterion_type_code, xas.analytical_criterion_code,
5543 xas.source_code, xas.source_type_code
5544 FROM xla_analytical_sources xas
5545 ,xla_line_defn_ac_assgns xac
5546 ,xla_line_defn_jlt_assgns xjl
5547 WHERE xas.application_id = xac.application_id
5548 AND xas.amb_context_code = xac.amb_context_code
5549 AND xas.event_class_code = xac.event_class_code
5550 AND xas.analytical_criterion_code = xac.analytical_criterion_code
5551 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code
5552 AND xas.source_type_code = 'D'
5553 AND xac.application_id = xjl.application_id
5554 AND xac.amb_context_code = xjl.amb_context_code
5555 AND xac.event_class_code = xjl.event_class_code
5556 AND xac.event_type_code = xjl.event_type_code
5557 AND xac.line_definition_code = xjl.line_definition_code
5558 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
5559 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
5560 AND xac.accounting_line_code = xjl.accounting_line_code
5561 AND xjl.application_id = p_application_id
5562 AND xjl.amb_context_code = p_amb_context_code
5563 AND xjl.event_class_code = p_event_class_code
5564 AND xjl.event_type_code = p_event_type_code
5565 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5566 AND xjl.line_definition_code = p_line_definition_code
5567 AND xjl.active_flag = 'Y';
5568
5569 l_return BOOLEAN;
5570 l_log_module VARCHAR2(240);
5571 BEGIN
5572 IF g_log_enabled THEN
5573 l_log_module := C_DEFAULT_MODULE||'.chk_ac_invalid_sources';
5574 END IF;
5575
5576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5577 trace(p_msg => 'BEGIN of procedure chk_ac_invalid_sources'
5578 ,p_module => l_log_module
5579 ,p_level => C_LEVEL_PROCEDURE);
5580 END IF;
5581
5582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5583 trace(p_msg => 'application_id = '||p_application_id||
5584 ',amb_context_code = '||p_amb_context_code||
5585 ',event_class_code = '||p_event_class_code||
5586 ',event_type_code = '||p_event_type_code||
5587 ',line_definition_owner_code = '||p_line_definition_owner_code||
5588 ',line_definition_code = '||p_line_definition_code
5589 ,p_module => l_log_module
5590 ,p_level => C_LEVEL_STATEMENT);
5591 END IF;
5592
5593 l_return := TRUE;
5594
5595 FOR l_err IN c_invalid_sources LOOP
5596
5597 l_return := FALSE;
5598 xla_amb_setup_err_pkg.stack_error
5599 (p_message_name => 'XLA_AB_LINE_ANC_UNASN_SRCE'
5600 ,p_message_type => 'E'
5601 ,p_message_category => 'LINE_AC'
5602 ,p_category_sequence => 12
5603 ,p_application_id => p_application_id
5604 ,p_amb_context_code => p_amb_context_code
5605 ,p_event_class_code => p_event_class_code
5606 ,p_event_type_code => p_event_type_code
5607 ,p_line_definition_owner_code => p_line_definition_owner_code
5608 ,p_line_definition_code => p_line_definition_code
5609 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
5610 ,p_anal_criterion_code => l_err.analytical_criterion_code
5611 ,p_source_code => l_err.source_code
5612 ,p_source_type_code => l_err.source_type_code);
5613 END LOOP;
5614
5615 FOR l_err IN c_der_sources LOOP
5616 IF xla_sources_pkg.derived_source_is_invalid
5617 (p_application_id => p_application_id
5618 ,p_derived_source_code => l_err.source_code
5619 ,p_derived_source_type_code => 'D'
5620 ,p_event_class_code => p_event_class_code
5621 ,p_level => 'L') = 'TRUE' THEN
5622
5623 l_return := FALSE;
5624 xla_amb_setup_err_pkg.stack_error
5625 (p_message_name => 'XLA_AB_LINE_ANC_UNASN_SRCE'
5626 ,p_message_type => 'E'
5627 ,p_message_category => 'LINE_AC'
5628 ,p_category_sequence => 12
5629 ,p_application_id => p_application_id
5630 ,p_amb_context_code => p_amb_context_code
5631 ,p_event_class_code => p_event_class_code
5632 ,p_event_type_code => p_event_type_code
5633 ,p_line_definition_owner_code => p_line_definition_owner_code
5634 ,p_line_definition_code => p_line_definition_code
5635 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
5636 ,p_anal_criterion_code => l_err.analytical_criterion_code
5637 ,p_source_code => l_err.source_code
5638 ,p_source_type_code => l_err.source_type_code);
5639 END IF;
5640 END LOOP;
5641
5642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5643 trace(p_msg => 'END of procedure chk_ac_invalid_sources'
5644 ,p_module => l_log_module
5645 ,p_level => C_LEVEL_PROCEDURE);
5646 END IF;
5647
5648 RETURN l_return;
5649
5650 EXCEPTION
5651 WHEN xla_exceptions_pkg.application_exception THEN
5652 IF (c_invalid_sources%ISOPEN) THEN
5653 CLOSE c_invalid_sources;
5654 END IF;
5655 IF (c_der_sources%ISOPEN) THEN
5656 CLOSE c_der_sources;
5657 END IF;
5658 RAISE;
5659
5660 WHEN OTHERS THEN
5661 IF (c_invalid_sources%ISOPEN) THEN
5662 CLOSE c_invalid_sources;
5663 END IF;
5664 IF (c_der_sources%ISOPEN) THEN
5665 CLOSE c_der_sources;
5666 END IF;
5667 xla_exceptions_pkg.raise_message
5668 (p_location => 'xla_line_definitions_pvt.chk_ac_invalid_sources');
5669 END chk_ac_invalid_sources;
5670
5671
5672 --=============================================================================
5673 --
5674 -- Name: validate_line_ac
5675 -- Description: Validate AC assignment of the line definition
5676 --
5677 --=============================================================================
5678 FUNCTION validate_line_ac
5679 (p_application_id IN NUMBER
5680 ,p_amb_context_code IN VARCHAR2
5681 ,p_event_class_code IN VARCHAR2
5682 ,p_event_type_code IN VARCHAR2
5683 ,p_line_definition_owner_code IN VARCHAR2
5684 ,p_line_definition_code IN VARCHAR2)
5685 RETURN BOOLEAN
5686 IS
5687 l_return BOOLEAN;
5688 l_log_module VARCHAR2(240);
5689 BEGIN
5690 IF g_log_enabled THEN
5691 l_log_module := C_DEFAULT_MODULE||'.validate_line_ac';
5692 END IF;
5693
5694 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5695 trace(p_msg => 'BEGIN of procedure validate_line_ac'
5696 ,p_module => l_log_module
5697 ,p_level => C_LEVEL_PROCEDURE);
5698 END IF;
5699
5700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5701 trace(p_msg => 'application_id = '||p_application_id||
5702 ',amb_context_code = '||p_amb_context_code||
5703 ',event_class_code = '||p_event_class_code||
5704 ',event_type_code = '||p_event_type_code||
5705 ',line_definition_owner_code = '||p_line_definition_owner_code||
5706 ',line_definition_code = '||p_line_definition_code
5707 ,p_module => l_log_module
5708 ,p_level => C_LEVEL_STATEMENT);
5709 END IF;
5710
5711 l_return := TRUE;
5712
5713 l_return := chk_line_ac_is_enabled
5714 (p_application_id => p_application_id
5715 ,p_amb_context_code => p_amb_context_code
5716 ,p_event_class_code => p_event_class_code
5717 ,p_event_type_code => p_event_type_code
5718 ,p_line_definition_owner_code => p_line_definition_owner_code
5719 ,p_line_definition_code => p_line_definition_code)
5720 AND l_return;
5721
5722 l_return := chk_ac_has_details
5723 (p_application_id => p_application_id
5724 ,p_amb_context_code => p_amb_context_code
5725 ,p_event_class_code => p_event_class_code
5726 ,p_event_type_code => p_event_type_code
5727 ,p_line_definition_owner_code => p_line_definition_owner_code
5728 ,p_line_definition_code => p_line_definition_code)
5729 AND l_return;
5730
5731 l_return := chk_ac_invalid_sources
5732 (p_application_id => p_application_id
5733 ,p_amb_context_code => p_amb_context_code
5734 ,p_event_class_code => p_event_class_code
5735 ,p_event_type_code => p_event_type_code
5736 ,p_line_definition_owner_code => p_line_definition_owner_code
5737 ,p_line_definition_code => p_line_definition_code)
5738 AND l_return;
5739
5740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5741 trace(p_msg => 'END of procedure validate_line_ac'
5742 ,p_module => l_log_module
5743 ,p_level => C_LEVEL_PROCEDURE);
5744 END IF;
5745
5746 RETURN l_return;
5747
5748 EXCEPTION
5749 WHEN xla_exceptions_pkg.application_exception THEN
5750 RAISE;
5751 WHEN OTHERS THEN
5752 xla_exceptions_pkg.raise_message
5753 (p_location => 'xla_line_definitions_pvt.validate_line_ac');
5754 END validate_line_ac;
5755
5756
5757 --=============================================================================
5758 --
5759 -- Name: chk_ms_is_enabled
5760 -- Description: Check if all mapping sets assigned to the line definition
5761 -- are enabled
5762 --
5763 --=============================================================================
5764 FUNCTION chk_ms_is_enabled
5765 (p_application_id IN NUMBER
5766 ,p_amb_context_code IN VARCHAR2
5767 ,p_event_class_code IN VARCHAR2
5768 ,p_event_type_code IN VARCHAR2
5769 ,p_line_definition_owner_code IN VARCHAR2
5770 ,p_line_definition_code IN VARCHAR2)
5771 RETURN BOOLEAN
5772 IS
5773 CURSOR c_invalid_ms IS
5774 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
5775 xsr.value_mapping_set_code
5776 FROM xla_seg_rule_details xsr
5777 ,xla_line_defn_adr_assgns xad
5778 ,xla_line_defn_jlt_assgns xjl
5779 ,xla_mapping_sets_b xms
5780 WHERE xms.mapping_set_code = xsr.value_mapping_set_code
5781 AND xms.amb_context_code = xsr.amb_context_code
5782 AND xms.enabled_flag <> 'Y'
5783 AND xsr.application_id = xad.application_id
5784 AND xsr.amb_context_code = xad.amb_context_code
5785 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
5786 AND xsr.segment_rule_code = xad.segment_rule_code
5787 AND xsr.value_mapping_set_code IS NOT NULL
5788 AND xad.application_id = xjl.application_id
5789 AND xad.amb_context_code = xjl.amb_context_code
5790 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
5791 AND xad.line_definition_code = xjl.line_definition_code
5792 AND xad.event_class_code = xjl.event_class_code
5793 AND xad.event_type_code = xjl.event_type_code
5794 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
5795 AND xad.accounting_line_code = xjl.accounting_line_code
5796 AND xjl.application_id = p_application_id
5797 AND xjl.amb_context_code = p_amb_context_code
5798 AND xjl.event_class_code = p_event_class_code
5799 AND xjl.event_type_code = p_event_type_code
5800 AND xjl.line_definition_owner_code = p_line_definition_owner_code
5801 AND xjl.line_definition_code = p_line_definition_code
5802 AND xjl.active_flag = 'Y';
5803
5804 l_return BOOLEAN;
5805 l_log_module VARCHAR2(240);
5806 BEGIN
5807 IF g_log_enabled THEN
5808 l_log_module := C_DEFAULT_MODULE||'.chk_ms_is_enabled';
5809 END IF;
5810
5811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5812 trace(p_msg => 'BEGIN of procedure chk_ms_is_enabled'
5813 ,p_module => l_log_module
5814 ,p_level => C_LEVEL_PROCEDURE);
5815 END IF;
5816
5817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5818 trace(p_msg => 'application_id = '||p_application_id||
5819 ',amb_context_code = '||p_amb_context_code||
5820 ',event_class_code = '||p_event_class_code||
5821 ',event_type_code = '||p_event_type_code||
5822 ',line_definition_owner_code = '||p_line_definition_owner_code||
5823 ',line_definition_code = '||p_line_definition_code
5824 ,p_module => l_log_module
5825 ,p_level => C_LEVEL_STATEMENT);
5826 END IF;
5827
5828 l_return := TRUE;
5829
5830 FOR l_err IN c_invalid_ms LOOP
5831 l_return := FALSE;
5832
5833 xla_amb_setup_err_pkg.stack_error
5834 (p_message_name => 'XLA_AB_DISABLED_MAPPING_SET'
5835 ,p_message_type => 'E'
5836 ,p_message_category => 'MAPPING_SET'
5837 ,p_category_sequence => 14
5838 ,p_application_id => p_application_id
5839 ,p_amb_context_code => p_amb_context_code
5840 ,p_event_class_code => p_event_class_code
5841 ,p_event_type_code => p_event_type_code
5842 ,p_line_definition_owner_code => p_line_definition_owner_code
5843 ,p_line_definition_code => p_line_definition_code
5844 ,p_segment_rule_type_code => l_err.segment_rule_type_code
5845 ,p_segment_rule_code => l_err.segment_rule_code
5846 ,p_mapping_set_code => l_err.value_mapping_set_code);
5847 END LOOP;
5848
5849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5850 trace(p_msg => 'END of procedure chk_ms_is_enabled'
5851 ,p_module => l_log_module
5852 ,p_level => C_LEVEL_PROCEDURE);
5853 END IF;
5854
5855 RETURN l_return;
5856
5857 EXCEPTION
5858 WHEN xla_exceptions_pkg.application_exception THEN
5859 IF (c_invalid_ms%ISOPEN) THEN
5860 CLOSE c_invalid_ms;
5861 END IF;
5862 RAISE;
5863
5864 WHEN OTHERS THEN
5865 IF (c_invalid_ms%ISOPEN) THEN
5866 CLOSE c_invalid_ms;
5867 END IF;
5868 xla_exceptions_pkg.raise_message
5869 (p_location => 'xla_line_definitions_pvt.chk_ms_is_enabled');
5870 END chk_ms_is_enabled;
5871
5872 --=============================================================================
5873 --
5874 -- Name: validate_mapping_sets
5875 -- Description: Validate AC assignment of the line definition
5876 --
5877 --=============================================================================
5878 FUNCTION validate_mapping_sets
5879 (p_application_id IN NUMBER
5880 ,p_amb_context_code IN VARCHAR2
5881 ,p_event_class_code IN VARCHAR2
5882 ,p_event_type_code IN VARCHAR2
5883 ,p_line_definition_owner_code IN VARCHAR2
5884 ,p_line_definition_code IN VARCHAR2)
5885 RETURN BOOLEAN
5886 IS
5887 l_return BOOLEAN;
5888 l_log_module VARCHAR2(240);
5889 BEGIN
5890 IF g_log_enabled THEN
5891 l_log_module := C_DEFAULT_MODULE||'.validate_mapping_sets';
5892 END IF;
5893
5894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5895 trace(p_msg => 'BEGIN of procedure validate_mapping_sets'
5896 ,p_module => l_log_module
5897 ,p_level => C_LEVEL_PROCEDURE);
5898 END IF;
5899
5900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5901 trace(p_msg => 'application_id = '||p_application_id||
5902 ',amb_context_code = '||p_amb_context_code||
5903 ',event_class_code = '||p_event_class_code||
5904 ',event_type_code = '||p_event_type_code||
5905 ',line_definition_owner_code = '||p_line_definition_owner_code||
5906 ',line_definition_code = '||p_line_definition_code
5907 ,p_module => l_log_module
5908 ,p_level => C_LEVEL_STATEMENT);
5909 END IF;
5910
5911 l_return := TRUE;
5912
5913 l_return := chk_ms_is_enabled
5914 (p_application_id => p_application_id
5915 ,p_amb_context_code => p_amb_context_code
5916 ,p_event_class_code => p_event_class_code
5917 ,p_event_type_code => p_event_type_code
5918 ,p_line_definition_owner_code => p_line_definition_owner_code
5919 ,p_line_definition_code => p_line_definition_code)
5920 AND l_return;
5921
5922 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5923 trace(p_msg => 'END of procedure validate_mapping_sets'
5924 ,p_module => l_log_module
5925 ,p_level => C_LEVEL_PROCEDURE);
5926 END IF;
5927
5928 RETURN l_return;
5929
5930 EXCEPTION
5931 WHEN xla_exceptions_pkg.application_exception THEN
5932 RAISE;
5933 WHEN OTHERS THEN
5934 xla_exceptions_pkg.raise_message
5935 (p_location => 'xla_line_definitions_pvt.validate_mapping_sets');
5936 END validate_mapping_sets;
5937
5938 --=============================================================================
5939 --
5940 -- Name: chk_mpa_jlt_lines
5941 -- Description: Check if all JLT assigned to the line definition is enabled
5942 --
5943 --=============================================================================
5944 FUNCTION chk_mpa_jlt_lines
5945 (p_application_id IN NUMBER
5946 ,p_amb_context_code IN VARCHAR2
5947 ,p_event_class_code IN VARCHAR2
5948 ,p_event_type_code IN VARCHAR2
5949 ,p_line_definition_owner_code IN VARCHAR2
5950 ,p_line_definition_code IN VARCHAR2)
5951 RETURN BOOLEAN
5952 IS
5953 --
5954 -- Get all JLT assignment that have less than 2 MPA JLT assignments
5955 --
5956 CURSOR c_invalid_jlt IS
5957 SELECT distinct xld.accounting_line_type_code, xld.accounting_line_code
5958 FROM xla_line_defn_jlt_assgns xld, xla_acct_line_types_b jlt
5959 WHERE xld.application_id = p_application_id
5960 AND xld.amb_context_code = p_amb_context_code
5961 AND xld.event_class_code = p_event_class_code
5962 AND xld.event_type_code = p_event_type_code
5963 AND xld.line_definition_owner_code = p_line_definition_owner_code
5964 AND xld.line_definition_code = p_line_definition_code
5965 AND xld.active_flag = 'Y'
5966 AND xld.application_id = jlt.application_id
5967 AND xld.amb_context_code = jlt.amb_context_code
5968 AND xld.event_class_code = jlt.event_class_code
5969 AND xld.accounting_line_type_code = jlt.accounting_line_type_code
5970 AND xld.accounting_line_code = jlt.accounting_line_code
5971 AND jlt.mpa_option_code = 'ACCRUAL';
5972
5973 CURSOR c_mpa_jlt(l_accounting_line_type_code IN VARCHAR2
5974 ,l_accounting_line_code IN VARCHAR2) IS
5975 SELECT count(*)
5976 FROM xla_mpa_jlt_assgns mpa
5977 WHERE mpa.application_id = p_application_id
5978 AND mpa.amb_context_code = p_amb_context_code
5979 AND mpa.event_class_code = p_event_class_code
5980 AND mpa.event_type_code = p_event_type_code
5981 AND mpa.line_definition_owner_code = p_line_definition_owner_code
5982 AND mpa.line_definition_code = p_line_definition_code
5983 AND mpa.accounting_line_type_code = l_accounting_line_type_code
5984 AND mpa.accounting_line_code = l_accounting_line_code;
5985
5986
5987 l_return BOOLEAN;
5988 l_log_module VARCHAR2(240);
5989 l_count NUMBER(15);
5990
5991 BEGIN
5992 IF g_log_enabled THEN
5993 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_jlt_lines';
5994 END IF;
5995
5996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5997 trace(p_msg => 'BEGIN of procedure chk_mpa_jlt_lines'
5998 ,p_module => l_log_module
5999 ,p_level => C_LEVEL_PROCEDURE);
6000 END IF;
6001
6002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6003 trace(p_msg => 'application_id = '||p_application_id||
6004 ',amb_context_code = '||p_amb_context_code||
6005 ',event_class_code = '||p_event_class_code||
6006 ',event_type_code = '||p_event_type_code||
6007 ',line_definition_owner_code = '||p_line_definition_owner_code||
6008 ',line_definition_code = '||p_line_definition_code
6009 ,p_module => l_log_module
6010 ,p_level => C_LEVEL_STATEMENT);
6011 END IF;
6012
6013 l_return := TRUE;
6014
6015 --
6016 -- Check if any JLT has less than 2 mpa line assignments
6017 --
6018
6019 FOR l_err IN c_invalid_jlt LOOP
6020
6021 OPEN c_mpa_jlt(l_err.accounting_line_type_code
6022 ,l_err.accounting_line_code);
6023 FETCH c_mpa_jlt
6024 INTO l_count;
6025 CLOSE c_mpa_jlt;
6026
6027 IF l_count < 2 THEN
6028 l_return := FALSE;
6029
6030 xla_amb_setup_err_pkg.stack_error
6031 (p_message_name => 'XLA_AB_MPA_LESS_LINE_TYPES'
6032 ,p_message_type => 'E'
6033 ,p_message_category => 'MPA_LINE_ASSIGNMENT'
6034 ,p_category_sequence => 17
6035 ,p_application_id => p_application_id
6036 ,p_amb_context_code => p_amb_context_code
6037 ,p_event_class_code => p_event_class_code
6038 ,p_event_type_code => p_event_type_code
6039 ,p_line_definition_owner_code => p_line_definition_owner_code
6040 ,p_line_definition_code => p_line_definition_code
6041 ,p_accounting_line_type_code => l_err.accounting_line_type_code
6042 ,p_accounting_line_code => l_err.accounting_line_code);
6043 END IF;
6044
6045 END LOOP;
6046
6047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6048 trace(p_msg => 'END of procedure chk_mpa_jlt_lines'
6049 ,p_module => l_log_module
6050 ,p_level => C_LEVEL_PROCEDURE);
6051 END IF;
6052
6053 RETURN l_return;
6054
6055 EXCEPTION
6056 WHEN xla_exceptions_pkg.application_exception THEN
6057 IF (c_invalid_jlt%ISOPEN) THEN
6058 CLOSE c_invalid_jlt;
6059 END IF;
6060 RAISE;
6061
6062 WHEN OTHERS THEN
6063 IF (c_invalid_jlt%ISOPEN) THEN
6064 CLOSE c_invalid_jlt;
6065 END IF;
6066 xla_exceptions_pkg.raise_message
6067 (p_location => 'xla_line_definitions_pvt.chk_mpa_jlt_lines');
6068 END chk_mpa_jlt_lines;
6069
6070
6071 --=============================================================================
6072 --
6073 -- Name: chk_mpa_jlt_is_enabled
6074 -- Description: Check if all JLT assigned to the line definition is enabled
6075 --
6076 --=============================================================================
6077 FUNCTION chk_mpa_jlt_is_enabled
6078 (p_application_id IN NUMBER
6079 ,p_amb_context_code IN VARCHAR2
6080 ,p_event_class_code IN VARCHAR2
6081 ,p_event_type_code IN VARCHAR2
6082 ,p_line_definition_owner_code IN VARCHAR2
6083 ,p_line_definition_code IN VARCHAR2)
6084 RETURN BOOLEAN
6085 IS
6086 --
6087 -- Get any JLT assignment that has a disabled JLT
6088 --
6089 CURSOR c_invalid_jlt IS
6090 SELECT distinct mpa.event_class_code, mpa.event_type_code,
6091 mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code
6092 FROM xla_line_defn_jlt_assgns xld
6093 ,xla_mpa_jlt_assgns mpa
6094 WHERE xld.application_id = p_application_id
6095 AND xld.amb_context_code = p_amb_context_code
6096 AND xld.event_class_code = p_event_class_code
6097 AND xld.event_type_code = p_event_type_code
6098 AND xld.line_definition_owner_code = p_line_definition_owner_code
6099 AND xld.line_definition_code = p_line_definition_code
6100 AND xld.active_flag = 'Y'
6101 AND xld.application_id = mpa.application_id
6102 AND xld.amb_context_code = mpa.amb_context_code
6103 AND xld.event_class_code = mpa.event_class_code
6104 AND xld.event_type_code = mpa.event_type_code
6105 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6106 AND xld.line_definition_code = mpa.line_definition_code
6107 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6108 AND xld.accounting_line_code = mpa.accounting_line_code
6109 AND NOT EXISTS (SELECT 'x'
6110 FROM xla_line_defn_jlt_assgns xld1
6111 WHERE xld1.application_id = mpa.application_id
6112 AND xld1.amb_context_code = mpa.amb_context_code
6113 AND xld1.event_class_code = mpa.event_class_code
6114 AND xld1.event_type_code = mpa.event_type_code
6115 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6116 AND xld1.line_definition_code = mpa.line_definition_code
6117 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6118 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6119 AND NOT EXISTS
6120 (SELECT 'y'
6121 FROM xla_acct_line_types_b xal
6122 WHERE xal.application_id = mpa.application_id
6123 AND xal.amb_context_code = mpa.amb_context_code
6124 AND xal.event_class_code = mpa.event_class_code
6125 AND xal.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6126 AND xal.accounting_line_code = mpa.mpa_accounting_line_code
6127 AND xal.enabled_flag = 'Y');
6128
6129 l_return BOOLEAN;
6130 l_log_module VARCHAR2(240);
6131 BEGIN
6132 IF g_log_enabled THEN
6133 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_jlt_is_enabled';
6134 END IF;
6135
6136 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6137 trace(p_msg => 'BEGIN of procedure chk_mpa_jlt_is_enabled'
6138 ,p_module => l_log_module
6139 ,p_level => C_LEVEL_PROCEDURE);
6140 END IF;
6141
6142 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6143 trace(p_msg => 'application_id = '||p_application_id||
6144 ',amb_context_code = '||p_amb_context_code||
6145 ',event_class_code = '||p_event_class_code||
6146 ',event_type_code = '||p_event_type_code||
6147 ',line_definition_owner_code = '||p_line_definition_owner_code||
6148 ',line_definition_code = '||p_line_definition_code
6149 ,p_module => l_log_module
6150 ,p_level => C_LEVEL_STATEMENT);
6151 END IF;
6152
6153 l_return := TRUE;
6154
6155 --
6156 -- Check if any disabled JLT is assigned to the line definition
6157 --
6158 FOR l_err IN c_invalid_jlt LOOP
6159 l_return := FALSE;
6160
6161 xla_amb_setup_err_pkg.stack_error
6162 (p_message_name => 'XLA_AB_MPA_DISABLD_LINE_TYPE'
6163 ,p_message_type => 'E'
6164 ,p_message_category => 'MPA_LINE_TYPE'
6165 ,p_category_sequence => 18
6166 ,p_application_id => p_application_id
6167 ,p_amb_context_code => p_amb_context_code
6168 ,p_event_class_code => p_event_class_code
6169 ,p_event_type_code => p_event_type_code
6170 ,p_line_definition_owner_code => p_line_definition_owner_code
6171 ,p_line_definition_code => p_line_definition_code
6172 ,p_mpa_acct_line_type_code => l_err.mpa_accounting_line_type_code
6173 ,p_mpa_acct_line_code => l_err.mpa_accounting_line_code);
6174 END LOOP;
6175
6176 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6177 trace(p_msg => 'END of procedure chk_mpa_jlt_is_enabled'
6178 ,p_module => l_log_module
6179 ,p_level => C_LEVEL_PROCEDURE);
6180 END IF;
6181
6182 RETURN l_return;
6183
6184 EXCEPTION
6185 WHEN xla_exceptions_pkg.application_exception THEN
6186 IF (c_invalid_jlt%ISOPEN) THEN
6187 CLOSE c_invalid_jlt;
6188 END IF;
6189 RAISE;
6190
6191 WHEN OTHERS THEN
6192 IF (c_invalid_jlt%ISOPEN) THEN
6193 CLOSE c_invalid_jlt;
6194 END IF;
6195 xla_exceptions_pkg.raise_message
6196 (p_location => 'xla_line_definitions_pvt.chk_mpa_jlt_is_enabled');
6197 END chk_mpa_jlt_is_enabled;
6198
6199 --=============================================================================
6200 --
6201 -- Name: chk_mpa_jlt_acct_class_exist
6202 -- Description: Check if all accounting class of the JLTs assigned to the
6203 -- line definition are enabled
6204 --
6205 --=============================================================================
6206 FUNCTION chk_mpa_jlt_acct_class_exist
6207 (p_application_id IN NUMBER
6208 ,p_amb_context_code IN VARCHAR2
6209 ,p_event_class_code IN VARCHAR2
6210 ,p_event_type_code IN VARCHAR2
6211 ,p_line_definition_owner_code IN VARCHAR2
6212 ,p_line_definition_code IN VARCHAR2)
6213 RETURN BOOLEAN
6214 IS
6215 --
6216 -- Get any JLT assignment that has a disabled JLT
6217 --
6218 CURSOR c_invalid_jlt IS
6219 SELECT distinct mpa.event_class_code, mpa.event_type_code,
6220 mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code
6221 FROM xla_line_defn_jlt_assgns xld
6222 , xla_acct_line_types_b xal
6223 ,xla_mpa_jlt_assgns mpa
6224 WHERE xal.application_id = mpa.application_id
6225 AND xal.amb_context_code = mpa.amb_context_code
6226 AND xal.event_class_code = mpa.event_class_code
6227 AND xal.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6228 AND xal.accounting_line_code = mpa.mpa_accounting_line_code
6229 AND xal.enabled_flag = 'Y'
6230 AND xld.application_id = p_application_id
6231 AND xld.amb_context_code = p_amb_context_code
6232 AND xld.event_class_code = p_event_class_code
6233 AND xld.event_type_code = p_event_type_code
6234 AND xld.line_definition_owner_code = p_line_definition_owner_code
6235 AND xld.line_definition_code = p_line_definition_code
6236 AND xld.active_flag = 'Y'
6237 AND xld.application_id = mpa.application_id
6238 AND xld.amb_context_code = mpa.amb_context_code
6239 AND xld.event_class_code = mpa.event_class_code
6240 AND xld.event_type_code = mpa.event_type_code
6241 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6242 AND xld.line_definition_code = mpa.line_definition_code
6243 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6244 AND xld.accounting_line_code = mpa.accounting_line_code
6245 AND NOT EXISTS (SELECT 'x'
6246 FROM xla_line_defn_jlt_assgns xld1
6247 WHERE xld1.application_id = mpa.application_id
6248 AND xld1.amb_context_code = mpa.amb_context_code
6249 AND xld1.event_class_code = mpa.event_class_code
6250 AND xld1.event_type_code = mpa.event_type_code
6251 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6252 AND xld1.line_definition_code = mpa.line_definition_code
6253 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6254 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6255 AND NOT EXISTS
6256 (SELECT 'y'
6257 FROM xla_lookups xlk
6258 WHERE xlk.lookup_type = 'XLA_ACCOUNTING_CLASS'
6259 AND xlk.lookup_code = xal.accounting_class_code);
6260
6261 l_return BOOLEAN;
6262 l_log_module VARCHAR2(240);
6263 BEGIN
6264 IF g_log_enabled THEN
6265 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_jlt_acct_class_exist';
6266 END IF;
6267
6268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6269 trace(p_msg => 'BEGIN of procedure chk_mpa_jlt_acct_class_exist'
6270 ,p_module => l_log_module
6271 ,p_level => C_LEVEL_PROCEDURE);
6272 END IF;
6273
6274 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6275 trace(p_msg => 'application_id = '||p_application_id||
6276 ',amb_context_code = '||p_amb_context_code||
6277 ',event_class_code = '||p_event_class_code||
6278 ',event_type_code = '||p_event_type_code||
6279 ',line_definition_owner_code = '||p_line_definition_owner_code||
6280 ',line_definition_code = '||p_line_definition_code
6281 ,p_module => l_log_module
6282 ,p_level => C_LEVEL_STATEMENT);
6283 END IF;
6284
6285 l_return := TRUE;
6286
6287 --
6288 -- Check if any disabled JLT is assigned to the line definition
6289 --
6290 FOR l_err IN c_invalid_jlt LOOP
6291 l_return := FALSE;
6292
6293 xla_amb_setup_err_pkg.stack_error
6294 (p_message_name => 'XLA_AB_MPA_INVALID_ACCT_CLASS'
6295 ,p_message_type => 'E'
6296 ,p_message_category => 'MPA_LINE_TYPE'
6297 ,p_category_sequence => 18
6298 ,p_application_id => p_application_id
6299 ,p_amb_context_code => p_amb_context_code
6300 ,p_event_class_code => p_event_class_code
6301 ,p_event_type_code => p_event_type_code
6302 ,p_line_definition_owner_code => p_line_definition_owner_code
6303 ,p_line_definition_code => p_line_definition_code
6304 ,p_mpa_acct_line_type_code => l_err.mpa_accounting_line_type_code
6305 ,p_mpa_acct_line_code => l_err.mpa_accounting_line_code);
6306 END LOOP;
6307
6308 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6309 trace(p_msg => 'END of procedure chk_mpa_jlt_acct_class_exist'
6310 ,p_module => l_log_module
6311 ,p_level => C_LEVEL_PROCEDURE);
6312 END IF;
6313
6314 RETURN l_return;
6315
6316 EXCEPTION
6317 WHEN xla_exceptions_pkg.application_exception THEN
6318 IF (c_invalid_jlt%ISOPEN) THEN
6319 CLOSE c_invalid_jlt;
6320 END IF;
6321 RAISE;
6322
6323 WHEN OTHERS THEN
6324 IF (c_invalid_jlt%ISOPEN) THEN
6325 CLOSE c_invalid_jlt;
6326 END IF;
6327 xla_exceptions_pkg.raise_message
6328 (p_location => 'xla_line_definitions_pvt.chk_mpa_jlt_acct_class_exist');
6329 END chk_mpa_jlt_acct_class_exist;
6330
6331 --=============================================================================
6332 --
6333 -- Name: chk_mpa_jlt_inv_source_in_cond
6334 -- Description: Check if all sources used in the JLT condition is valid
6335 --
6336 --=============================================================================
6337 FUNCTION chk_mpa_jlt_inv_source_in_cond
6338 (p_application_id IN NUMBER
6339 ,p_amb_context_code IN VARCHAR2
6340 ,p_event_class_code IN VARCHAR2
6341 ,p_event_type_code IN VARCHAR2
6342 ,p_line_definition_owner_code IN VARCHAR2
6343 ,p_line_definition_code IN VARCHAR2)
6344 RETURN BOOLEAN
6345 IS
6346 --
6347 -- Get all JLT that have sources that do not belong to the event class of the
6348 -- line definition
6349 --
6350 CURSOR c_invalid_sources IS
6351 SELECT distinct mpa.event_class_code, mpa.event_type_code,
6352 mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code,
6353 xco.source_type_code, xco.source_code
6354 FROM xla_conditions xco
6355 ,xla_line_defn_jlt_assgns xld
6356 ,xla_mpa_jlt_assgns mpa
6357 WHERE xld.application_id = p_application_id
6358 AND xld.amb_context_code = p_amb_context_code
6359 AND xld.event_class_code = p_event_class_code
6360 AND xld.event_type_code = p_event_type_code
6361 AND xld.line_definition_owner_code = p_line_definition_owner_code
6362 AND xld.line_definition_code = p_line_definition_code
6363 AND xld.active_flag = 'Y'
6364 AND xco.application_id = mpa.application_id
6365 AND xco.amb_context_code = mpa.amb_context_code
6366 AND xco.event_class_code = mpa.event_class_code
6367 AND xco.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6368 AND xco.accounting_line_code = mpa.mpa_accounting_line_code
6369 AND xco.source_type_code = 'S'
6370 AND xld.application_id = mpa.application_id
6371 AND xld.amb_context_code = mpa.amb_context_code
6372 AND xld.event_class_code = mpa.event_class_code
6373 AND xld.event_type_code = mpa.event_type_code
6374 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6375 AND xld.line_definition_code = mpa.line_definition_code
6376 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6377 AND xld.accounting_line_code = mpa.accounting_line_code
6378 AND NOT EXISTS (SELECT 'x'
6379 FROM xla_line_defn_jlt_assgns xld1
6380 WHERE xld1.application_id = mpa.application_id
6381 AND xld1.amb_context_code = mpa.amb_context_code
6382 AND xld1.event_class_code = mpa.event_class_code
6383 AND xld1.event_type_code = mpa.event_type_code
6384 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6385 AND xld1.line_definition_code = mpa.line_definition_code
6386 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6387 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6388 AND NOT EXISTS
6389 (SELECT 'y'
6390 FROM xla_event_sources xes
6391 WHERE xes.source_application_id = xco.source_application_id
6392 AND xes.source_type_code = xco.source_type_code
6393 AND xes.source_code = xco.source_code
6394 AND xes.application_id = p_application_id
6395 AND xes.event_class_code = p_event_class_code
6396 AND xes.active_flag = 'Y')
6397 UNION
6398 SELECT distinct mpa.event_class_code, mpa.event_type_code,
6399 mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code,
6400 xco.value_source_type_code source_type_code, xco.value_source_code source_code
6401 FROM xla_conditions xco
6402 ,xla_line_defn_jlt_assgns xld
6403 ,xla_mpa_jlt_assgns mpa
6404 WHERE xld.application_id = p_application_id
6405 AND xld.amb_context_code = p_amb_context_code
6406 AND xld.event_class_code = p_event_class_code
6407 AND xld.event_type_code = p_event_type_code
6408 AND xld.line_definition_owner_code = p_line_definition_owner_code
6409 AND xld.line_definition_code = p_line_definition_code
6410 AND xld.active_flag = 'Y'
6411 AND xco.application_id = mpa.application_id
6412 AND xco.amb_context_code = mpa.amb_context_code
6413 AND xco.event_class_code = mpa.event_class_code
6414 AND xco.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6415 AND xco.accounting_line_code = mpa.mpa_accounting_line_code
6416 AND xco.value_source_type_code = 'S'
6417 AND xld.application_id = mpa.application_id
6418 AND xld.amb_context_code = mpa.amb_context_code
6419 AND xld.event_class_code = mpa.event_class_code
6420 AND xld.event_type_code = mpa.event_type_code
6421 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6422 AND xld.line_definition_code = mpa.line_definition_code
6423 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6424 AND xld.accounting_line_code = mpa.accounting_line_code
6425 AND NOT EXISTS (SELECT 'x'
6426 FROM xla_line_defn_jlt_assgns xld1
6427 WHERE xld1.application_id = mpa.application_id
6428 AND xld1.amb_context_code = mpa.amb_context_code
6429 AND xld1.event_class_code = mpa.event_class_code
6430 AND xld1.event_type_code = mpa.event_type_code
6431 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6432 AND xld1.line_definition_code = mpa.line_definition_code
6433 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6434 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6435 AND NOT EXISTS
6436 (SELECT 'y'
6437 FROM xla_event_sources xes
6438 WHERE xes.source_application_id = xco.value_source_application_id
6439 AND xes.source_type_code = xco.value_source_type_code
6440 AND xes.source_code = xco.value_source_code
6441 AND xes.application_id = p_application_id
6442 AND xes.event_class_code = p_event_class_code
6443 AND xes.active_flag = 'Y');
6444
6445 --
6446 -- Get all dervied sources used by the condition of the JLT
6447 --
6448 CURSOR c_jlt_cond_der_sources IS
6449 SELECT distinct mpa.event_class_code, mpa.event_type_code,
6450 mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code,
6451 xco.source_type_code, xco.source_code
6452 FROM xla_conditions xco
6453 ,xla_line_defn_jlt_assgns xld
6454 ,xla_mpa_jlt_assgns mpa
6455 WHERE xld.application_id = p_application_id
6456 AND xld.amb_context_code = p_amb_context_code
6457 AND xld.event_class_code = p_event_class_code
6458 AND xld.event_type_code = p_event_type_code
6459 AND xld.line_definition_owner_code = p_line_definition_owner_code
6460 AND xld.line_definition_code = p_line_definition_code
6461 AND xld.active_flag = 'Y'
6462 AND xco.application_id = mpa.application_id
6463 AND xco.amb_context_code = mpa.amb_context_code
6464 AND xco.event_class_code = mpa.event_class_code
6465 AND xco.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6466 AND xco.accounting_line_code = mpa.mpa_accounting_line_code
6467 AND xco.source_type_code = 'D'
6468 AND xld.application_id = mpa.application_id
6469 AND xld.amb_context_code = mpa.amb_context_code
6470 AND xld.event_class_code = mpa.event_class_code
6471 AND xld.event_type_code = mpa.event_type_code
6472 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6473 AND xld.line_definition_code = mpa.line_definition_code
6474 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6475 AND xld.accounting_line_code = mpa.accounting_line_code
6476 AND NOT EXISTS (SELECT 'x'
6477 FROM xla_line_defn_jlt_assgns xld1
6478 WHERE xld1.application_id = mpa.application_id
6479 AND xld1.amb_context_code = mpa.amb_context_code
6480 AND xld1.event_class_code = mpa.event_class_code
6481 AND xld1.event_type_code = mpa.event_type_code
6482 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6483 AND xld1.line_definition_code = mpa.line_definition_code
6484 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6485 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6486 UNION
6487 SELECT distinct mpa.event_class_code, mpa.event_type_code,
6488 mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code,
6489 xco.value_source_type_code source_type_code, xco.value_source_code source_code
6490 FROM xla_conditions xco
6491 ,xla_line_defn_jlt_assgns xld
6492 ,xla_mpa_jlt_assgns mpa
6493 WHERE xld.application_id = p_application_id
6494 AND xld.amb_context_code = p_amb_context_code
6495 AND xld.event_class_code = p_event_class_code
6496 AND xld.event_type_code = p_event_type_code
6497 AND xld.line_definition_owner_code = p_line_definition_owner_code
6498 AND xld.line_definition_code = p_line_definition_code
6499 AND xld.active_flag = 'Y'
6500 AND xco.application_id = mpa.application_id
6501 AND xco.amb_context_code = mpa.amb_context_code
6502 AND xco.event_class_code = mpa.event_class_code
6503 AND xco.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6504 AND xco.accounting_line_code = mpa.mpa_accounting_line_code
6505 AND xco.value_source_type_code = 'D'
6506 AND xld.application_id = mpa.application_id
6507 AND xld.amb_context_code = mpa.amb_context_code
6508 AND xld.event_class_code = mpa.event_class_code
6509 AND xld.event_type_code = mpa.event_type_code
6510 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6511 AND xld.line_definition_code = mpa.line_definition_code
6512 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6513 AND xld.accounting_line_code = mpa.accounting_line_code
6514 AND NOT EXISTS (SELECT 'x'
6515 FROM xla_line_defn_jlt_assgns xld1
6516 WHERE xld1.application_id = mpa.application_id
6517 AND xld1.amb_context_code = mpa.amb_context_code
6518 AND xld1.event_class_code = mpa.event_class_code
6519 AND xld1.event_type_code = mpa.event_type_code
6520 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6521 AND xld1.line_definition_code = mpa.line_definition_code
6522 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6523 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code) ;
6524
6525 l_return BOOLEAN;
6526 l_log_module VARCHAR2(240);
6527 BEGIN
6528 IF g_log_enabled THEN
6529 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_jlt_inv_source_in_cond';
6530 END IF;
6531
6532 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6533 trace(p_msg => 'BEGIN of procedure chk_mpa_jlt_inv_source_in_cond'
6534 ,p_module => l_log_module
6535 ,p_level => C_LEVEL_PROCEDURE);
6536 END IF;
6537
6538 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6539 trace(p_msg => 'application_id = '||p_application_id||
6540 ',amb_context_code = '||p_amb_context_code||
6541 ',event_class_code = '||p_event_class_code||
6542 ',event_type_code = '||p_event_type_code||
6543 ',line_definition_owner_code = '||p_line_definition_owner_code||
6544 ',line_definition_code = '||p_line_definition_code
6545 ,p_module => l_log_module
6546 ,p_level => C_LEVEL_STATEMENT);
6547 END IF;
6548
6549 l_return := TRUE;
6550
6551 --
6552 -- Check if the condition of any JLT have seeded sources that are not assigned
6553 -- to the event class of the line definition
6554 --
6555 FOR l_err IN c_invalid_sources LOOP
6556 l_return := FALSE;
6557
6558 xla_amb_setup_err_pkg.stack_error
6559 (p_message_name => 'XLA_AB_MPA_LT_CON_UNASN_SRCE'
6560 ,p_message_type => 'E'
6561 ,p_message_category => 'MPA_LINE_TYPE'
6562 ,p_category_sequence => 18
6563 ,p_application_id => p_application_id
6564 ,p_amb_context_code => p_amb_context_code
6565 ,p_event_class_code => p_event_class_code
6566 ,p_event_type_code => p_event_type_code
6567 ,p_line_definition_owner_code => p_line_definition_owner_code
6568 ,p_line_definition_code => p_line_definition_code
6569 ,p_mpa_acct_line_type_code => l_err.mpa_accounting_line_type_code
6570 ,p_mpa_acct_line_code => l_err.mpa_accounting_line_code
6571 ,p_source_type_code => l_err.source_type_code
6572 ,p_source_code => l_err.source_code);
6573 END LOOP;
6574
6575 --
6576 -- Check if any derveried source used by the condition of the JLT is invalid
6577 --
6578 FOR l_err IN c_jlt_cond_der_sources LOOP
6579 IF xla_sources_pkg.derived_source_is_invalid
6580 (p_application_id => p_application_id
6581 ,p_derived_source_code => l_err.source_code
6582 ,p_derived_source_type_code => 'D'
6583 ,p_event_class_code => p_event_class_code
6584 ,p_level => 'L') = 'TRUE' THEN
6585 l_return := FALSE;
6586
6587 xla_amb_setup_err_pkg.stack_error
6588 (p_message_name => 'XLA_AB_MPA_LT_CON_UNASN_SRCE'
6589 ,p_message_type => 'E'
6590 ,p_message_category => 'MPA_LINE_TYPE'
6591 ,p_category_sequence => 18
6592 ,p_application_id => p_application_id
6593 ,p_amb_context_code => p_amb_context_code
6594 ,p_event_class_code => p_event_class_code
6595 ,p_event_type_code => p_event_type_code
6596 ,p_line_definition_owner_code => p_line_definition_owner_code
6597 ,p_line_definition_code => p_line_definition_code
6598 ,p_mpa_acct_line_type_code => l_err.mpa_accounting_line_type_code
6599 ,p_mpa_acct_line_code => l_err.mpa_accounting_line_code
6600 ,p_source_type_code => l_err.source_type_code
6601 ,p_source_code => l_err.source_code);
6602
6603 END IF;
6604 END LOOP;
6605
6606 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6607 trace(p_msg => 'END of procedure chk_mpa_jlt_inv_source_in_cond'
6608 ,p_module => l_log_module
6609 ,p_level => C_LEVEL_PROCEDURE);
6610 END IF;
6611
6612 RETURN l_return;
6613
6614 EXCEPTION
6615 WHEN xla_exceptions_pkg.application_exception THEN
6616 IF (c_invalid_sources%ISOPEN) THEN
6617 CLOSE c_invalid_sources;
6618 END IF;
6619 IF (c_jlt_cond_der_sources%ISOPEN) THEN
6620 CLOSE c_jlt_cond_der_sources;
6621 END IF;
6622 RAISE;
6623
6624 WHEN OTHERS THEN
6625 IF (c_invalid_sources%ISOPEN) THEN
6626 CLOSE c_invalid_sources;
6627 END IF;
6628 IF (c_jlt_cond_der_sources%ISOPEN) THEN
6629 CLOSE c_jlt_cond_der_sources;
6630 END IF;
6631 xla_exceptions_pkg.raise_message
6632 (p_location => 'xla_line_definitions_pvt.chk_mpa_jlt_inv_source_in_cond');
6633
6634 END chk_mpa_jlt_inv_source_in_cond;
6635
6636 --=============================================================================
6637 --
6638 -- Name: chk_mpa_jlt_acct_src_assigned
6639 -- Description: Check if all JLT of the line definition has all required
6640 -- accounting sources assigned
6641 --
6642 --=============================================================================
6643 FUNCTION chk_mpa_jlt_acct_src_assigned
6644 (p_application_id IN NUMBER
6645 ,p_amb_context_code IN VARCHAR2
6646 ,p_event_class_code IN VARCHAR2
6647 ,p_event_type_code IN VARCHAR2
6648 ,p_line_definition_owner_code IN VARCHAR2
6649 ,p_line_definition_code IN VARCHAR2)
6650 RETURN BOOLEAN
6651 IS
6652 --
6653 -- Get all JLT for which not all required line accounting sources are assigned
6654 --
6655 CURSOR c_non_pe_jlt IS
6656 SELECT mpa.mpa_accounting_line_type_code
6657 ,mpa.mpa_accounting_line_code
6658 ,xja.accounting_attribute_code
6659 FROM xla_line_defn_jlt_assgns xld
6660 ,xla_acct_line_types_b jlt
6661 ,xla_jlt_acct_attrs xja
6662 ,xla_mpa_jlt_assgns mpa
6663 WHERE jlt.application_id = xja.application_id
6664 AND jlt.amb_context_code = xja.amb_context_code
6665 AND jlt.event_class_code = xja.event_class_code
6666 AND jlt.accounting_line_type_code = xja.accounting_line_type_code
6667 AND jlt.accounting_line_code = xja.accounting_line_code
6668 AND mpa.application_id = jlt.application_id
6669 AND mpa.amb_context_code = jlt.amb_context_code
6670 AND mpa.event_class_code = jlt.event_class_code
6671 AND mpa.mpa_accounting_line_type_code = jlt.accounting_line_type_code
6672 AND mpa.mpa_accounting_line_code = jlt.accounting_line_code
6673 AND jlt.business_method_code <> 'PRIOR_ENTRY'
6674 AND xld.application_id = p_application_id
6675 AND xld.amb_context_code = p_amb_context_code
6676 AND xld.event_class_code = p_event_class_code
6677 AND xld.event_type_code = p_event_type_code
6678 AND xld.line_definition_owner_code= p_line_definition_owner_code
6679 AND xld.line_definition_code = p_line_definition_code
6680 AND xld.active_flag = 'Y'
6681 AND xld.application_id = mpa.application_id
6682 AND xld.amb_context_code = mpa.amb_context_code
6683 AND xld.event_class_code = mpa.event_class_code
6684 AND xld.event_type_code = mpa.event_type_code
6685 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6686 AND xld.line_definition_code = mpa.line_definition_code
6687 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6688 AND xld.accounting_line_code = mpa.accounting_line_code
6689 AND xja.source_code is null
6690 AND NOT EXISTS (SELECT 'x'
6691 FROM xla_line_defn_jlt_assgns xld1
6692 WHERE xld1.application_id = mpa.application_id
6693 AND xld1.amb_context_code = mpa.amb_context_code
6694 AND xld1.event_class_code = mpa.event_class_code
6695 AND xld1.event_type_code = mpa.event_type_code
6696 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6697 AND xld1.line_definition_code = mpa.line_definition_code
6698 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6699 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6700 AND EXISTS (SELECT 'x'
6701 FROM xla_acct_attributes_b xaa
6702 WHERE xaa.accounting_attribute_code = xja.accounting_attribute_code
6703 AND xaa.assignment_required_code = 'Y'
6704 AND xaa.assignment_level_code IN ('EVT_CLASS_JLT','JLT_ONLY'));
6705
6706 CURSOR c_pe_jlt IS
6707 SELECT mpa.mpa_accounting_line_type_code
6708 ,mpa.mpa_accounting_line_code
6709 ,xja.accounting_attribute_code
6710 FROM xla_line_defn_jlt_assgns xld
6711 ,xla_acct_line_types_b jlt
6712 ,xla_jlt_acct_attrs xja
6713 ,xla_mpa_jlt_assgns mpa
6714 WHERE jlt.application_id = xja.application_id
6715 AND jlt.amb_context_code = xja.amb_context_code
6716 AND jlt.event_class_code = xja.event_class_code
6717 AND jlt.accounting_line_type_code = xja.accounting_line_type_code
6718 AND jlt.accounting_line_code = xja.accounting_line_code
6719 AND mpa.application_id = jlt.application_id
6720 AND mpa.amb_context_code = jlt.amb_context_code
6721 AND mpa.event_class_code = jlt.event_class_code
6722 AND mpa.mpa_accounting_line_type_code = jlt.accounting_line_type_code
6723 AND mpa.mpa_accounting_line_code = jlt.accounting_line_code
6724 AND jlt.business_method_code = 'PRIOR_ENTRY'
6725 AND xld.application_id = p_application_id
6726 AND xld.amb_context_code = p_amb_context_code
6727 AND xld.event_class_code = p_event_class_code
6728 AND xld.event_type_code = p_event_type_code
6729 AND xld.line_definition_owner_code= p_line_definition_owner_code
6730 AND xld.line_definition_code = p_line_definition_code
6731 AND xld.active_flag = 'Y'
6732 AND xld.application_id = mpa.application_id
6733 AND xld.amb_context_code = mpa.amb_context_code
6734 AND xld.event_class_code = mpa.event_class_code
6735 AND xld.event_type_code = mpa.event_type_code
6736 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6737 AND xld.line_definition_code = mpa.line_definition_code
6738 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6739 AND xld.accounting_line_code = mpa.accounting_line_code
6740 AND xja.source_code is null
6741 AND NOT EXISTS (SELECT 'x'
6742 FROM xla_line_defn_jlt_assgns xld1
6743 WHERE xld1.application_id = mpa.application_id
6744 AND xld1.amb_context_code = mpa.amb_context_code
6745 AND xld1.event_class_code = mpa.event_class_code
6746 AND xld1.event_type_code = mpa.event_type_code
6747 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6748 AND xld1.line_definition_code = mpa.line_definition_code
6749 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6750 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code)
6751 AND EXISTS (SELECT 'x'
6752 FROM xla_acct_attributes_b xaa
6753 WHERE xaa.accounting_attribute_code = xja.accounting_attribute_code
6754 AND xaa.assignment_required_code = 'Y'
6755 AND xaa.assignment_level_code IN ('EVT_CLASS_JLT','JLT_ONLY')
6756 AND xaa.inherited_flag = 'N');
6757
6758
6759 l_return BOOLEAN;
6760 l_log_module VARCHAR2(240);
6761 BEGIN
6762 IF g_log_enabled THEN
6763 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_jlt_acct_src_assigned';
6764 END IF;
6765
6766 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6767 trace(p_msg => 'BEGIN of procedure chk_mpa_jlt_acct_src_assigned'
6768 ,p_module => l_log_module
6769 ,p_level => C_LEVEL_PROCEDURE);
6770 END IF;
6771
6772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6773 trace(p_msg => 'application_id = '||p_application_id||
6774 ',amb_context_code = '||p_amb_context_code||
6775 ',event_class_code = '||p_event_class_code||
6776 ',event_type_code = '||p_event_type_code||
6777 ',line_definition_owner_code = '||p_line_definition_owner_code||
6778 ',line_definition_code = '||p_line_definition_code
6779 ,p_module => l_log_module
6780 ,p_level => C_LEVEL_STATEMENT);
6781 END IF;
6782
6783 l_return := TRUE;
6784
6785 --
6786 -- Check if any JLT does not have all required line accounting sources
6787 --
6788 FOR l_err IN c_non_pe_jlt LOOP
6789 l_return := FALSE;
6790
6791 xla_amb_setup_err_pkg.stack_error
6792 (p_message_name => 'XLA_AB_MPA_LT_ACCTING_SOURCE'
6793 ,p_message_type => 'E'
6794 ,p_message_category => 'MPA_LINE_TYPE'
6795 ,p_category_sequence => 18
6796 ,p_application_id => p_application_id
6797 ,p_amb_context_code => p_amb_context_code
6798 ,p_event_class_code => p_event_class_code
6799 ,p_event_type_code => p_event_type_code
6800 ,p_line_definition_owner_code => p_line_definition_owner_code
6801 ,p_line_definition_code => p_line_definition_code
6802 ,p_mpa_acct_line_type_code => l_err.mpa_accounting_line_type_code
6803 ,p_mpa_acct_line_code => l_err.mpa_accounting_line_code
6804 ,p_accounting_source_code => l_err.accounting_attribute_code);
6805 END LOOP;
6806
6807 FOR l_err IN c_pe_jlt LOOP
6808 l_return := FALSE;
6809
6810 xla_amb_setup_err_pkg.stack_error
6811 (p_message_name => 'XLA_AB_MPA_LT_ACCTING_SOURCE'
6812 ,p_message_type => 'E'
6813 ,p_message_category => 'MPA_LINE_TYPE'
6814 ,p_category_sequence => 18
6815 ,p_application_id => p_application_id
6816 ,p_amb_context_code => p_amb_context_code
6817 ,p_event_class_code => p_event_class_code
6818 ,p_event_type_code => p_event_type_code
6819 ,p_line_definition_owner_code => p_line_definition_owner_code
6820 ,p_line_definition_code => p_line_definition_code
6821 ,p_mpa_acct_line_type_code => l_err.mpa_accounting_line_type_code
6822 ,p_mpa_acct_line_code => l_err.mpa_accounting_line_code
6823 ,p_accounting_source_code => l_err.accounting_attribute_code);
6824 END LOOP;
6825
6826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6827 trace(p_msg => 'END of procedure chk_mpa_jlt_acct_src_assigned'
6828 ,p_module => l_log_module
6829 ,p_level => C_LEVEL_PROCEDURE);
6830 END IF;
6831
6832 RETURN l_return;
6833
6834 EXCEPTION
6835 WHEN xla_exceptions_pkg.application_exception THEN
6836 IF (c_non_pe_jlt%ISOPEN) THEN
6837 CLOSE c_non_pe_jlt;
6838 END IF;
6839 IF (c_pe_jlt%ISOPEN) THEN
6840 CLOSE c_pe_jlt;
6841 END IF;
6842 RAISE;
6843
6844 WHEN OTHERS THEN
6845 IF (c_non_pe_jlt%ISOPEN) THEN
6846 CLOSE c_non_pe_jlt;
6847 END IF;
6848 IF (c_pe_jlt%ISOPEN) THEN
6849 CLOSE c_pe_jlt;
6850 END IF;
6851 xla_exceptions_pkg.raise_message
6852 (p_location => 'xla_line_definitions_pvt.chk_mpa_jlt_acct_src_assigned');
6853
6854 END chk_mpa_jlt_acct_src_assigned;
6855
6856
6857 --=============================================================================
6858 --
6859 -- Name: chk_mpa_jlt_inv_acct_group_src
6860 -- Description: Check if all JLT of the line definition has all required
6861 -- accounting sources assigned
6862 --
6863 --=============================================================================
6864 FUNCTION chk_mpa_jlt_inv_acct_group_src
6865 (p_application_id IN NUMBER
6866 ,p_amb_context_code IN VARCHAR2
6867 ,p_event_class_code IN VARCHAR2
6868 ,p_event_type_code IN VARCHAR2
6869 ,p_line_definition_owner_code IN VARCHAR2
6870 ,p_line_definition_code IN VARCHAR2)
6871 RETURN BOOLEAN
6872 IS
6873 CURSOR c_jlt_assgns IS
6874 SELECT distinct mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code
6875 FROM xla_line_defn_jlt_assgns xld
6876 ,xla_mpa_jlt_assgns mpa
6877 WHERE xld.application_id = p_application_id
6878 AND xld.amb_context_code = p_amb_context_code
6879 AND xld.event_class_code = p_event_class_code
6880 AND xld.event_type_code = p_event_type_code
6881 AND xld.line_definition_owner_code = p_line_definition_owner_code
6882 AND xld.line_definition_code = p_line_definition_code
6883 AND xld.active_flag = 'Y'
6884 AND xld.application_id = mpa.application_id
6885 AND xld.amb_context_code = mpa.amb_context_code
6886 AND xld.event_class_code = mpa.event_class_code
6887 AND xld.event_type_code = mpa.event_type_code
6888 AND xld.line_definition_owner_code = mpa.line_definition_owner_code
6889 AND xld.line_definition_code = mpa.line_definition_code
6890 AND xld.accounting_line_type_code = mpa.accounting_line_type_code
6891 AND xld.accounting_line_code = mpa.accounting_line_code
6892 AND NOT EXISTS (SELECT 'x'
6893 FROM xla_line_defn_jlt_assgns xld1
6894 WHERE xld1.application_id = mpa.application_id
6895 AND xld1.amb_context_code = mpa.amb_context_code
6896 AND xld1.event_class_code = mpa.event_class_code
6897 AND xld1.event_type_code = mpa.event_type_code
6898 AND xld1.line_definition_owner_code = mpa.line_definition_owner_code
6899 AND xld1.line_definition_code = mpa.line_definition_code
6900 AND xld1.accounting_line_type_code = mpa.mpa_accounting_line_type_code
6901 AND xld1.accounting_line_code = mpa.mpa_accounting_line_code) ;
6902
6903 CURSOR c_business_method(l_accounting_line_type_code VARCHAR2
6904 ,l_accounting_line_code VARCHAR2)
6905 IS
6906 SELECT business_method_code
6907 FROM xla_acct_line_types_b
6908 WHERE application_id = p_application_id
6909 AND amb_context_code = p_amb_context_code
6910 AND event_class_code = p_event_class_code
6911 AND accounting_line_type_code = l_accounting_line_type_code
6912 AND accounting_line_code = l_accounting_line_code;
6913
6914 CURSOR c_mapping_groups(l_accounting_line_type_code VARCHAR2
6915 ,l_accounting_line_code VARCHAR2) IS
6916 SELECT distinct xaa.assignment_group_code
6917 FROM xla_jlt_acct_attrs xja, xla_acct_attributes_b xaa
6918 WHERE xja.application_id = p_application_id
6919 AND xja.amb_context_code = p_amb_context_code
6920 AND xja.event_class_code = p_event_class_code
6921 AND xja.accounting_line_type_code = l_accounting_line_type_code
6922 AND xja.accounting_line_code = l_accounting_line_code
6923 AND xja.accounting_attribute_code = xaa.accounting_attribute_code
6924 AND xja.source_code IS NOT NULL
6925 UNION
6926 SELECT distinct xaa.assignment_group_code
6927 FROM xla_evt_class_acct_attrs xec, xla_acct_attributes_b xaa
6928 WHERE xec.application_id = p_application_id
6929 AND xec.event_class_code = p_event_class_code
6930 AND xec.accounting_attribute_code = xaa.accounting_attribute_code
6931 AND xaa.assignment_level_code = 'EVT_CLASS_ONLY'
6932 AND xec.default_flag = 'Y';
6933
6934 CURSOR c_group_acct_sources(l_accounting_line_type_code VARCHAR2
6935 ,l_accounting_line_code VARCHAR2
6936 ,l_assignment_group_code VARCHAR2) IS
6937 SELECT distinct xaa.accounting_attribute_code
6938 FROM xla_acct_attributes_b xaa
6939 ,xla_jlt_acct_attrs xja
6940 WHERE xaa.assignment_level_code = 'EVT_CLASS_JLT'
6941 AND xaa.assignment_required_code = 'G'
6942 AND xaa.accounting_attribute_code = xja.accounting_attribute_code
6943 AND xaa.assignment_group_code = l_assignment_group_code
6944 AND xja.application_id = p_application_id
6945 AND xja.amb_context_code = p_amb_context_code
6946 AND xja.event_class_code = p_event_class_code
6947 AND xja.accounting_line_type_code = l_accounting_line_type_code
6948 AND xja.accounting_line_code = l_accounting_line_code
6949 AND xja.source_code IS NULL;
6950
6951 CURSOR c_pe_mapping_groups(l_accounting_line_type_code VARCHAR2
6952 ,l_accounting_line_code VARCHAR2) IS
6953 SELECT distinct xaa.assignment_group_code
6954 FROM xla_jlt_acct_attrs xja, xla_acct_attributes_b xaa
6955 WHERE xja.application_id = p_application_id
6956 AND xja.amb_context_code = p_amb_context_code
6957 AND xja.event_class_code = p_event_class_code
6958 AND xja.accounting_line_type_code = l_accounting_line_type_code
6959 AND xja.accounting_line_code = l_accounting_line_code
6960 AND xja.accounting_attribute_code = xaa.accounting_attribute_code
6961 AND (xja.source_code IS NOT NULL
6962 OR xaa.inherited_flag = 'Y')
6963 UNION
6964 SELECT distinct xaa.assignment_group_code
6965 FROM xla_evt_class_acct_attrs xec, xla_acct_attributes_b xaa
6966 WHERE xec.application_id = p_application_id
6967 AND xec.event_class_code = p_event_class_code
6968 AND xec.accounting_attribute_code = xaa.accounting_attribute_code
6969 AND xaa.assignment_level_code = 'EVT_CLASS_ONLY'
6970 AND xec.default_flag = 'Y';
6971
6972 CURSOR c_pe_group_acct_sources(l_accounting_line_type_code VARCHAR2
6973 ,l_accounting_line_code VARCHAR2
6974 ,l_assignment_group_code VARCHAR2) IS
6975 SELECT distinct xaa.accounting_attribute_code
6976 FROM xla_acct_attributes_b xaa
6977 ,xla_jlt_acct_attrs xja
6978 WHERE xaa.assignment_level_code = 'EVT_CLASS_JLT'
6979 AND xaa.assignment_required_code = 'G'
6980 AND xaa.accounting_attribute_code = xja.accounting_attribute_code
6981 AND xaa.assignment_group_code = l_assignment_group_code
6982 AND xja.application_id = p_application_id
6983 AND xja.amb_context_code = p_amb_context_code
6984 AND xja.event_class_code = p_event_class_code
6985 AND xja.accounting_line_type_code = l_accounting_line_type_code
6986 AND xja.accounting_line_code = l_accounting_line_code
6987 AND xja.source_code IS NULL
6988 AND xaa.inherited_flag = 'N';
6989
6990 l_return BOOLEAN;
6991 l_log_module VARCHAR2(240);
6992 l_business_method_code VARCHAR2(30);
6993
6994 BEGIN
6995 IF g_log_enabled THEN
6996 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_jlt_inv_acct_group_src';
6997 END IF;
6998
6999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7000 trace(p_msg => 'BEGIN of procedure chk_mpa_jlt_inv_acct_group_src'
7001 ,p_module => l_log_module
7002 ,p_level => C_LEVEL_PROCEDURE);
7003 END IF;
7004
7005 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7006 trace(p_msg => 'application_id = '||p_application_id||
7007 ',amb_context_code = '||p_amb_context_code||
7008 ',event_class_code = '||p_event_class_code||
7009 ',event_type_code = '||p_event_type_code||
7010 ',line_definition_owner_code = '||p_line_definition_owner_code||
7011 ',line_definition_code = '||p_line_definition_code
7012 ,p_module => l_log_module
7013 ,p_level => C_LEVEL_STATEMENT);
7014 END IF;
7015
7016 l_return := TRUE;
7017
7018 FOR l_jlt IN c_jlt_assgns LOOP
7019
7020 OPEN c_business_method(l_jlt.mpa_accounting_line_type_code
7021 ,l_jlt.mpa_accounting_line_code);
7022 FETCH c_business_method
7023 INTO l_business_method_code;
7024 CLOSE c_business_method;
7025
7026 IF l_business_method_code <> 'PRIOR_ENTRY' THEN
7027
7028 FOR l_mapping_group IN c_mapping_groups(l_jlt.mpa_accounting_line_type_code
7029 ,l_jlt.mpa_accounting_line_code) LOOP
7030 FOR l_err IN c_group_acct_sources(l_jlt.mpa_accounting_line_type_code
7031 ,l_jlt.mpa_accounting_line_code
7032 ,l_mapping_group.assignment_group_code) LOOP
7033 l_return := FALSE;
7034 xla_amb_setup_err_pkg.stack_error
7035 (p_message_name => 'XLA_AB_MPA_LT_ACCT_GROUP_SRC'
7036 ,p_message_type => 'E'
7037 ,p_message_category => 'MPA_LINE_TYPE'
7038 ,p_category_sequence => 18
7039 ,p_application_id => p_application_id
7040 ,p_amb_context_code => p_amb_context_code
7041 ,p_event_class_code => p_event_class_code
7042 ,p_event_type_code => p_event_type_code
7043 ,p_line_definition_owner_code => p_line_definition_owner_code
7044 ,p_line_definition_code => p_line_definition_code
7045 ,p_mpa_acct_line_type_code => l_jlt.mpa_accounting_line_type_code
7046 ,p_mpa_acct_line_code => l_jlt.mpa_accounting_line_code
7047 ,p_accounting_source_code => l_err.accounting_attribute_code
7048 ,p_accounting_group_code => l_mapping_group.assignment_group_code);
7049 END LOOP;
7050 END LOOP;
7051 ELSE
7052 FOR l_pe_mapping_group IN c_pe_mapping_groups(l_jlt.mpa_accounting_line_type_code
7053 ,l_jlt.mpa_accounting_line_code) LOOP
7054 FOR l_err IN c_pe_group_acct_sources(l_jlt.mpa_accounting_line_type_code
7055 ,l_jlt.mpa_accounting_line_code
7056 ,l_pe_mapping_group.assignment_group_code) LOOP
7057 l_return := FALSE;
7058 xla_amb_setup_err_pkg.stack_error
7059 (p_message_name => 'XLA_AB_MPA_LT_ACCT_GROUP_SRC'
7060 ,p_message_type => 'E'
7061 ,p_message_category => 'MPA_LINE_TYPE'
7062 ,p_category_sequence => 18
7063 ,p_application_id => p_application_id
7064 ,p_amb_context_code => p_amb_context_code
7065 ,p_event_class_code => p_event_class_code
7066 ,p_event_type_code => p_event_type_code
7067 ,p_line_definition_owner_code => p_line_definition_owner_code
7068 ,p_line_definition_code => p_line_definition_code
7069 ,p_mpa_acct_line_type_code => l_jlt.mpa_accounting_line_type_code
7070 ,p_mpa_acct_line_code => l_jlt.mpa_accounting_line_code
7071 ,p_accounting_source_code => l_err.accounting_attribute_code
7072 ,p_accounting_group_code => l_pe_mapping_group.assignment_group_code);
7073 END LOOP;
7074 END LOOP;
7075 END IF;
7076 END LOOP;
7077
7078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7079 trace(p_msg => 'END of procedure chk_mpa_jlt_inv_acct_group_src'
7080 ,p_module => l_log_module
7081 ,p_level => C_LEVEL_PROCEDURE);
7082 END IF;
7083
7084 RETURN l_return;
7085
7086 EXCEPTION
7087 WHEN xla_exceptions_pkg.application_exception THEN
7088 IF (c_jlt_assgns%ISOPEN) THEN
7089 CLOSE c_jlt_assgns;
7090 END IF;
7091 IF (c_mapping_groups%ISOPEN) THEN
7092 CLOSE c_mapping_groups;
7093 END IF;
7094 IF (c_group_acct_sources%ISOPEN) THEN
7095 CLOSE c_group_acct_sources;
7096 END IF;
7097 IF (c_pe_mapping_groups%ISOPEN) THEN
7098 CLOSE c_mapping_groups;
7099 END IF;
7100 IF (c_pe_group_acct_sources%ISOPEN) THEN
7101 CLOSE c_group_acct_sources;
7102 END IF;
7103 RAISE;
7104
7105 WHEN OTHERS THEN
7106 IF (c_jlt_assgns%ISOPEN) THEN
7107 CLOSE c_jlt_assgns;
7108 END IF;
7109 IF (c_mapping_groups%ISOPEN) THEN
7110 CLOSE c_mapping_groups;
7111 END IF;
7112 IF (c_group_acct_sources%ISOPEN) THEN
7113 CLOSE c_group_acct_sources;
7114 END IF;
7115 IF (c_pe_mapping_groups%ISOPEN) THEN
7116 CLOSE c_mapping_groups;
7117 END IF;
7118 IF (c_pe_group_acct_sources%ISOPEN) THEN
7119 CLOSE c_group_acct_sources;
7120 END IF;
7121 xla_exceptions_pkg.raise_message
7122 (p_location => 'xla_line_definitions_pvt.chk_mpa_jlt_inv_acct_group_src');
7123
7124 END chk_mpa_jlt_inv_acct_group_src;
7125
7126
7127 --=============================================================================
7128 --
7129 -- Name: validate_mpa_jlt_assgns
7130 -- Description: Validate MPA JLT assignment of the line definition
7131 --
7132 --=============================================================================
7133 FUNCTION validate_mpa_jlt_assgns
7134 (p_application_id IN NUMBER
7135 ,p_amb_context_code IN VARCHAR2
7136 ,p_event_class_code IN VARCHAR2
7137 ,p_event_type_code IN VARCHAR2
7138 ,p_line_definition_owner_code IN VARCHAR2
7139 ,p_line_definition_code IN VARCHAR2)
7140 RETURN BOOLEAN
7141 IS
7142 l_return BOOLEAN;
7143 l_log_module VARCHAR2(240);
7144 BEGIN
7145 IF g_log_enabled THEN
7146 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_jlt_assgns';
7147 END IF;
7148
7149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7150 trace(p_msg => 'BEGIN of procedure validate_mpa_jlt_assgns'
7151 ,p_module => l_log_module
7152 ,p_level => C_LEVEL_PROCEDURE);
7153 END IF;
7154
7155 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7156 trace(p_msg => 'application_id = '||p_application_id||
7157 ',amb_context_code = '||p_amb_context_code||
7158 ',event_class_code = '||p_event_class_code||
7159 ',event_type_code = '||p_event_type_code||
7160 ',line_definition_owner_code = '||p_line_definition_owner_code||
7161 ',line_definition_code = '||p_line_definition_code
7162 ,p_module => l_log_module
7163 ,p_level => C_LEVEL_STATEMENT);
7164 END IF;
7165
7166 l_return := TRUE;
7167
7168 l_return := chk_mpa_jlt_lines
7169 (p_application_id => p_application_id
7170 ,p_amb_context_code => p_amb_context_code
7171 ,p_event_class_code => p_event_class_code
7172 ,p_event_type_code => p_event_type_code
7173 ,p_line_definition_owner_code => p_line_definition_owner_code
7174 ,p_line_definition_code => p_line_definition_code)
7175 AND l_return;
7176
7177 l_return := chk_mpa_jlt_is_enabled
7178 (p_application_id => p_application_id
7179 ,p_amb_context_code => p_amb_context_code
7180 ,p_event_class_code => p_event_class_code
7181 ,p_event_type_code => p_event_type_code
7182 ,p_line_definition_owner_code => p_line_definition_owner_code
7183 ,p_line_definition_code => p_line_definition_code)
7184 AND l_return;
7185
7186 l_return := chk_mpa_jlt_acct_class_exist
7187 (p_application_id => p_application_id
7188 ,p_amb_context_code => p_amb_context_code
7189 ,p_event_class_code => p_event_class_code
7190 ,p_event_type_code => p_event_type_code
7191 ,p_line_definition_owner_code => p_line_definition_owner_code
7192 ,p_line_definition_code => p_line_definition_code)
7193 AND l_return;
7194
7195 l_return := chk_mpa_jlt_inv_source_in_cond
7196 (p_application_id => p_application_id
7197 ,p_amb_context_code => p_amb_context_code
7198 ,p_event_class_code => p_event_class_code
7199 ,p_event_type_code => p_event_type_code
7200 ,p_line_definition_owner_code => p_line_definition_owner_code
7201 ,p_line_definition_code => p_line_definition_code)
7202 AND l_return;
7203
7204 l_return := chk_mpa_jlt_acct_src_assigned
7205 (p_application_id => p_application_id
7206 ,p_amb_context_code => p_amb_context_code
7207 ,p_event_class_code => p_event_class_code
7208 ,p_event_type_code => p_event_type_code
7209 ,p_line_definition_owner_code => p_line_definition_owner_code
7210 ,p_line_definition_code => p_line_definition_code)
7211 AND l_return;
7212
7213 l_return := chk_mpa_jlt_inv_acct_group_src
7214 (p_application_id => p_application_id
7215 ,p_amb_context_code => p_amb_context_code
7216 ,p_event_class_code => p_event_class_code
7217 ,p_event_type_code => p_event_type_code
7218 ,p_line_definition_owner_code => p_line_definition_owner_code
7219 ,p_line_definition_code => p_line_definition_code)
7220 AND l_return;
7221
7222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7223 trace(p_msg => 'END of procedure validate_mpa_jlt_assgns'
7224 ,p_module => l_log_module
7225 ,p_level => C_LEVEL_PROCEDURE);
7226 END IF;
7227
7228 RETURN l_return;
7229
7230 EXCEPTION
7231 WHEN xla_exceptions_pkg.application_exception THEN
7232 RAISE;
7233 WHEN OTHERS THEN
7234 xla_exceptions_pkg.raise_message
7235 (p_location => 'xla_line_definitions_pvt.validate_mpa_jlt_assgns');
7236 END validate_mpa_jlt_assgns;
7237
7238 --=============================================================================
7239 --
7240 -- Name: chk_mpa_line_desc_is_enabled
7241 -- Description: Check if all line description of the line definition are enabled
7242 --
7243 --=============================================================================
7244 FUNCTION chk_mpa_line_desc_is_enabled
7245 (p_application_id IN NUMBER
7246 ,p_amb_context_code IN VARCHAR2
7247 ,p_event_class_code IN VARCHAR2
7248 ,p_event_type_code IN VARCHAR2
7249 ,p_line_definition_owner_code IN VARCHAR2
7250 ,p_line_definition_code IN VARCHAR2)
7251 RETURN BOOLEAN
7252 IS
7253 CURSOR c_invalid_line_desc IS
7254 SELECT distinct xdb.description_type_code, xdb.description_code
7255 FROM xla_mpa_jlt_assgns mjl
7256 ,xla_line_defn_jlt_assgns xjl
7257 ,xla_descriptions_b xdb
7258 WHERE xjl.application_id = p_application_id
7259 AND xjl.amb_context_code = p_amb_context_code
7260 AND xjl.event_class_code = p_event_class_code
7261 AND xjl.event_type_code = p_event_type_code
7262 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7263 AND xjl.line_definition_code = p_line_definition_code
7264 AND xjl.active_flag = 'Y'
7265 AND xjl.application_id = mjl.application_id
7266 AND xjl.amb_context_code = mjl.amb_context_code
7267 AND xjl.event_class_code = mjl.event_class_code
7268 AND xjl.event_type_code = mjl.event_type_code
7269 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7270 AND xjl.line_definition_code = mjl.line_definition_code
7271 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7272 AND xjl.accounting_line_code = mjl.accounting_line_code
7273 AND mjl.description_type_code IS NOT NULL
7274 AND xdb.application_id = mjl.application_id
7275 AND xdb.amb_context_code = mjl.amb_context_code
7276 AND xdb.description_type_code = mjl.description_type_code
7277 AND xdb.description_code = mjl.description_code
7278 AND xdb.enabled_flag <> 'Y';
7279
7280 l_return BOOLEAN;
7281 l_log_module VARCHAR2(240);
7282 BEGIN
7283 IF g_log_enabled THEN
7284 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_line_desc_is_enabled';
7285 END IF;
7286
7287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7288 trace(p_msg => 'BEGIN of procedure chk_mpa_line_desc_is_enabled'
7289 ,p_module => l_log_module
7290 ,p_level => C_LEVEL_PROCEDURE);
7291 END IF;
7292
7293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7294 trace(p_msg => 'application_id = '||p_application_id||
7295 ',amb_context_code = '||p_amb_context_code||
7296 ',event_class_code = '||p_event_class_code||
7297 ',event_type_code = '||p_event_type_code||
7298 ',line_definition_owner_code = '||p_line_definition_owner_code||
7299 ',line_definition_code = '||p_line_definition_code
7300 ,p_module => l_log_module
7301 ,p_level => C_LEVEL_STATEMENT);
7302 END IF;
7303
7304 l_return := TRUE;
7305
7306 FOR l_err IN c_invalid_line_desc LOOP
7307 l_return := FALSE;
7308
7309 xla_amb_setup_err_pkg.stack_error
7310 (p_message_name => 'XLA_AB_MPA_DISABLD_LN_DESC'
7311 ,p_message_type => 'E'
7312 ,p_message_category => 'MPA_LINE_DESC'
7313 ,p_category_sequence => 19
7314 ,p_application_id => p_application_id
7315 ,p_amb_context_code => p_amb_context_code
7316 ,p_event_class_code => p_event_class_code
7317 ,p_event_type_code => p_event_type_code
7318 ,p_line_definition_owner_code => p_line_definition_owner_code
7319 ,p_line_definition_code => p_line_definition_code
7320 ,p_description_type_code => l_err.description_type_code
7321 ,p_description_code => l_err.description_code);
7322 END LOOP;
7323
7324 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7325 trace(p_msg => 'END of procedure chk_mpa_line_desc_is_enabled'
7326 ,p_module => l_log_module
7327 ,p_level => C_LEVEL_PROCEDURE);
7328 END IF;
7329
7330 RETURN l_return;
7331
7332 EXCEPTION
7333 WHEN xla_exceptions_pkg.application_exception THEN
7334 IF (c_invalid_line_desc%ISOPEN) THEN
7335 CLOSE c_invalid_line_desc;
7336 END IF;
7337 RAISE;
7338
7339 WHEN OTHERS THEN
7340 IF (c_invalid_line_desc%ISOPEN) THEN
7341 CLOSE c_invalid_line_desc;
7342 END IF;
7343 xla_exceptions_pkg.raise_message
7344 (p_location => 'xla_line_definitions_pvt.chk_mpa_line_desc_is_enabled');
7345
7346 END chk_mpa_line_desc_is_enabled;
7347
7348 --=============================================================================
7349 --
7350 -- Name: chk_mpa_line_desc_inv_src_cond
7351 -- Description: Check if all sources used in the JLT condition is valid
7352 --
7353 --=============================================================================
7354 FUNCTION chk_mpa_line_desc_inv_src_cond
7355 (p_application_id IN NUMBER
7356 ,p_amb_context_code IN VARCHAR2
7357 ,p_event_class_code IN VARCHAR2
7358 ,p_event_type_code IN VARCHAR2
7359 ,p_line_definition_owner_code IN VARCHAR2
7360 ,p_line_definition_code IN VARCHAR2)
7361 RETURN BOOLEAN
7362 IS
7363 --
7364 -- Get all JLT that have sources that do not belong to the event class of the
7365 -- line definition
7366 --
7367 CURSOR c_invalid_sources IS
7368 SELECT distinct xjl.description_type_code, xjl.description_code,
7369 xco.source_type_code source_type_code, xco.source_code source_code
7370 FROM xla_conditions xco
7371 ,xla_desc_priorities xdp
7372 ,xla_mpa_jlt_assgns mjl
7373 ,xla_line_defn_jlt_assgns xjl
7374 WHERE xco.description_prio_id = xdp.description_prio_id
7375 AND xdp.application_id = mjl.application_id
7376 AND xdp.amb_context_code = mjl.amb_context_code
7377 AND xdp.description_type_code = mjl.description_type_code
7378 AND xdp.description_code = mjl.description_code
7379 AND xjl.application_id = p_application_id
7380 AND xjl.amb_context_code = p_amb_context_code
7381 AND xjl.event_class_code = p_event_class_code
7382 AND xjl.event_type_code = p_event_type_code
7383 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7384 AND xjl.line_definition_code = p_line_definition_code
7385 AND xjl.active_flag = 'Y'
7386 AND xjl.application_id = mjl.application_id
7387 AND xjl.amb_context_code = mjl.amb_context_code
7388 AND xjl.event_class_code = mjl.event_class_code
7389 AND xjl.event_type_code = mjl.event_type_code
7390 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7391 AND xjl.line_definition_code = mjl.line_definition_code
7392 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7393 AND xjl.accounting_line_code = mjl.accounting_line_code
7394 AND mjl.description_code IS NOT NULL
7395 AND xco.source_type_code = 'S'
7396 AND NOT EXISTS
7397 (SELECT 'y'
7398 FROM xla_event_sources xes
7399 WHERE xes.source_application_id = xco.source_application_id
7400 AND xes.source_type_code = xco.source_type_code
7401 AND xes.source_code = xco.source_code
7402 AND xes.application_id = mjl.application_id
7403 AND xes.event_class_code = mjl.event_class_code
7404 AND xes.active_flag = 'Y')
7405 UNION
7406 SELECT distinct xjl.description_type_code, xjl.description_code,
7407 xco.value_source_type_code source_type_code, xco.value_source_code source_code
7408 FROM xla_conditions xco
7409 ,xla_desc_priorities xdp
7410 ,xla_line_defn_jlt_assgns xjl
7411 ,xla_mpa_jlt_assgns mjl
7412 WHERE xco.description_prio_id = xdp.description_prio_id
7413 AND xdp.application_id = mjl.application_id
7414 AND xdp.amb_context_code = mjl.amb_context_code
7415 AND xdp.description_type_code = mjl.description_type_code
7416 AND xdp.description_code = mjl.description_code
7417 AND xjl.application_id = p_application_id
7418 AND xjl.amb_context_code = p_amb_context_code
7419 AND xjl.event_class_code = p_event_class_code
7420 AND xjl.event_type_code = p_event_type_code
7421 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7422 AND xjl.line_definition_code = p_line_definition_code
7423 AND xjl.active_flag = 'Y'
7424 AND xco.value_source_type_code = 'S'
7425 AND xjl.application_id = mjl.application_id
7426 AND xjl.amb_context_code = mjl.amb_context_code
7427 AND xjl.event_class_code = mjl.event_class_code
7428 AND xjl.event_type_code = mjl.event_type_code
7429 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7430 AND xjl.line_definition_code = mjl.line_definition_code
7431 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7432 AND xjl.accounting_line_code = mjl.accounting_line_code
7433 AND mjl.description_code IS NOT NULL
7434 AND NOT EXISTS
7435 (SELECT 'y'
7436 FROM xla_event_sources xes
7437 WHERE xes.source_application_id = xco.value_source_application_id
7438 AND xes.source_type_code = xco.value_source_type_code
7439 AND xes.source_code = xco.value_source_code
7440 AND xes.application_id = mjl.application_id
7441 AND xes.event_class_code = mjl.event_class_code
7442 AND xes.active_flag = 'Y');
7443
7444 CURSOR c_der_sources IS
7445 SELECT distinct xjl.description_type_code, xjl.description_code,
7446 xco.source_type_code source_type_code, xco.source_code source_code
7447 FROM xla_conditions xco
7448 ,xla_desc_priorities xdp
7449 ,xla_line_defn_jlt_assgns xjl
7450 ,xla_mpa_jlt_assgns mjl
7451 WHERE xco.description_prio_id = xdp.description_prio_id
7452 AND xdp.application_id = mjl.application_id
7453 AND xdp.amb_context_code = mjl.amb_context_code
7454 AND xdp.description_type_code = mjl.description_type_code
7455 AND xdp.description_code = mjl.description_code
7456 AND xjl.application_id = p_application_id
7457 AND xjl.amb_context_code = p_amb_context_code
7458 AND xjl.event_class_code = p_event_class_code
7459 AND xjl.event_type_code = p_event_type_code
7460 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7461 AND xjl.line_definition_code = p_line_definition_code
7462 AND xjl.active_flag = 'Y'
7463 AND xco.source_type_code = 'D'
7464 AND xjl.application_id = mjl.application_id
7465 AND xjl.amb_context_code = mjl.amb_context_code
7466 AND xjl.event_class_code = mjl.event_class_code
7467 AND xjl.event_type_code = mjl.event_type_code
7468 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7469 AND xjl.line_definition_code = mjl.line_definition_code
7470 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7471 AND xjl.accounting_line_code = mjl.accounting_line_code
7472 AND mjl.description_code IS NOT NULL
7473 UNION
7474 SELECT distinct xjl.description_type_code, xjl.description_code,
7475 xco.value_source_type_code source_type_code, xco.value_source_code source_code
7476 FROM xla_conditions xco
7477 ,xla_desc_priorities xdp
7478 ,xla_line_defn_jlt_assgns xjl
7479 ,xla_mpa_jlt_assgns mjl
7480 WHERE xco.description_prio_id = xdp.description_prio_id
7481 AND xdp.application_id = mjl.application_id
7482 AND xdp.amb_context_code = mjl.amb_context_code
7483 AND xdp.description_type_code = mjl.description_type_code
7484 AND xdp.description_code = mjl.description_code
7485 AND xjl.application_id = p_application_id
7486 AND xjl.amb_context_code = p_amb_context_code
7487 AND xjl.event_class_code = p_event_class_code
7488 AND xjl.event_type_code = p_event_type_code
7489 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7490 AND xjl.line_definition_code = p_line_definition_code
7491 AND xjl.active_flag = 'Y'
7492 AND xco.value_source_type_code = 'D'
7493 AND xjl.application_id = mjl.application_id
7494 AND xjl.amb_context_code = mjl.amb_context_code
7495 AND xjl.event_class_code = mjl.event_class_code
7496 AND xjl.event_type_code = mjl.event_type_code
7497 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7498 AND xjl.line_definition_code = mjl.line_definition_code
7499 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7500 AND xjl.accounting_line_code = mjl.accounting_line_code
7501 AND mjl.description_code IS NOT NULL;
7502
7503 l_return BOOLEAN;
7504 l_log_module VARCHAR2(240);
7505 BEGIN
7506 IF g_log_enabled THEN
7507 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_line_desc_inv_src_cond';
7508 END IF;
7509
7510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7511 trace(p_msg => 'BEGIN of procedure chk_mpa_line_desc_inv_src_cond'
7512 ,p_module => l_log_module
7513 ,p_level => C_LEVEL_PROCEDURE);
7514 END IF;
7515
7516 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7517 trace(p_msg => 'application_id = '||p_application_id||
7518 ',amb_context_code = '||p_amb_context_code||
7519 ',event_class_code = '||p_event_class_code||
7520 ',event_type_code = '||p_event_type_code||
7521 ',line_definition_owner_code = '||p_line_definition_owner_code||
7522 ',line_definition_code = '||p_line_definition_code
7523 ,p_module => l_log_module
7524 ,p_level => C_LEVEL_STATEMENT);
7525 END IF;
7526
7527 l_return := TRUE;
7528
7529 --
7530 -- Check if the condition of any JLT have seeded sources that are not assigned
7531 -- to the event class of the line definition
7532 --
7533 FOR l_err IN c_invalid_sources LOOP
7534 l_return := FALSE;
7535
7536 xla_amb_setup_err_pkg.stack_error
7537 (p_message_name => 'XLA_AB_MPA_LN_DES_CON_SRC'
7538 ,p_message_type => 'E'
7539 ,p_message_category => 'MPA_LINE_DESC'
7540 ,p_category_sequence => 19
7541 ,p_application_id => p_application_id
7542 ,p_amb_context_code => p_amb_context_code
7543 ,p_line_definition_owner_code => p_line_definition_owner_code
7544 ,p_line_definition_code => p_line_definition_code
7545 ,p_event_class_code => p_event_class_code
7546 ,p_event_type_code => p_event_type_code
7547 ,p_description_type_code => l_err.description_type_code
7548 ,p_description_code => l_err.description_code
7549 ,p_source_type_code => l_err.source_type_code
7550 ,p_source_code => l_err.source_code);
7551 END LOOP;
7552
7553 FOR l_err IN c_der_sources LOOP
7554 IF xla_sources_pkg.derived_source_is_invalid
7555 (p_application_id => p_application_id
7556 ,p_derived_source_code => l_err.source_code
7557 ,p_derived_source_type_code => 'D'
7558 ,p_event_class_code => p_event_class_code
7559 ,p_level => 'L') = 'TRUE' THEN
7560
7561 l_return := FALSE;
7562
7563 xla_amb_setup_err_pkg.stack_error
7564 (p_message_name => 'XLA_AB_MPA_LN_DES_CON_SRC'
7565 ,p_message_type => 'E'
7566 ,p_message_category => 'MPA_LINE_DESC'
7567 ,p_category_sequence => 19
7568 ,p_application_id => p_application_id
7569 ,p_amb_context_code => p_amb_context_code
7570 ,p_line_definition_owner_code => p_line_definition_owner_code
7571 ,p_line_definition_code => p_line_definition_code
7572 ,p_event_class_code => p_event_class_code
7573 ,p_event_type_code => p_event_type_code
7574 ,p_description_type_code => l_err.description_type_code
7575 ,p_description_code => l_err.description_code
7576 ,p_source_type_code => l_err.source_type_code
7577 ,p_source_code => l_err.source_code);
7578
7579 END IF;
7580 END LOOP;
7581
7582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7583 trace(p_msg => 'END of procedure chk_mpa_line_desc_inv_src_cond'
7584 ,p_module => l_log_module
7585 ,p_level => C_LEVEL_PROCEDURE);
7586 END IF;
7587
7588 RETURN l_return;
7589
7590 EXCEPTION
7591 WHEN xla_exceptions_pkg.application_exception THEN
7592 IF (c_invalid_sources%ISOPEN) THEN
7593 CLOSE c_invalid_sources;
7594 END IF;
7595 IF (c_der_sources%ISOPEN) THEN
7596 CLOSE c_der_sources;
7597 END IF;
7598 RAISE;
7599
7600 WHEN OTHERS THEN
7601 IF (c_invalid_sources%ISOPEN) THEN
7602 CLOSE c_invalid_sources;
7603 END IF;
7604 IF (c_der_sources%ISOPEN) THEN
7605 CLOSE c_der_sources;
7606 END IF;
7607 xla_exceptions_pkg.raise_message
7608 (p_location => 'xla_line_definitions_pvt.chk_mpa_line_desc_inv_src_cond');
7609
7610 END chk_mpa_line_desc_inv_src_cond;
7611
7612 --=============================================================================
7613 --
7614 -- Name: chk_mpa_line_desc_inv_src_dtl
7615 -- Description: Check if all sources used in the JLT condition is valid
7616 --
7617 --=============================================================================
7618 FUNCTION chk_mpa_line_desc_inv_src_dtl
7619 (p_application_id IN NUMBER
7620 ,p_amb_context_code IN VARCHAR2
7621 ,p_event_class_code IN VARCHAR2
7622 ,p_event_type_code IN VARCHAR2
7623 ,p_line_definition_owner_code IN VARCHAR2
7624 ,p_line_definition_code IN VARCHAR2)
7625 RETURN BOOLEAN
7626 IS
7627 --
7628 -- Get all JLT that have sources that do not belong to the event class of the
7629 -- line definition
7630 --
7631 CURSOR c_invalid_sources IS
7632 SELECT distinct xjl.description_type_code, xjl.description_code,
7633 xdd.source_type_code, xdd.source_code
7634 FROM xla_descript_details_b xdd
7635 ,xla_desc_priorities xdp
7636 ,xla_line_defn_jlt_assgns xjl
7637 ,xla_mpa_jlt_assgns mjl
7638 WHERE xdd.description_prio_id = xdp.description_prio_id
7639 AND xdp.application_id = mjl.application_id
7640 AND xdp.amb_context_code = mjl.amb_context_code
7641 AND xdp.description_type_code = mjl.description_type_code
7642 AND xdp.description_code = mjl.description_code
7643 AND xjl.application_id = p_application_id
7644 AND xjl.amb_context_code = p_amb_context_code
7645 AND xjl.event_class_code = p_event_class_code
7646 AND xjl.event_type_code = p_event_type_code
7647 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7648 AND xjl.line_definition_code = p_line_definition_code
7649 AND xjl.active_flag = 'Y'
7650 AND xdd.source_type_code = 'S'
7651 AND xjl.application_id = mjl.application_id
7652 AND xjl.amb_context_code = mjl.amb_context_code
7653 AND xjl.event_class_code = mjl.event_class_code
7654 AND xjl.event_type_code = mjl.event_type_code
7655 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7656 AND xjl.line_definition_code = mjl.line_definition_code
7657 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7658 AND xjl.accounting_line_code = mjl.accounting_line_code
7659 AND mjl.description_code IS NOT NULL
7660 AND NOT EXISTS
7661 (SELECT 'y'
7662 FROM xla_event_sources xes
7663 WHERE xes.source_application_id = xdd.source_application_id
7664 AND xes.source_type_code = xdd.source_type_code
7665 AND xes.source_code = xdd.source_code
7666 AND xes.application_id = mjl.application_id
7667 AND xes.event_class_code = mjl.event_class_code
7668 AND xes.active_flag = 'Y');
7669
7670 CURSOR c_der_sources IS
7671 SELECT distinct xjl.description_type_code, xjl.description_code,
7672 xdd.source_type_code, xdd.source_code
7673 FROM xla_descript_details_b xdd
7674 ,xla_desc_priorities xdp
7675 ,xla_line_defn_jlt_assgns xjl
7676 ,xla_mpa_jlt_assgns mjl
7677 WHERE xdd.description_prio_id = xdp.description_prio_id
7678 AND xdp.application_id = mjl.application_id
7679 AND xdp.amb_context_code = mjl.amb_context_code
7680 AND xdp.description_type_code = mjl.description_type_code
7681 AND xdp.description_code = mjl.description_code
7682 AND xjl.application_id = p_application_id
7683 AND xjl.amb_context_code = p_amb_context_code
7684 AND xjl.event_class_code = p_event_class_code
7685 AND xjl.event_type_code = p_event_type_code
7686 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7687 AND xjl.line_definition_code = p_line_definition_code
7688 AND xjl.active_flag = 'Y'
7689 AND xdd.source_type_code = 'D'
7690 AND xjl.application_id = mjl.application_id
7691 AND xjl.amb_context_code = mjl.amb_context_code
7692 AND xjl.event_class_code = mjl.event_class_code
7693 AND xjl.event_type_code = mjl.event_type_code
7694 AND xjl.line_definition_owner_code = mjl.line_definition_owner_code
7695 AND xjl.line_definition_code = mjl.line_definition_code
7696 AND xjl.accounting_line_type_code = mjl.accounting_line_type_code
7697 AND xjl.accounting_line_code = mjl.accounting_line_code
7698 AND mjl.description_code IS NOT NULL;
7699
7700 l_return BOOLEAN;
7701 l_log_module VARCHAR2(240);
7702 BEGIN
7703 IF g_log_enabled THEN
7704 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_line_desc_inv_src_dtl';
7705 END IF;
7706
7707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7708 trace(p_msg => 'BEGIN of procedure chk_mpa_line_desc_inv_src_dtl'
7709 ,p_module => l_log_module
7710 ,p_level => C_LEVEL_PROCEDURE);
7711 END IF;
7712
7713 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7714 trace(p_msg => 'application_id = '||p_application_id||
7715 ',amb_context_code = '||p_amb_context_code||
7716 ',event_class_code = '||p_event_class_code||
7717 ',event_type_code = '||p_event_type_code||
7718 ',line_definition_owner_code = '||p_line_definition_owner_code||
7719 ',line_definition_code = '||p_line_definition_code
7720 ,p_module => l_log_module
7721 ,p_level => C_LEVEL_STATEMENT);
7722 END IF;
7723
7724 l_return := TRUE;
7725
7726 --
7727 -- Check if the condition of any JLT have seeded sources that are not assigned
7728 -- to the event class of the line definition
7729 --
7730 FOR l_err IN c_invalid_sources LOOP
7731 l_return := FALSE;
7732
7733 xla_amb_setup_err_pkg.stack_error
7734 (p_message_name => 'XLA_AB_MPA_LN_DES_DET_SRC'
7735 ,p_message_type => 'E'
7736 ,p_message_category => 'MPA_LINE_DESC'
7737 ,p_category_sequence => 19
7738 ,p_application_id => p_application_id
7739 ,p_amb_context_code => p_amb_context_code
7740 ,p_line_definition_owner_code => p_line_definition_owner_code
7741 ,p_line_definition_code => p_line_definition_code
7742 ,p_event_class_code => p_event_class_code
7743 ,p_event_type_code => p_event_type_code
7744 ,p_description_type_code => l_err.description_type_code
7745 ,p_description_code => l_err.description_code
7746 ,p_source_type_code => l_err.source_type_code
7747 ,p_source_code => l_err.source_code);
7748 END LOOP;
7749
7750 FOR l_err IN c_der_sources LOOP
7751 IF xla_sources_pkg.derived_source_is_invalid
7752 (p_application_id => p_application_id
7753 ,p_derived_source_code => l_err.source_code
7754 ,p_derived_source_type_code => 'D'
7755 ,p_event_class_code => p_event_class_code
7756 ,p_level => 'L') = 'TRUE' THEN
7757
7758 l_return := FALSE;
7759
7760 xla_amb_setup_err_pkg.stack_error
7761 (p_message_name => 'XLA_AB_MPA_LN_DES_DET_SRC'
7762 ,p_message_type => 'E'
7763 ,p_message_category => 'MPA_LINE_DESC'
7764 ,p_category_sequence => 19
7765 ,p_application_id => p_application_id
7766 ,p_amb_context_code => p_amb_context_code
7767 ,p_line_definition_owner_code => p_line_definition_owner_code
7768 ,p_line_definition_code => p_line_definition_code
7769 ,p_event_class_code => p_event_class_code
7770 ,p_event_type_code => p_event_type_code
7771 ,p_description_type_code => l_err.description_type_code
7772 ,p_description_code => l_err.description_code
7773 ,p_source_type_code => l_err.source_type_code
7774 ,p_source_code => l_err.source_code);
7775 END IF;
7776 END LOOP;
7777
7778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7779 trace(p_msg => 'END of procedure chk_mpa_line_desc_inv_src_dtl'
7780 ,p_module => l_log_module
7781 ,p_level => C_LEVEL_PROCEDURE);
7782 END IF;
7783
7784 RETURN l_return;
7785
7786 EXCEPTION
7787 WHEN xla_exceptions_pkg.application_exception THEN
7788 IF (c_invalid_sources%ISOPEN) THEN
7789 CLOSE c_invalid_sources;
7790 END IF;
7791 IF (c_der_sources%ISOPEN) THEN
7792 CLOSE c_der_sources;
7793 END IF;
7794 RAISE;
7795
7796 WHEN OTHERS THEN
7797 IF (c_invalid_sources%ISOPEN) THEN
7798 CLOSE c_invalid_sources;
7799 END IF;
7800 IF (c_der_sources%ISOPEN) THEN
7801 CLOSE c_der_sources;
7802 END IF;
7803 xla_exceptions_pkg.raise_message
7804 (p_location => 'xla_line_definitions_pvt.chk_mpa_line_desc_inv_src_dtl');
7805
7806 END chk_mpa_line_desc_inv_src_dtl;
7807
7808 --=============================================================================
7809 --
7810 -- Name: validate_mpa_line_desc
7811 -- Description: Validate MPA line desc assignment of the line definition
7812 --
7813 --=============================================================================
7814 FUNCTION validate_mpa_line_desc
7815 (p_application_id IN NUMBER
7816 ,p_amb_context_code IN VARCHAR2
7817 ,p_event_class_code IN VARCHAR2
7818 ,p_event_type_code IN VARCHAR2
7819 ,p_line_definition_owner_code IN VARCHAR2
7820 ,p_line_definition_code IN VARCHAR2)
7821 RETURN BOOLEAN
7822 IS
7823 l_return BOOLEAN;
7824 l_log_module VARCHAR2(240);
7825 BEGIN
7826 IF g_log_enabled THEN
7827 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_line_desc';
7828 END IF;
7829
7830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7831 trace(p_msg => 'BEGIN of procedure validate_mpa_line_desc'
7832 ,p_module => l_log_module
7833 ,p_level => C_LEVEL_PROCEDURE);
7834 END IF;
7835
7836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7837 trace(p_msg => 'application_id = '||p_application_id||
7838 ',amb_context_code = '||p_amb_context_code||
7839 ',event_class_code = '||p_event_class_code||
7840 ',event_type_code = '||p_event_type_code||
7841 ',line_definition_owner_code = '||p_line_definition_owner_code||
7842 ',line_definition_code = '||p_line_definition_code
7843 ,p_module => l_log_module
7844 ,p_level => C_LEVEL_STATEMENT);
7845 END IF;
7846
7847 l_return := TRUE;
7848
7849 l_return := chk_mpa_line_desc_is_enabled
7850 (p_application_id => p_application_id
7851 ,p_amb_context_code => p_amb_context_code
7852 ,p_event_class_code => p_event_class_code
7853 ,p_event_type_code => p_event_type_code
7854 ,p_line_definition_owner_code => p_line_definition_owner_code
7855 ,p_line_definition_code => p_line_definition_code)
7856 AND l_return;
7857
7858 l_return := chk_mpa_line_desc_inv_src_cond
7859 (p_application_id => p_application_id
7860 ,p_amb_context_code => p_amb_context_code
7861 ,p_event_class_code => p_event_class_code
7862 ,p_event_type_code => p_event_type_code
7863 ,p_line_definition_owner_code => p_line_definition_owner_code
7864 ,p_line_definition_code => p_line_definition_code)
7865 AND l_return;
7866
7867 l_return := chk_mpa_line_desc_inv_src_dtl
7868 (p_application_id => p_application_id
7869 ,p_amb_context_code => p_amb_context_code
7870 ,p_event_class_code => p_event_class_code
7871 ,p_event_type_code => p_event_type_code
7872 ,p_line_definition_owner_code => p_line_definition_owner_code
7873 ,p_line_definition_code => p_line_definition_code)
7874 AND l_return;
7875
7876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7877 trace(p_msg => 'END of procedure validate_mpa_line_desc'
7878 ,p_module => l_log_module
7879 ,p_level => C_LEVEL_PROCEDURE);
7880 END IF;
7881
7882 RETURN l_return;
7883
7884 EXCEPTION
7885 WHEN xla_exceptions_pkg.application_exception THEN
7886 RAISE;
7887 WHEN OTHERS THEN
7888 xla_exceptions_pkg.raise_message
7889 (p_location => 'xla_line_definitions_pvt.validate_mpa_line_desc');
7890 END validate_mpa_line_desc;
7891
7892
7893 --=============================================================================
7894 --
7895 -- Name: chk_mpa_line_ac_is_enabled
7896 -- Description: Check if all line analytical criteria of the line definition
7897 -- are enabled
7898 --
7899 --=============================================================================
7900 FUNCTION chk_mpa_line_ac_is_enabled
7901 (p_application_id IN NUMBER
7902 ,p_amb_context_code IN VARCHAR2
7903 ,p_event_class_code IN VARCHAR2
7904 ,p_event_type_code IN VARCHAR2
7905 ,p_line_definition_owner_code IN VARCHAR2
7906 ,p_line_definition_code IN VARCHAR2)
7907 RETURN BOOLEAN
7908 IS
7909 CURSOR c_invalid_line_ac IS
7910 SELECT distinct xah.analytical_criterion_type_code, xah.analytical_criterion_code
7911 FROM xla_mpa_jlt_ac_assgns xac
7912 ,xla_line_defn_jlt_assgns xjl
7913 ,xla_analytical_hdrs_b xah
7914 WHERE xah.amb_context_code = xac.amb_context_code
7915 AND xah.analytical_criterion_code = xac.analytical_criterion_code
7916 AND xah.analytical_criterion_type_code = xac.analytical_criterion_type_code
7917 AND xah.enabled_flag <> 'Y'
7918 AND xac.application_id = xjl.application_id
7919 AND xac.amb_context_code = xjl.amb_context_code
7920 AND xac.event_class_code = xjl.event_class_code
7921 AND xac.event_type_code = xjl.event_type_code
7922 AND xac.line_definition_code = xjl.line_definition_code
7923 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
7924 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
7925 AND xac.accounting_line_code = xjl.accounting_line_code
7926 AND xjl.application_id = p_application_id
7927 AND xjl.amb_context_code = p_amb_context_code
7928 AND xjl.event_class_code = p_event_class_code
7929 AND xjl.event_type_code = p_event_type_code
7930 AND xjl.line_definition_owner_code = p_line_definition_owner_code
7931 AND xjl.line_definition_code = p_line_definition_code
7932 AND xjl.active_flag = 'Y';
7933
7934 l_return BOOLEAN;
7935 l_log_module VARCHAR2(240);
7936 BEGIN
7937 IF g_log_enabled THEN
7938 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_line_ac_is_enabled';
7939 END IF;
7940
7941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7942 trace(p_msg => 'BEGIN of procedure chk_mpa_line_ac_is_enabled'
7943 ,p_module => l_log_module
7944 ,p_level => C_LEVEL_PROCEDURE);
7945 END IF;
7946
7947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7948 trace(p_msg => 'application_id = '||p_application_id||
7949 ',amb_context_code = '||p_amb_context_code||
7950 ',event_class_code = '||p_event_class_code||
7951 ',event_type_code = '||p_event_type_code||
7952 ',line_definition_owner_code = '||p_line_definition_owner_code||
7953 ',line_definition_code = '||p_line_definition_code
7954 ,p_module => l_log_module
7955 ,p_level => C_LEVEL_STATEMENT);
7956 END IF;
7957
7958 l_return := TRUE;
7959
7960 FOR l_err IN c_invalid_line_ac LOOP
7961 l_return := FALSE;
7962
7963 xla_amb_setup_err_pkg.stack_error
7964 (p_message_name => 'XLA_AB_MPA_DISABLD_LN_AC'
7965 ,p_message_type => 'E'
7966 ,p_message_category => 'MPA_LINE_AC'
7967 ,p_category_sequence => 20
7968 ,p_application_id => p_application_id
7969 ,p_amb_context_code => p_amb_context_code
7970 ,p_event_class_code => p_event_class_code
7971 ,p_event_type_code => p_event_type_code
7972 ,p_line_definition_owner_code => p_line_definition_owner_code
7973 ,p_line_definition_code => p_line_definition_code
7974 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
7975 ,p_anal_criterion_code => l_err.analytical_criterion_code);
7976 END LOOP;
7977
7978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7979 trace(p_msg => 'END of procedure chk_mpa_line_ac_is_enabled'
7980 ,p_module => l_log_module
7981 ,p_level => C_LEVEL_PROCEDURE);
7982 END IF;
7983
7984 RETURN l_return;
7985
7986 EXCEPTION
7987 WHEN xla_exceptions_pkg.application_exception THEN
7988 IF (c_invalid_line_ac%ISOPEN) THEN
7989 CLOSE c_invalid_line_ac;
7990 END IF;
7991 RAISE;
7992
7993 WHEN OTHERS THEN
7994 IF (c_invalid_line_ac%ISOPEN) THEN
7995 CLOSE c_invalid_line_ac;
7996 END IF;
7997 xla_exceptions_pkg.raise_message
7998 (p_location => 'xla_line_definitions_pvt.chk_mpa_line_ac_is_enabled');
7999
8000 END chk_mpa_line_ac_is_enabled;
8001
8002 --=============================================================================
8003 --
8004 -- Name: chk_mpa_ac_has_details
8005 -- Description:
8006 --
8007 --=============================================================================
8008 FUNCTION chk_mpa_ac_has_details
8009 (p_application_id IN NUMBER
8010 ,p_amb_context_code IN VARCHAR2
8011 ,p_event_class_code IN VARCHAR2
8012 ,p_event_type_code IN VARCHAR2
8013 ,p_line_definition_owner_code IN VARCHAR2
8014 ,p_line_definition_code IN VARCHAR2)
8015 RETURN BOOLEAN
8016 IS
8017 CURSOR c_invalid_ac IS
8018 SELECT distinct xac.analytical_criterion_type_code, xac.analytical_criterion_code
8019 FROM xla_mpa_jlt_ac_assgns xac
8020 ,xla_line_defn_jlt_assgns xjl
8021 WHERE xac.application_id = xjl.application_id
8022 AND xac.amb_context_code = xjl.amb_context_code
8023 AND xac.event_class_code = xjl.event_class_code
8024 AND xac.event_type_code = xjl.event_type_code
8025 AND xac.line_definition_code = xjl.line_definition_code
8026 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
8027 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
8028 AND xac.accounting_line_code = xjl.accounting_line_code
8029 AND xjl.application_id = p_application_id
8030 AND xjl.amb_context_code = p_amb_context_code
8031 AND xjl.event_class_code = p_event_class_code
8032 AND xjl.event_type_code = p_event_type_code
8033 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8034 AND xjl.line_definition_code = p_line_definition_code
8035 AND xjl.active_flag = 'Y'
8036 AND NOT EXISTS
8037 (SELECT 'x'
8038 FROM xla_analytical_sources xas
8039 WHERE xas.application_id = xac.application_id
8040 AND xas.amb_context_code = xac.amb_context_code
8041 AND xas.event_class_code = xac.event_class_code
8042 AND xas.analytical_criterion_code = xac.analytical_criterion_code
8043 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code);
8044
8045 l_return BOOLEAN;
8046 l_log_module VARCHAR2(240);
8047 BEGIN
8048 IF g_log_enabled THEN
8049 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_ac_has_details';
8050 END IF;
8051
8052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8053 trace(p_msg => 'BEGIN of procedure chk_mpa_ac_has_details'
8054 ,p_module => l_log_module
8055 ,p_level => C_LEVEL_PROCEDURE);
8056 END IF;
8057
8058 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8059 trace(p_msg => 'application_id = '||p_application_id||
8060 ',amb_context_code = '||p_amb_context_code||
8061 ',event_class_code = '||p_event_class_code||
8062 ',event_type_code = '||p_event_type_code||
8063 ',line_definition_owner_code = '||p_line_definition_owner_code||
8064 ',line_definition_code = '||p_line_definition_code
8065 ,p_module => l_log_module
8066 ,p_level => C_LEVEL_STATEMENT);
8067 END IF;
8068
8069 l_return := TRUE;
8070
8071 FOR l_err IN c_invalid_ac LOOP
8072 l_return := FALSE;
8073
8074 xla_amb_setup_err_pkg.stack_error
8075 (p_message_name => 'XLA_AB_MPA_LN_ANC_NO_DETAIL'
8076 ,p_message_type => 'E'
8077 ,p_message_category => 'MPA_LINE_AC'
8078 ,p_category_sequence => 20
8079 ,p_application_id => p_application_id
8080 ,p_amb_context_code => p_amb_context_code
8081 ,p_event_class_code => p_event_class_code
8082 ,p_event_type_code => p_event_type_code
8083 ,p_line_definition_owner_code => p_line_definition_owner_code
8084 ,p_line_definition_code => p_line_definition_code
8085 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
8086 ,p_anal_criterion_code => l_err.analytical_criterion_code);
8087 END LOOP;
8088
8089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8090 trace(p_msg => 'END of procedure chk_mpa_ac_has_details'
8091 ,p_module => l_log_module
8092 ,p_level => C_LEVEL_PROCEDURE);
8093 END IF;
8094
8095 RETURN l_return;
8096
8097 EXCEPTION
8098 WHEN xla_exceptions_pkg.application_exception THEN
8099 IF (c_invalid_ac%ISOPEN) THEN
8100 CLOSE c_invalid_ac;
8101 END IF;
8102 RAISE;
8103
8104 WHEN OTHERS THEN
8105 IF (c_invalid_ac%ISOPEN) THEN
8106 CLOSE c_invalid_ac;
8107 END IF;
8108 xla_exceptions_pkg.raise_message
8109 (p_location => 'xla_line_definitions_pvt.chk_mpa_ac_has_details');
8110
8111 END chk_mpa_ac_has_details;
8112
8113 --=============================================================================
8114 --
8115 -- Name: chk_mpa_ac_invalid_sources
8116 -- Description:
8117 --
8118 --=============================================================================
8119 FUNCTION chk_mpa_ac_invalid_sources
8120 (p_application_id IN NUMBER
8121 ,p_amb_context_code IN VARCHAR2
8122 ,p_event_class_code IN VARCHAR2
8123 ,p_event_type_code IN VARCHAR2
8124 ,p_line_definition_owner_code IN VARCHAR2
8125 ,p_line_definition_code IN VARCHAR2)
8126 RETURN BOOLEAN
8127 IS
8128 CURSOR c_invalid_sources IS
8129 SELECT distinct xas.analytical_criterion_type_code, xas.analytical_criterion_code,
8130 xas.source_code, xas.source_type_code
8131 FROM xla_analytical_sources xas
8132 ,xla_mpa_jlt_ac_assgns xac
8133 ,xla_line_defn_jlt_assgns xjl
8134 ,xla_event_sources xes
8135 WHERE xas.application_id = xac.application_id
8136 AND xas.amb_context_code = xac.amb_context_code
8137 AND xas.event_class_code = xac.event_class_code
8138 AND xas.analytical_criterion_code = xac.analytical_criterion_code
8139 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code
8140 AND xas.source_type_code = 'S'
8141 AND xac.application_id = xjl.application_id
8142 AND xac.amb_context_code = xjl.amb_context_code
8143 AND xac.event_class_code = xjl.event_class_code
8144 AND xac.event_type_code = xjl.event_type_code
8145 AND xac.line_definition_code = xjl.line_definition_code
8146 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
8147 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
8148 AND xac.accounting_line_code = xjl.accounting_line_code
8149 AND xjl.application_id = p_application_id
8150 AND xjl.amb_context_code = p_amb_context_code
8151 AND xjl.event_class_code = p_event_class_code
8152 AND xjl.event_type_code = p_event_type_code
8153 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8154 AND xjl.line_definition_code = p_line_definition_code
8155 AND xjl.active_flag = 'Y'
8156 AND not exists (SELECT 'y'
8157 FROM xla_event_sources xes
8158 WHERE xes.source_application_id = xas.source_application_id
8159 AND xes.source_type_code = xas.source_type_code
8160 AND xes.source_code = xas.source_code
8161 AND xes.application_id = xas.application_id
8162 AND xes.event_class_code = xas.event_class_code
8163 AND xes.active_flag = 'Y');
8164
8165 CURSOR c_der_sources IS
8166 SELECT distinct xas.analytical_criterion_type_code, xas.analytical_criterion_code,
8167 xas.source_code, xas.source_type_code
8168 FROM xla_analytical_sources xas
8169 ,xla_mpa_jlt_ac_assgns xac
8170 ,xla_line_defn_jlt_assgns xjl
8171 WHERE xas.application_id = xac.application_id
8172 AND xas.amb_context_code = xac.amb_context_code
8173 AND xas.event_class_code = xac.event_class_code
8174 AND xas.analytical_criterion_code = xac.analytical_criterion_code
8175 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code
8176 AND xas.source_type_code = 'D'
8177 AND xac.application_id = xjl.application_id
8178 AND xac.amb_context_code = xjl.amb_context_code
8179 AND xac.event_class_code = xjl.event_class_code
8180 AND xac.event_type_code = xjl.event_type_code
8181 AND xac.line_definition_code = xjl.line_definition_code
8182 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
8183 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
8184 AND xac.accounting_line_code = xjl.accounting_line_code
8185 AND xjl.application_id = p_application_id
8186 AND xjl.amb_context_code = p_amb_context_code
8187 AND xjl.event_class_code = p_event_class_code
8188 AND xjl.event_type_code = p_event_type_code
8189 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8190 AND xjl.line_definition_code = p_line_definition_code
8191 AND xjl.active_flag = 'Y';
8192
8193 l_return BOOLEAN;
8194 l_log_module VARCHAR2(240);
8195 BEGIN
8196 IF g_log_enabled THEN
8197 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_ac_invalid_sources';
8198 END IF;
8199
8200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8201 trace(p_msg => 'BEGIN of procedure chk_mpa_ac_invalid_sources'
8202 ,p_module => l_log_module
8203 ,p_level => C_LEVEL_PROCEDURE);
8204 END IF;
8205
8206 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8207 trace(p_msg => 'application_id = '||p_application_id||
8208 ',amb_context_code = '||p_amb_context_code||
8209 ',event_class_code = '||p_event_class_code||
8210 ',event_type_code = '||p_event_type_code||
8211 ',line_definition_owner_code = '||p_line_definition_owner_code||
8212 ',line_definition_code = '||p_line_definition_code
8213 ,p_module => l_log_module
8214 ,p_level => C_LEVEL_STATEMENT);
8215 END IF;
8216
8217 l_return := TRUE;
8218
8219 FOR l_err IN c_invalid_sources LOOP
8220
8221 l_return := FALSE;
8222 xla_amb_setup_err_pkg.stack_error
8223 (p_message_name => 'XLA_AB_MPA_LINE_ANC_UNASN_SRCE'
8224 ,p_message_type => 'E'
8225 ,p_message_category => 'MPA_LINE_AC'
8226 ,p_category_sequence => 20
8227 ,p_application_id => p_application_id
8228 ,p_amb_context_code => p_amb_context_code
8229 ,p_event_class_code => p_event_class_code
8230 ,p_event_type_code => p_event_type_code
8231 ,p_line_definition_owner_code => p_line_definition_owner_code
8232 ,p_line_definition_code => p_line_definition_code
8233 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
8234 ,p_anal_criterion_code => l_err.analytical_criterion_code
8235 ,p_source_code => l_err.source_code
8236 ,p_source_type_code => l_err.source_type_code);
8237 END LOOP;
8238
8239 FOR l_err IN c_der_sources LOOP
8240 IF xla_sources_pkg.derived_source_is_invalid
8241 (p_application_id => p_application_id
8242 ,p_derived_source_code => l_err.source_code
8243 ,p_derived_source_type_code => 'D'
8244 ,p_event_class_code => p_event_class_code
8245 ,p_level => 'L') = 'TRUE' THEN
8246
8247 l_return := FALSE;
8248 xla_amb_setup_err_pkg.stack_error
8249 (p_message_name => 'XLA_AB_MPA_LINE_ANC_UNASN_SRCE'
8250 ,p_message_type => 'E'
8251 ,p_message_category => 'MPA_LINE_AC'
8252 ,p_category_sequence => 20
8253 ,p_application_id => p_application_id
8254 ,p_amb_context_code => p_amb_context_code
8255 ,p_event_class_code => p_event_class_code
8256 ,p_event_type_code => p_event_type_code
8257 ,p_line_definition_owner_code => p_line_definition_owner_code
8258 ,p_line_definition_code => p_line_definition_code
8259 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
8260 ,p_anal_criterion_code => l_err.analytical_criterion_code
8261 ,p_source_code => l_err.source_code
8262 ,p_source_type_code => l_err.source_type_code);
8263 END IF;
8264 END LOOP;
8265
8266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8267 trace(p_msg => 'END of procedure chk_mpa_ac_invalid_sources'
8268 ,p_module => l_log_module
8269 ,p_level => C_LEVEL_PROCEDURE);
8270 END IF;
8271
8272 RETURN l_return;
8273
8274 EXCEPTION
8275 WHEN xla_exceptions_pkg.application_exception THEN
8276 IF (c_invalid_sources%ISOPEN) THEN
8277 CLOSE c_invalid_sources;
8278 END IF;
8279 IF (c_der_sources%ISOPEN) THEN
8280 CLOSE c_der_sources;
8281 END IF;
8282 RAISE;
8283
8284 WHEN OTHERS THEN
8285 IF (c_invalid_sources%ISOPEN) THEN
8286 CLOSE c_invalid_sources;
8287 END IF;
8288 IF (c_der_sources%ISOPEN) THEN
8289 CLOSE c_der_sources;
8290 END IF;
8291 xla_exceptions_pkg.raise_message
8292 (p_location => 'xla_line_definitions_pvt.chk_mpa_ac_invalid_sources');
8293 END chk_mpa_ac_invalid_sources;
8294
8295
8296
8297 --=============================================================================
8298 --
8299 -- Name: validate_mpa_line_ac
8300 -- Description: Validate MPA line AC assignment of the line definition
8301 --
8302 --=============================================================================
8303 FUNCTION validate_mpa_line_ac
8304 (p_application_id IN NUMBER
8305 ,p_amb_context_code IN VARCHAR2
8306 ,p_event_class_code IN VARCHAR2
8307 ,p_event_type_code IN VARCHAR2
8308 ,p_line_definition_owner_code IN VARCHAR2
8309 ,p_line_definition_code IN VARCHAR2)
8310 RETURN BOOLEAN
8311 IS
8312 l_return BOOLEAN;
8313 l_log_module VARCHAR2(240);
8314 BEGIN
8315 IF g_log_enabled THEN
8316 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_line_ac';
8317 END IF;
8318
8319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8320 trace(p_msg => 'BEGIN of procedure validate_mpa_line_ac'
8321 ,p_module => l_log_module
8322 ,p_level => C_LEVEL_PROCEDURE);
8323 END IF;
8324
8325 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8326 trace(p_msg => 'application_id = '||p_application_id||
8327 ',amb_context_code = '||p_amb_context_code||
8328 ',event_class_code = '||p_event_class_code||
8329 ',event_type_code = '||p_event_type_code||
8330 ',line_definition_owner_code = '||p_line_definition_owner_code||
8331 ',line_definition_code = '||p_line_definition_code
8332 ,p_module => l_log_module
8333 ,p_level => C_LEVEL_STATEMENT);
8334 END IF;
8335
8336 l_return := TRUE;
8337
8338 l_return := chk_mpa_line_ac_is_enabled
8339 (p_application_id => p_application_id
8340 ,p_amb_context_code => p_amb_context_code
8341 ,p_event_class_code => p_event_class_code
8342 ,p_event_type_code => p_event_type_code
8343 ,p_line_definition_owner_code => p_line_definition_owner_code
8344 ,p_line_definition_code => p_line_definition_code)
8345 AND l_return;
8346
8347 l_return := chk_mpa_ac_has_details
8348 (p_application_id => p_application_id
8349 ,p_amb_context_code => p_amb_context_code
8350 ,p_event_class_code => p_event_class_code
8351 ,p_event_type_code => p_event_type_code
8352 ,p_line_definition_owner_code => p_line_definition_owner_code
8353 ,p_line_definition_code => p_line_definition_code)
8354 AND l_return;
8355
8356 l_return := chk_mpa_ac_invalid_sources
8357 (p_application_id => p_application_id
8358 ,p_amb_context_code => p_amb_context_code
8359 ,p_event_class_code => p_event_class_code
8360 ,p_event_type_code => p_event_type_code
8361 ,p_line_definition_owner_code => p_line_definition_owner_code
8362 ,p_line_definition_code => p_line_definition_code)
8363 AND l_return;
8364
8365 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8366 trace(p_msg => 'END of procedure validate_mpa_line_ac'
8367 ,p_module => l_log_module
8368 ,p_level => C_LEVEL_PROCEDURE);
8369 END IF;
8370
8371 RETURN l_return;
8372
8373 EXCEPTION
8374 WHEN xla_exceptions_pkg.application_exception THEN
8375 RAISE;
8376 WHEN OTHERS THEN
8377 xla_exceptions_pkg.raise_message
8378 (p_location => 'xla_line_definitions_pvt.validate_mpa_line_ac');
8379 END validate_mpa_line_ac;
8380
8381
8382 --=============================================================================
8383 --=============================================================================
8384 --
8385 -- Name: chk_mpa_adr_assgn_complete
8386 -- Description: Validate if any JLT assignment that does not contain flexfield
8387 -- assignment and does not have complete segment assignments
8388 -- Return Value:
8389 -- TRUE - if all ADR assignments are valid
8390 -- FALSE - if any ADR assignment is invalid
8391 --
8392 --=============================================================================
8393 FUNCTION chk_mpa_adr_assgn_complete
8394 (p_application_id IN NUMBER
8395 ,p_amb_context_code IN VARCHAR2
8396 ,p_event_class_code IN VARCHAR2
8397 ,p_event_type_code IN VARCHAR2
8398 ,p_line_definition_owner_code IN VARCHAR2
8399 ,p_line_definition_code IN VARCHAR2)
8400 RETURN BOOLEAN
8401 IS
8402 CURSOR c_coa_id IS
8403 SELECT xld.accounting_coa_id
8404 FROM xla_line_definitions_b xld
8405 WHERE xld.application_id = p_application_id
8406 AND xld.amb_context_code = p_amb_context_code
8407 AND xld.event_class_code = p_event_class_code
8408 AND xld.event_type_code = p_event_type_code
8409 AND xld.line_definition_owner_code = p_line_definition_owner_code
8410 AND xld.line_definition_code = p_line_definition_code;
8411
8412 --
8413 -- Get line assignments that does not contain flexfield assignment
8414 --
8415 CURSOR c_invalid_adrs_no_coa IS
8416 SELECT distinct mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code
8417 FROM xla_line_defn_jlt_assgns xlj
8418 ,xla_acct_line_types_b jlt
8419 ,xla_acct_line_types_b jlt1
8420 ,xla_mpa_jlt_assgns mpa
8421 WHERE xlj.application_id = p_application_id
8422 AND xlj.amb_context_code = p_amb_context_code
8423 AND xlj.event_class_code = p_event_class_code
8424 AND xlj.event_type_code = p_event_type_code
8425 AND xlj.line_definition_owner_code = p_line_definition_owner_code
8426 AND xlj.line_definition_code = p_line_definition_code
8427 AND xlj.active_flag = 'Y'
8428 AND xlj.application_id = mpa.application_id
8429 AND xlj.amb_context_code = mpa.amb_context_code
8430 AND xlj.event_class_code = mpa.event_class_code
8431 AND xlj.event_type_code = mpa.event_type_code
8432 AND xlj.line_definition_owner_code = mpa.line_definition_owner_code
8433 AND xlj.line_definition_code = mpa.line_definition_code
8434 AND xlj.accounting_line_type_code = mpa.accounting_line_type_code
8435 AND xlj.accounting_line_code = mpa.accounting_line_code
8436 AND xlj.application_id = jlt1.application_id
8437 AND xlj.amb_context_code = jlt1.amb_context_code
8438 AND xlj.event_class_code = jlt1.event_class_code
8439 AND xlj.accounting_line_type_code = jlt1.accounting_line_type_code
8440 AND xlj.accounting_line_code = jlt1.accounting_line_code
8441 AND jlt1.mpa_option_code = 'ACCRUAL'
8442 AND mpa.application_id = jlt.application_id
8443 AND mpa.amb_context_code = jlt.amb_context_code
8444 AND mpa.event_class_code = jlt.event_class_code
8445 AND mpa.mpa_accounting_line_type_code = jlt.accounting_line_type_code
8446 AND mpa.mpa_accounting_line_code = jlt.accounting_line_code
8447 AND jlt.business_method_code <> 'PRIOR_ENTRY'
8448 AND NOT EXISTS
8449 (SELECT 'x'
8450 FROM xla_mpa_jlt_adr_assgns xad
8451 WHERE mpa.application_id = xad.application_id
8452 AND mpa.amb_context_code = xad.amb_context_code
8453 AND mpa.event_class_code = xad.event_class_code
8454 AND mpa.event_type_code = xad.event_type_code
8455 AND mpa.line_definition_owner_code = xad.line_definition_owner_code
8456 AND mpa.line_definition_code = xad.line_definition_code
8457 AND mpa.accounting_line_type_code = xad.accounting_line_type_code
8458 AND mpa.accounting_line_code = xad.accounting_line_code
8459 AND mpa.mpa_accounting_line_type_code = xad.mpa_accounting_line_type_code
8460 AND mpa.mpa_accounting_line_code = xad.mpa_accounting_line_code
8461 AND xad.flexfield_segment_code = 'ALL');
8462
8463 l_coa_id INTEGER;
8464
8465 --
8466 -- Get any line assignments that does not contain flexfield
8467 -- assignment or does not have complete segment assignments
8468 --
8469 CURSOR c_invalid_adrs IS
8470 SELECT distinct mpa.mpa_accounting_line_type_code, mpa.mpa_accounting_line_code
8471 FROM xla_line_defn_jlt_assgns xlj
8472 ,fnd_id_flex_segments_vl fif
8473 , xla_acct_line_types_b jlt
8474 ,xla_acct_line_types_b jlt1
8475 ,xla_mpa_jlt_assgns mpa
8476 WHERE fif.application_id = 101
8477 AND fif.id_flex_code = 'GL#'
8478 AND fif.id_flex_num = l_coa_id
8479 AND fif.enabled_flag = 'Y'
8480 AND xlj.application_id = p_application_id
8481 AND xlj.amb_context_code = p_amb_context_code
8482 AND xlj.event_class_code = p_event_class_code
8483 AND xlj.event_type_code = p_event_type_code
8484 AND xlj.line_definition_owner_code = p_line_definition_owner_code
8485 AND xlj.line_definition_code = p_line_definition_code
8486 AND xlj.active_flag = 'Y'
8487 AND xlj.application_id = jlt1.application_id
8488 AND xlj.amb_context_code = jlt1.amb_context_code
8489 AND xlj.event_class_code = jlt1.event_class_code
8490 AND xlj.accounting_line_type_code = jlt1.accounting_line_type_code
8491 AND xlj.accounting_line_code = jlt1.accounting_line_code
8492 AND jlt1.mpa_option_code = 'ACCRUAL'
8493 AND xlj.application_id = mpa.application_id
8494 AND xlj.amb_context_code = mpa.amb_context_code
8495 AND xlj.event_class_code = mpa.event_class_code
8496 AND xlj.event_type_code = mpa.event_type_code
8497 AND xlj.line_definition_owner_code = mpa.line_definition_owner_code
8498 AND xlj.line_definition_code = mpa.line_definition_code
8499 AND xlj.accounting_line_type_code = mpa.accounting_line_type_code
8500 AND xlj.accounting_line_code = mpa.accounting_line_code
8501 AND mpa.application_id = jlt.application_id
8502 AND mpa.amb_context_code = jlt.amb_context_code
8503 AND mpa.event_class_code = jlt.event_class_code
8504 AND mpa.mpa_accounting_line_type_code = jlt.accounting_line_type_code
8505 AND mpa.mpa_accounting_line_code = jlt.accounting_line_code
8506 AND jlt.business_method_code <> 'PRIOR_ENTRY'
8507 AND NOT EXISTS
8508 (SELECT 'Y'
8509 FROM xla_mpa_jlt_adr_assgns xad
8510 WHERE mpa.application_id = xad.application_id
8511 AND mpa.amb_context_code = xad.amb_context_code
8512 AND mpa.event_class_code = xad.event_class_code
8513 AND mpa.event_type_code = xad.event_type_code
8514 AND mpa.line_definition_owner_code = xad.line_definition_owner_code
8515 AND mpa.line_definition_code = xad.line_definition_code
8516 AND mpa.accounting_line_type_code = xad.accounting_line_type_code
8517 AND mpa.accounting_line_code = xad.accounting_line_code
8518 AND mpa.mpa_accounting_line_type_code = xad.mpa_accounting_line_type_code
8519 AND mpa.mpa_accounting_line_code = xad.mpa_accounting_line_code
8520 AND xad.flexfield_segment_code = fif.application_column_name
8521 )
8522 AND NOT EXISTS
8523 (SELECT 'Y'
8524 FROM xla_mpa_jlt_adr_assgns xad
8525 WHERE mpa.application_id = xad.application_id
8526 AND mpa.amb_context_code = xad.amb_context_code
8527 AND mpa.event_class_code = xad.event_class_code
8528 AND mpa.event_type_code = xad.event_type_code
8529 AND mpa.line_definition_owner_code = xad.line_definition_owner_code
8530 AND mpa.line_definition_code = xad.line_definition_code
8531 AND mpa.accounting_line_type_code = xad.accounting_line_type_code
8532 AND mpa.accounting_line_code = xad.accounting_line_code
8533 AND mpa.mpa_accounting_line_type_code = xad.mpa_accounting_line_type_code
8534 AND mpa.mpa_accounting_line_code = xad.mpa_accounting_line_code
8535 AND xad.flexfield_segment_code = 'ALL');
8536
8537 l_return BOOLEAN;
8538 l_log_module VARCHAR2(240);
8539 BEGIN
8540 IF g_log_enabled THEN
8541 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_adr_assgn_complete';
8542 END IF;
8543
8544 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8545 trace(p_msg => 'BEGIN of procedure chk_mpa_adr_assgn_complete'
8546 ,p_module => l_log_module
8547 ,p_level => C_LEVEL_PROCEDURE);
8548 END IF;
8549
8550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8551 trace(p_msg => 'application_id = '||p_application_id||
8552 ',amb_context_code = '||p_amb_context_code||
8553 ',event_class_code = '||p_event_class_code||
8554 ',event_type_code = '||p_event_type_code||
8555 ',line_definition_owner_code = '||p_line_definition_owner_code||
8556 ',line_definition_code = '||p_line_definition_code
8557 ,p_module => l_log_module
8558 ,p_level => C_LEVEL_STATEMENT);
8559 END IF;
8560
8561 l_return := TRUE;
8562
8563 OPEN c_coa_id;
8564 FETCH c_coa_id INTO l_coa_id;
8565 CLOSE c_coa_id;
8566
8567 IF (l_coa_id IS NULL) THEN
8568 --
8569 -- Check if all JLT assignments contain ADR assignments
8570 --
8571 FOR l_adr_assgns IN c_invalid_adrs_no_coa LOOP
8572 l_return := FALSE;
8573
8574 xla_amb_setup_err_pkg.stack_error
8575 (p_message_name => 'XLA_AB_MPA_INCOMPLETE_ACCT'
8576 ,p_message_type => 'E'
8577 ,p_message_category => 'MPA_LINE_TYPE'
8578 ,p_category_sequence => 18
8579 ,p_application_id => p_application_id
8580 ,p_amb_context_code => p_amb_context_code
8581 ,p_event_class_code => p_event_class_code
8582 ,p_event_type_code => p_event_type_code
8583 ,p_line_definition_owner_code => p_line_definition_owner_code
8584 ,p_line_definition_code => p_line_definition_code
8585 ,p_mpa_acct_line_type_code => l_adr_assgns.mpa_accounting_line_type_code
8586 ,p_mpa_acct_line_code => l_adr_assgns.mpa_accounting_line_code);
8587 END LOOP;
8588 ELSE
8589 FOR l_adr_assgns IN c_invalid_adrs LOOP
8590 l_return := FALSE;
8591
8592 xla_amb_setup_err_pkg.stack_error
8593 (p_message_name => 'XLA_AB_MPA_INCOMPLETE_ACCT'
8594 ,p_message_type => 'E'
8595 ,p_message_category => 'MPA_LINE_TYPE'
8596 ,p_category_sequence => 18
8597 ,p_application_id => p_application_id
8598 ,p_amb_context_code => p_amb_context_code
8599 ,p_event_class_code => p_event_class_code
8600 ,p_event_type_code => p_event_type_code
8601 ,p_line_definition_owner_code => p_line_definition_owner_code
8602 ,p_line_definition_code => p_line_definition_code
8603 ,p_mpa_acct_line_type_code => l_adr_assgns.mpa_accounting_line_type_code
8604 ,p_mpa_acct_line_code => l_adr_assgns.mpa_accounting_line_code);
8605 END LOOP;
8606 END IF;
8607
8608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8609 trace(p_msg => 'END of procedure chk_mpa_adr_assgn_complete'
8610 ,p_module => l_log_module
8611 ,p_level => C_LEVEL_PROCEDURE);
8612 END IF;
8613
8614 RETURN l_return;
8615
8616 EXCEPTION
8617 WHEN xla_exceptions_pkg.application_exception THEN
8618 IF c_invalid_adrs%ISOPEN THEN
8619 CLOSE c_invalid_adrs;
8620 END IF;
8621 RAISE;
8622 WHEN OTHERS THEN
8623 xla_exceptions_pkg.raise_message
8624 (p_location => 'xla_line_definitions_pvt.chk_mpa_adr_assgn_complete');
8625 END chk_mpa_adr_assgn_complete;
8626
8627 --=============================================================================
8628 --
8629 -- Name: chk_mpa_adr_is_enabled
8630 -- Description:
8631 --
8632 --=============================================================================
8633 FUNCTION chk_mpa_adr_is_enabled
8634 (p_application_id IN NUMBER
8635 ,p_amb_context_code IN VARCHAR2
8636 ,p_event_class_code IN VARCHAR2
8637 ,p_event_type_code IN VARCHAR2
8638 ,p_line_definition_owner_code IN VARCHAR2
8639 ,p_line_definition_code IN VARCHAR2)
8640 RETURN BOOLEAN
8641 IS
8642 CURSOR c_invalid_adrs IS
8643 SELECT distinct xsr.segment_rule_type_code, xsr.segment_rule_code
8644 FROM xla_line_defn_jlt_assgns xjl
8645 ,xla_mpa_jlt_adr_assgns xad
8646 ,xla_seg_rules_b xsr
8647 WHERE xsr.application_id = xad.application_id
8648 AND xsr.amb_context_code = xad.amb_context_code
8649 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
8650 AND xsr.segment_rule_code = xad.segment_rule_code
8651 AND xsr.enabled_flag <> 'Y'
8652 AND xad.application_id = xjl.application_id
8653 AND xad.amb_context_code = xjl.amb_context_code
8654 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
8655 AND xad.line_definition_code = xjl.line_definition_code
8656 AND xad.event_class_code = xjl.event_class_code
8657 AND xad.event_type_code = xjl.event_type_code
8658 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
8659 AND xad.accounting_line_code = xjl.accounting_line_code
8660 AND xad.segment_rule_code is not null
8661 AND xjl.application_id = p_application_id
8662 AND xjl.amb_context_code = p_amb_context_code
8663 AND xjl.event_class_code = p_event_class_code
8664 AND xjl.event_type_code = p_event_type_code
8665 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8666 AND xjl.line_definition_code = p_line_definition_code
8667 AND xjl.active_flag = 'Y'
8668 AND NOT EXISTS (SELECT 'x'
8669 FROM xla_line_defn_jlt_assgns xld1
8670 WHERE xld1.application_id = xad.application_id
8671 AND xld1.amb_context_code = xad.amb_context_code
8672 AND xld1.event_class_code = xad.event_class_code
8673 AND xld1.event_type_code = xad.event_type_code
8674 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
8675 AND xld1.line_definition_code = xad.line_definition_code
8676 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
8677 AND xld1.accounting_line_code = xad.mpa_accounting_line_code) ;
8678
8679
8680 CURSOR c_adr IS
8681 SELECT distinct xsr.application_id, xsr.amb_context_code,
8682 xsr.segment_rule_type_code, xsr.segment_rule_code
8683 FROM xla_line_defn_jlt_assgns xjl
8684 ,xla_mpa_jlt_adr_assgns xad
8685 ,xla_seg_rules_b xsr
8686 WHERE xsr.application_id = xad.application_id
8687 AND xsr.amb_context_code = xad.amb_context_code
8688 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
8689 AND xsr.segment_rule_code = xad.segment_rule_code
8690 AND xad.application_id = xjl.application_id
8691 AND xad.amb_context_code = xjl.amb_context_code
8692 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
8693 AND xad.line_definition_code = xjl.line_definition_code
8694 AND xad.event_class_code = xjl.event_class_code
8695 AND xad.event_type_code = xjl.event_type_code
8696 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
8697 AND xad.accounting_line_code = xjl.accounting_line_code
8698 AND xad.segment_rule_code is not null
8699 AND xjl.application_id = p_application_id
8700 AND xjl.amb_context_code = p_amb_context_code
8701 AND xjl.event_class_code = p_event_class_code
8702 AND xjl.event_type_code = p_event_type_code
8703 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8704 AND xjl.line_definition_code = p_line_definition_code
8705 AND xjl.active_flag = 'Y'
8706 AND NOT EXISTS (SELECT 'x'
8707 FROM xla_line_defn_jlt_assgns xld1
8708 WHERE xld1.application_id = xad.application_id
8709 AND xld1.amb_context_code = xad.amb_context_code
8710 AND xld1.event_class_code = xad.event_class_code
8711 AND xld1.event_type_code = xad.event_type_code
8712 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
8713 AND xld1.line_definition_code = xad.line_definition_code
8714 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
8715 AND xld1.accounting_line_code = xad.mpa_accounting_line_code) ;
8716
8717 l_adr c_adr%rowtype;
8718
8719 CURSOR c_invalid_child_adr IS
8720 SELECT xsd.value_segment_rule_type_code, xsd.value_segment_rule_code
8721 FROM xla_seg_rule_details xsd
8722 ,xla_seg_rules_b xsr
8723 WHERE xsd.application_id = l_adr.application_id
8724 AND xsd.amb_context_code = l_adr.amb_context_code
8725 AND xsd.segment_rule_type_code = l_adr.segment_rule_type_code
8726 AND xsd.segment_rule_code = l_adr.segment_rule_code
8727 AND xsd.value_type_code = 'A'
8728 AND xsd.value_segment_rule_appl_id = xsr.application_id
8729 AND xsd.value_segment_rule_type_code = xsr.segment_rule_type_code
8730 AND xsd.value_segment_rule_code = xsr.segment_rule_code
8731 AND xsd.amb_context_code = xsr.amb_context_code
8732 AND xsr.enabled_flag <> 'Y';
8733
8734 l_return BOOLEAN;
8735 l_log_module VARCHAR2(240);
8736 BEGIN
8737 IF g_log_enabled THEN
8738 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_adr_is_enabled';
8739 END IF;
8740
8741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8742 trace(p_msg => 'BEGIN of procedure chk_mpa_adr_is_enabled'
8743 ,p_module => l_log_module
8744 ,p_level => C_LEVEL_PROCEDURE);
8745 END IF;
8746
8747 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8748 trace(p_msg => 'application_id = '||p_application_id||
8749 ',amb_context_code = '||p_amb_context_code||
8750 ',event_class_code = '||p_event_class_code||
8751 ',event_type_code = '||p_event_type_code||
8752 ',line_definition_owner_code = '||p_line_definition_owner_code||
8753 ',line_definition_code = '||p_line_definition_code
8754 ,p_module => l_log_module
8755 ,p_level => C_LEVEL_STATEMENT);
8756 END IF;
8757
8758 l_return := TRUE;
8759
8760 FOR l_err IN c_invalid_adrs LOOP
8761 l_return := FALSE;
8762
8763 xla_amb_setup_err_pkg.stack_error
8764 (p_message_name => 'XLA_AB_MPA_DISABLD_SEG_RULE'
8765 ,p_message_type => 'E'
8766 ,p_message_category => 'MPA_SEG_RULE'
8767 ,p_category_sequence => 21
8768 ,p_application_id => p_application_id
8769 ,p_amb_context_code => p_amb_context_code
8770 ,p_event_class_code => p_event_class_code
8771 ,p_event_type_code => p_event_type_code
8772 ,p_line_definition_owner_code => p_line_definition_owner_code
8773 ,p_line_definition_code => p_line_definition_code
8774 ,p_segment_rule_type_code => l_err.segment_rule_type_code
8775 ,p_segment_rule_code => l_err.segment_rule_code);
8776
8777 END LOOP;
8778
8779 OPEN c_adr;
8780 LOOP
8781 FETCH c_adr
8782 INTO l_adr;
8783 EXIT WHEN c_adr%notfound;
8784
8785 FOR l_child_adr IN c_invalid_child_adr LOOP
8786 l_return := FALSE;
8787
8788 xla_amb_setup_err_pkg.stack_error
8789 (p_message_name => 'XLA_AB_MPA_DISABLD_SEG_RULE'
8790 ,p_message_type => 'E'
8791 ,p_message_category => 'MPA_SEG_RULE'
8792 ,p_category_sequence => 21
8793 ,p_application_id => p_application_id
8794 ,p_amb_context_code => p_amb_context_code
8795 ,p_event_class_code => p_event_class_code
8796 ,p_event_type_code => p_event_type_code
8797 ,p_line_definition_owner_code => p_line_definition_owner_code
8798 ,p_line_definition_code => p_line_definition_code
8799 ,p_segment_rule_type_code => l_child_adr.value_segment_rule_type_code
8800 ,p_segment_rule_code => l_child_adr.value_segment_rule_code);
8801
8802 END LOOP;
8803 END LOOP;
8804 CLOSE c_adr;
8805
8806
8807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8808 trace(p_msg => 'END of procedure chk_mpa_adr_is_enabled'
8809 ,p_module => l_log_module
8810 ,p_level => C_LEVEL_PROCEDURE);
8811 END IF;
8812
8813 RETURN l_return;
8814
8815 EXCEPTION
8816 WHEN xla_exceptions_pkg.application_exception THEN
8817 IF c_invalid_adrs%ISOPEN THEN
8818 CLOSE c_invalid_adrs;
8819 END IF;
8820 RAISE;
8821
8822 WHEN OTHERS THEN
8823 IF c_invalid_adrs%ISOPEN THEN
8824 CLOSE c_invalid_adrs;
8825 END IF;
8826 xla_exceptions_pkg.raise_message
8827 (p_location => 'xla_line_definitions_pvt.chk_mpa_adr_is_enabled');
8828 END chk_mpa_adr_is_enabled;
8829
8830 --=============================================================================
8831 --
8832 -- Name: chk_mpa_adr_has_details
8833 -- Description:
8834 --
8835 --=============================================================================
8836 FUNCTION chk_mpa_adr_has_details
8837 (p_application_id IN NUMBER
8838 ,p_amb_context_code IN VARCHAR2
8839 ,p_event_class_code IN VARCHAR2
8840 ,p_event_type_code IN VARCHAR2
8841 ,p_line_definition_owner_code IN VARCHAR2
8842 ,p_line_definition_code IN VARCHAR2)
8843 RETURN BOOLEAN
8844 IS
8845 CURSOR c_invalid_adrs IS
8846 SELECT distinct xad.segment_rule_code, xad.segment_rule_type_code
8847 FROM xla_mpa_jlt_adr_assgns xad, xla_line_defn_jlt_assgns xjl
8848 WHERE xad.application_id = xjl.application_id
8849 AND xad.amb_context_code = xjl.amb_context_code
8850 AND xad.event_class_code = xjl.event_class_code
8851 AND xad.event_type_code = xjl.event_type_code
8852 AND xad.line_definition_code = xjl.line_definition_code
8853 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
8854 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
8855 AND xad.accounting_line_code = xjl.accounting_line_code
8856 AND xjl.application_id = p_application_id
8857 AND xjl.amb_context_code = p_amb_context_code
8858 AND xjl.event_class_code = p_event_class_code
8859 AND xjl.event_type_code = p_event_type_code
8860 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8861 AND xjl.line_definition_code = p_line_definition_code
8862 AND xjl.active_flag = 'Y'
8863 AND xad.segment_rule_code is not null
8864 AND NOT EXISTS (SELECT 'x'
8865 FROM xla_line_defn_jlt_assgns xld1
8866 WHERE xld1.application_id = xad.application_id
8867 AND xld1.amb_context_code = xad.amb_context_code
8868 AND xld1.event_class_code = xad.event_class_code
8869 AND xld1.event_type_code = xad.event_type_code
8870 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
8871 AND xld1.line_definition_code = xad.line_definition_code
8872 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
8873 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
8874 AND NOT EXISTS
8875 (SELECT 'x'
8876 FROM xla_seg_rule_details xsr
8877 WHERE xsr.application_id = NVL(xad.segment_rule_appl_id,xad.application_id)
8878 AND xsr.amb_context_code = xad.amb_context_code
8879 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
8880 AND xsr.segment_rule_code = xad.segment_rule_code);
8881
8882 CURSOR c_adr IS
8883 SELECT distinct xsr.application_id, xsr.amb_context_code,
8884 xsr.segment_rule_type_code, xsr.segment_rule_code
8885 FROM xla_line_defn_jlt_assgns xjl
8886 ,xla_mpa_jlt_adr_assgns xad
8887 ,xla_seg_rules_b xsr
8888 WHERE xsr.application_id = xad.application_id
8889 AND xsr.amb_context_code = xad.amb_context_code
8890 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
8891 AND xsr.segment_rule_code = xad.segment_rule_code
8892 AND xad.application_id = xjl.application_id
8893 AND xad.amb_context_code = xjl.amb_context_code
8894 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
8895 AND xad.line_definition_code = xjl.line_definition_code
8896 AND xad.event_class_code = xjl.event_class_code
8897 AND xad.event_type_code = xjl.event_type_code
8898 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
8899 AND xad.accounting_line_code = xjl.accounting_line_code
8900 AND xad.segment_rule_code is not null
8901 AND xjl.application_id = p_application_id
8902 AND xjl.amb_context_code = p_amb_context_code
8903 AND xjl.event_class_code = p_event_class_code
8904 AND xjl.event_type_code = p_event_type_code
8905 AND xjl.line_definition_owner_code = p_line_definition_owner_code
8906 AND xjl.line_definition_code = p_line_definition_code
8907 AND xjl.active_flag = 'Y'
8908 AND NOT EXISTS (SELECT 'x'
8909 FROM xla_line_defn_jlt_assgns xld1
8910 WHERE xld1.application_id = xad.application_id
8911 AND xld1.amb_context_code = xad.amb_context_code
8912 AND xld1.event_class_code = xad.event_class_code
8913 AND xld1.event_type_code = xad.event_type_code
8914 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
8915 AND xld1.line_definition_code = xad.line_definition_code
8916 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
8917 AND xld1.accounting_line_code = xad.mpa_accounting_line_code) ;
8918
8919 l_adr c_adr%rowtype;
8920
8921 CURSOR c_invalid_child_adr IS
8922 SELECT xsd.value_segment_rule_type_code, xsd.value_segment_rule_code
8923 FROM xla_seg_rule_details xsd
8924 WHERE xsd.application_id = l_adr.application_id
8925 AND xsd.amb_context_code = l_adr.amb_context_code
8926 AND xsd.segment_rule_type_code = l_adr.segment_rule_type_code
8927 AND xsd.segment_rule_code = l_adr.segment_rule_code
8928 AND xsd.value_type_code = 'A'
8929 AND not exists (SELECT 'x'
8930 FROM xla_seg_rule_details xcd
8931 WHERE xcd.application_id = xsd.value_segment_rule_appl_id
8932 AND xcd.amb_context_code = xsd.amb_context_code
8933 AND xcd.segment_rule_type_code = xsd.value_segment_rule_type_code
8934 AND xcd.segment_rule_code = xsd.value_segment_rule_code);
8935
8936 l_return BOOLEAN;
8937 l_log_module VARCHAR2(240);
8938 BEGIN
8939 IF g_log_enabled THEN
8940 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_adr_has_details';
8941 END IF;
8942
8943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8944 trace(p_msg => 'BEGIN of procedure chk_mpa_adr_has_details'
8945 ,p_module => l_log_module
8946 ,p_level => C_LEVEL_PROCEDURE);
8947 END IF;
8948
8949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8950 trace(p_msg => 'application_id = '||p_application_id||
8951 ',amb_context_code = '||p_amb_context_code||
8952 ',event_class_code = '||p_event_class_code||
8953 ',event_type_code = '||p_event_type_code||
8954 ',line_definition_owner_code = '||p_line_definition_owner_code||
8955 ',line_definition_code = '||p_line_definition_code
8956 ,p_module => l_log_module
8957 ,p_level => C_LEVEL_STATEMENT);
8958 END IF;
8959
8960 l_return := TRUE;
8961
8962 FOR l_err IN c_invalid_adrs LOOP
8963 l_return := FALSE;
8964
8965 xla_amb_setup_err_pkg.stack_error
8966 (p_message_name => 'XLA_AB_MPA_SR_NO_DETAIL'
8967 ,p_message_type => 'E'
8968 ,p_message_category => 'MPA_SEG_RULE'
8969 ,p_category_sequence => 21
8970 ,p_application_id => p_application_id
8971 ,p_amb_context_code => p_amb_context_code
8972 ,p_event_class_code => p_event_class_code
8973 ,p_event_type_code => p_event_type_code
8974 ,p_line_definition_owner_code => p_line_definition_owner_code
8975 ,p_line_definition_code => p_line_definition_code
8976 ,p_segment_rule_type_code => l_err.segment_rule_type_code
8977 ,p_segment_rule_code => l_err.segment_rule_code);
8978 END LOOP;
8979
8980 OPEN c_adr;
8981 LOOP
8982 FETCH c_adr
8983 INTO l_adr;
8984 EXIT WHEN c_adr%notfound;
8985
8986 FOR l_child_adr IN c_invalid_child_adr LOOP
8987 l_return := FALSE;
8988
8989 xla_amb_setup_err_pkg.stack_error
8990 (p_message_name => 'XLA_AB_MPA_SR_NO_DETAIL'
8991 ,p_message_type => 'E'
8992 ,p_message_category => 'MPA_SEG_RULE'
8993 ,p_category_sequence => 21
8994 ,p_application_id => p_application_id
8995 ,p_amb_context_code => p_amb_context_code
8996 ,p_event_class_code => p_event_class_code
8997 ,p_event_type_code => p_event_type_code
8998 ,p_line_definition_owner_code => p_line_definition_owner_code
8999 ,p_line_definition_code => p_line_definition_code
9000 ,p_segment_rule_type_code => l_child_adr.value_segment_rule_type_code
9001 ,p_segment_rule_code => l_child_adr.value_segment_rule_code);
9002 END LOOP;
9003 END LOOP;
9004 CLOSE c_adr;
9005
9006 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9007 trace(p_msg => 'END of procedure chk_mpa_adr_has_details'
9008 ,p_module => l_log_module
9009 ,p_level => C_LEVEL_PROCEDURE);
9010 END IF;
9011
9012 RETURN l_return;
9013
9014 EXCEPTION
9015 WHEN xla_exceptions_pkg.application_exception THEN
9016 IF c_invalid_adrs%ISOPEN THEN
9017 CLOSE c_invalid_adrs;
9018 END IF;
9019 RAISE;
9020
9021 WHEN OTHERS THEN
9022 IF c_invalid_adrs%ISOPEN THEN
9023 CLOSE c_invalid_adrs;
9024 END IF;
9025 xla_exceptions_pkg.raise_message
9026 (p_location => 'xla_line_definitions_pvt.chk_mpa_adr_has_details');
9027 END chk_mpa_adr_has_details;
9028
9029
9030 --=============================================================================
9031 --
9032 -- Name: chk_mpa_adr_inv_source_cond
9033 -- Description: Check if all sources used in the ADR condition is valid
9034 --
9035 --=============================================================================
9036 FUNCTION chk_mpa_adr_inv_source_cond
9037 (p_application_id IN NUMBER
9038 ,p_amb_context_code IN VARCHAR2
9039 ,p_event_class_code IN VARCHAR2
9040 ,p_event_type_code IN VARCHAR2
9041 ,p_line_definition_owner_code IN VARCHAR2
9042 ,p_line_definition_code IN VARCHAR2)
9043 RETURN BOOLEAN
9044 IS
9045 --
9046 -- Get all JLT that have sources that do not belong to the event class of the
9047 -- line definition
9048 --
9049 CURSOR c_invalid_sources IS
9050 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9051 xco.source_type_code, xco.source_code
9052 FROM xla_conditions xco
9053 ,xla_seg_rule_details xsr
9054 ,xla_mpa_jlt_adr_assgns xad
9055 ,xla_line_defn_jlt_assgns xjl
9056 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9057 AND xsr.application_id = xad.application_id
9058 AND xsr.amb_context_code = xad.amb_context_code
9059 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9060 AND xsr.segment_rule_code = xad.segment_rule_code
9061 AND xco.source_type_code = 'S'
9062 AND xad.application_id = xjl.application_id
9063 AND xad.amb_context_code = xjl.amb_context_code
9064 AND xad.event_class_code = xjl.event_class_code
9065 AND xad.event_type_code = xjl.event_type_code
9066 AND xad.line_definition_code = xjl.line_definition_code
9067 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9068 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9069 AND xad.accounting_line_code = xjl.accounting_line_code
9070 AND xad.segment_rule_code is not null
9071 AND xjl.application_id = p_application_id
9072 AND xjl.amb_context_code = p_amb_context_code
9073 AND xjl.event_class_code = p_event_class_code
9074 AND xjl.event_type_code = p_event_type_code
9075 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9076 AND xjl.line_definition_code = p_line_definition_code
9077 AND xjl.active_flag = 'Y'
9078 AND NOT EXISTS (SELECT 'x'
9079 FROM xla_line_defn_jlt_assgns xld1
9080 WHERE xld1.application_id = xad.application_id
9081 AND xld1.amb_context_code = xad.amb_context_code
9082 AND xld1.event_class_code = xad.event_class_code
9083 AND xld1.event_type_code = xad.event_type_code
9084 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9085 AND xld1.line_definition_code = xad.line_definition_code
9086 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9087 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
9088 AND NOT EXISTS
9089 (SELECT 'y'
9090 FROM xla_event_sources xes
9091 WHERE xes.source_application_id = xco.source_application_id
9092 AND xes.source_type_code = xco.source_type_code
9093 AND xes.source_code = xco.source_code
9094 AND xes.application_id = p_application_id
9095 AND xes.event_class_code = p_event_class_code
9096 AND xes.active_flag = 'Y')
9097 UNION
9098 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9099 xco.value_source_type_code source_type_code, xco.value_source_code source_code
9100 FROM xla_conditions xco
9101 ,xla_seg_rule_details xsr
9102 ,xla_mpa_jlt_adr_assgns xad
9103 ,xla_line_defn_jlt_assgns xjl
9104 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9105 AND xsr.application_id = xad.application_id
9106 AND xsr.amb_context_code = xad.amb_context_code
9107 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9108 AND xsr.segment_rule_code = xad.segment_rule_code
9109 AND xco.value_source_type_code = 'S'
9110 AND xad.application_id = xjl.application_id
9111 AND xad.amb_context_code = xjl.amb_context_code
9112 AND xad.event_class_code = xjl.event_class_code
9113 AND xad.event_type_code = xjl.event_type_code
9114 AND xad.line_definition_code = xjl.line_definition_code
9115 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9116 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9117 AND xad.accounting_line_code = xjl.accounting_line_code
9118 AND xad.segment_rule_code is not null
9119 AND xjl.application_id = p_application_id
9120 AND xjl.amb_context_code = p_amb_context_code
9121 AND xjl.event_class_code = p_event_class_code
9122 AND xjl.event_type_code = p_event_type_code
9123 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9124 AND xjl.line_definition_code = p_line_definition_code
9125 AND xjl.active_flag = 'Y'
9126 AND NOT EXISTS (SELECT 'x'
9127 FROM xla_line_defn_jlt_assgns xld1
9128 WHERE xld1.application_id = xad.application_id
9129 AND xld1.amb_context_code = xad.amb_context_code
9130 AND xld1.event_class_code = xad.event_class_code
9131 AND xld1.event_type_code = xad.event_type_code
9132 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9133 AND xld1.line_definition_code = xad.line_definition_code
9134 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9135 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
9136 AND NOT EXISTS
9137 (SELECT 'y'
9138 FROM xla_event_sources xes
9139 WHERE xes.source_application_id = xco.value_source_application_id
9140 AND xes.source_type_code = xco.value_source_type_code
9141 AND xes.source_code = xco.value_source_code
9142 AND xes.application_id = p_application_id
9143 AND xes.event_class_code = p_event_class_code
9144 AND xes.active_flag = 'Y');
9145
9146 CURSOR c_cond_der_sources IS
9147 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9148 xco.source_type_code source_type_code, xco.source_code source_code
9149 FROM xla_conditions xco
9150 ,xla_seg_rule_details xsr
9151 ,xla_mpa_jlt_adr_assgns xad
9152 ,xla_line_defn_jlt_assgns xjl
9153 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9154 AND xsr.application_id = xad.application_id
9155 AND xsr.amb_context_code = xad.amb_context_code
9156 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9157 AND xsr.segment_rule_code = xad.segment_rule_code
9158 AND xco.source_type_code = 'D'
9159 AND xad.application_id = xjl.application_id
9160 AND xad.amb_context_code = xjl.amb_context_code
9161 AND xad.event_class_code = xjl.event_class_code
9162 AND xad.event_type_code = xjl.event_type_code
9163 AND xad.line_definition_code = xjl.line_definition_code
9164 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9165 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9166 AND xad.accounting_line_code = xjl.accounting_line_code
9167 AND xad.segment_rule_code is not null
9168 AND xjl.application_id = p_application_id
9169 AND xjl.amb_context_code = p_amb_context_code
9170 AND xjl.event_class_code = p_event_class_code
9171 AND xjl.event_type_code = p_event_type_code
9172 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9173 AND xjl.line_definition_code = p_line_definition_code
9174 AND xjl.active_flag = 'Y'
9175 AND NOT EXISTS (SELECT 'x'
9176 FROM xla_line_defn_jlt_assgns xld1
9177 WHERE xld1.application_id = xad.application_id
9178 AND xld1.amb_context_code = xad.amb_context_code
9179 AND xld1.event_class_code = xad.event_class_code
9180 AND xld1.event_type_code = xad.event_type_code
9181 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9182 AND xld1.line_definition_code = xad.line_definition_code
9183 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9184 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
9185 UNION
9186 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9187 xco.value_source_type_code source_type_code, xco.value_source_code source_code
9188 FROM xla_conditions xco
9189 ,xla_seg_rule_details xsr
9190 ,xla_mpa_jlt_adr_assgns xad
9191 ,xla_line_defn_jlt_assgns xjl
9192 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9193 AND xsr.application_id = xad.application_id
9194 AND xsr.amb_context_code = xad.amb_context_code
9195 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9196 AND xsr.segment_rule_code = xad.segment_rule_code
9197 AND xco.value_source_type_code = 'D'
9198 AND xad.application_id = xjl.application_id
9199 AND xad.amb_context_code = xjl.amb_context_code
9200 AND xad.event_class_code = xjl.event_class_code
9201 AND xad.event_type_code = xjl.event_type_code
9202 AND xad.line_definition_code = xjl.line_definition_code
9203 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9204 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9205 AND xad.accounting_line_code = xjl.accounting_line_code
9206 AND xad.segment_rule_code is not null
9207 AND xjl.application_id = p_application_id
9208 AND xjl.amb_context_code = p_amb_context_code
9209 AND xjl.event_class_code = p_event_class_code
9210 AND xjl.event_type_code = p_event_type_code
9211 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9212 AND xjl.line_definition_code = p_line_definition_code
9213 AND xjl.active_flag = 'Y'
9214 AND NOT EXISTS (SELECT 'x'
9215 FROM xla_line_defn_jlt_assgns xld1
9216 WHERE xld1.application_id = xad.application_id
9217 AND xld1.amb_context_code = xad.amb_context_code
9218 AND xld1.event_class_code = xad.event_class_code
9219 AND xld1.event_type_code = xad.event_type_code
9220 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9221 AND xld1.line_definition_code = xad.line_definition_code
9222 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9223 AND xld1.accounting_line_code = xad.mpa_accounting_line_code);
9224
9225 CURSOR c_child_adr IS
9226 SELECT distinct xsr.value_segment_rule_appl_id,
9227 xsr.value_segment_rule_type_code, xsr.value_segment_rule_code
9228 FROM xla_line_defn_jlt_assgns xjl
9229 ,xla_mpa_jlt_adr_assgns xad
9230 ,xla_seg_rule_details xsr
9231 WHERE xsr.application_id = xad.application_id
9232 AND xsr.amb_context_code = xad.amb_context_code
9233 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9234 AND xsr.segment_rule_code = xad.segment_rule_code
9235 AND xsr.value_type_code = 'A'
9236 AND xad.application_id = xjl.application_id
9237 AND xad.amb_context_code = xjl.amb_context_code
9238 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9239 AND xad.line_definition_code = xjl.line_definition_code
9240 AND xad.event_class_code = xjl.event_class_code
9241 AND xad.event_type_code = xjl.event_type_code
9242 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9243 AND xad.accounting_line_code = xjl.accounting_line_code
9244 AND xad.segment_rule_code is not null
9245 AND xjl.application_id = p_application_id
9246 AND xjl.amb_context_code = p_amb_context_code
9247 AND xjl.event_class_code = p_event_class_code
9248 AND xjl.event_type_code = p_event_type_code
9249 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9250 AND xjl.line_definition_code = p_line_definition_code
9251 AND xjl.active_flag = 'Y'
9252 AND NOT EXISTS (SELECT 'x'
9253 FROM xla_line_defn_jlt_assgns xld1
9254 WHERE xld1.application_id = xad.application_id
9255 AND xld1.amb_context_code = xad.amb_context_code
9256 AND xld1.event_class_code = xad.event_class_code
9257 AND xld1.event_type_code = xad.event_type_code
9258 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9259 AND xld1.line_definition_code = xad.line_definition_code
9260 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9261 AND xld1.accounting_line_code = xad.mpa_accounting_line_code);
9262
9263 l_child_adr c_child_adr%rowtype;
9264
9265 CURSOR c_invalid_child_sources IS
9266 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9267 xco.source_type_code, xco.source_code
9268 FROM xla_conditions xco
9269 ,xla_seg_rule_details xsr
9270 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9271 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
9272 AND xsr.amb_context_code = p_amb_context_code
9273 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9274 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9275 AND xco.source_type_code = 'S'
9276 AND NOT EXISTS
9277 (SELECT 'y'
9278 FROM xla_event_sources xes
9279 WHERE xes.source_application_id = xco.source_application_id
9280 AND xes.source_type_code = xco.source_type_code
9281 AND xes.source_code = xco.source_code
9282 AND xes.application_id = p_application_id
9283 AND xes.event_class_code = p_event_class_code
9284 AND xes.active_flag = 'Y')
9285 UNION
9286 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9287 xco.value_source_type_code source_type_code, xco.value_source_code source_code
9288 FROM xla_conditions xco
9289 ,xla_seg_rule_details xsr
9290 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9291 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
9292 AND xsr.amb_context_code = p_amb_context_code
9293 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9294 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9295 AND xco.value_source_type_code = 'S'
9296 AND NOT EXISTS
9297 (SELECT 'y'
9298 FROM xla_event_sources xes
9299 WHERE xes.source_application_id = xco.value_source_application_id
9300 AND xes.source_type_code = xco.value_source_type_code
9301 AND xes.source_code = xco.value_source_code
9302 AND xes.application_id = p_application_id
9303 AND xes.event_class_code = p_event_class_code
9304 AND xes.active_flag = 'Y');
9305
9306 CURSOR c_child_der_sources IS
9307 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9308 xco.source_type_code source_type_code, xco.source_code source_code
9309 FROM xla_conditions xco
9310 ,xla_seg_rule_details xsr
9311 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9312 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
9313 AND xsr.amb_context_code = p_amb_context_code
9314 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9315 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9316 AND xco.source_type_code = 'D'
9317 UNION
9318 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9319 xco.value_source_type_code source_type_code, xco.value_source_code source_code
9320 FROM xla_conditions xco
9321 ,xla_seg_rule_details xsr
9322 WHERE xco.segment_rule_detail_id = xsr.segment_rule_detail_id
9323 AND xsr.application_id = l_child_adr.value_segment_rule_appl_id
9324 AND xsr.amb_context_code = p_amb_context_code
9325 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9326 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9327 AND xco.value_source_type_code = 'D';
9328
9329 l_return BOOLEAN;
9330 l_log_module VARCHAR2(240);
9331 BEGIN
9332 IF g_log_enabled THEN
9333 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_adr_inv_source_cond';
9334 END IF;
9335
9336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9337 trace(p_msg => 'BEGIN of procedure chk_mpa_adr_inv_source_cond'
9338 ,p_module => l_log_module
9339 ,p_level => C_LEVEL_PROCEDURE);
9340 END IF;
9341
9342 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9343 trace(p_msg => 'application_id = '||p_application_id||
9344 ',amb_context_code = '||p_amb_context_code||
9345 ',event_class_code = '||p_event_class_code||
9346 ',event_type_code = '||p_event_type_code||
9347 ',line_definition_owner_code = '||p_line_definition_owner_code||
9348 ',line_definition_code = '||p_line_definition_code
9349 ,p_module => l_log_module
9350 ,p_level => C_LEVEL_STATEMENT);
9351 END IF;
9352
9353 l_return := TRUE;
9354
9355 --
9356 -- Check if the condition of any JLT have seeded sources that are not assigned
9357 -- to the event class of the line definition
9358 --
9359 FOR l_err IN c_invalid_sources LOOP
9360 l_return := FALSE;
9361
9362 xla_amb_setup_err_pkg.stack_error
9363 (p_message_name => 'XLA_AB_MPA_SR_CON_UNASN_SRCE'
9364 ,p_message_type => 'E'
9365 ,p_message_category => 'MPA_SEG_RULE'
9366 ,p_category_sequence => 21
9367 ,p_application_id => p_application_id
9368 ,p_amb_context_code => p_amb_context_code
9369 ,p_event_class_code => p_event_class_code
9370 ,p_event_type_code => p_event_type_code
9371 ,p_line_definition_owner_code => p_line_definition_owner_code
9372 ,p_line_definition_code => p_line_definition_code
9373 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9374 ,p_segment_rule_code => l_err.segment_rule_code
9375 ,p_source_type_code => l_err.source_type_code
9376 ,p_source_code => l_err.source_code);
9377 END LOOP;
9378
9379 FOR l_err IN c_cond_der_sources LOOP
9380 IF xla_sources_pkg.derived_source_is_invalid
9381 (p_application_id => p_application_id
9382 ,p_derived_source_code => l_err.source_code
9383 ,p_derived_source_type_code => 'D'
9384 ,p_event_class_code => p_event_class_code
9385 ,p_level => 'L') = 'TRUE' THEN
9386
9387 l_return := FALSE;
9388
9389 xla_amb_setup_err_pkg.stack_error
9390 (p_message_name => 'XLA_AB_MPA_SR_CON_UNASN_SRCE'
9391 ,p_message_type => 'E'
9392 ,p_message_category => 'MPA_SEG_RULE'
9393 ,p_category_sequence => 21
9394 ,p_application_id => p_application_id
9395 ,p_amb_context_code => p_amb_context_code
9396 ,p_event_class_code => p_event_class_code
9397 ,p_event_type_code => p_event_type_code
9398 ,p_line_definition_owner_code => p_line_definition_owner_code
9399 ,p_line_definition_code => p_line_definition_code
9400 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9401 ,p_segment_rule_code => l_err.segment_rule_code
9402 ,p_source_type_code => l_err.source_type_code
9403 ,p_source_code => l_err.source_code);
9404 END IF;
9405 END LOOP;
9406
9407 OPEN c_child_adr;
9408 LOOP
9409 FETCH c_child_adr
9410 INTO l_child_adr;
9411 EXIT WHEN c_child_adr%notfound;
9412
9413 FOR l_err IN c_invalid_child_sources LOOP
9414 l_return := FALSE;
9415
9416 xla_amb_setup_err_pkg.stack_error
9417 (p_message_name => 'XLA_AB_MPA_SR_CON_UNASN_SRCE'
9418 ,p_message_type => 'E'
9419 ,p_message_category => 'MPA_SEG_RULE'
9420 ,p_category_sequence => 21
9421 ,p_application_id => p_application_id
9422 ,p_amb_context_code => p_amb_context_code
9423 ,p_event_class_code => p_event_class_code
9424 ,p_event_type_code => p_event_type_code
9425 ,p_line_definition_owner_code => p_line_definition_owner_code
9426 ,p_line_definition_code => p_line_definition_code
9427 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9428 ,p_segment_rule_code => l_err.segment_rule_code
9429 ,p_source_type_code => l_err.source_type_code
9430 ,p_source_code => l_err.source_code);
9431 END LOOP;
9432
9433 FOR l_err IN c_child_der_sources LOOP
9434 IF xla_sources_pkg.derived_source_is_invalid
9435 (p_application_id => p_application_id
9436 ,p_derived_source_code => l_err.source_code
9437 ,p_derived_source_type_code => 'D'
9438 ,p_event_class_code => p_event_class_code
9439 ,p_level => 'L') = 'TRUE' THEN
9440
9441 l_return := FALSE;
9442 xla_amb_setup_err_pkg.stack_error
9443 (p_message_name => 'XLA_AB_MPA_SR_CON_UNASN_SRCE'
9444 ,p_message_type => 'E'
9445 ,p_message_category => 'MPA_SEG_RULE'
9446 ,p_category_sequence => 21
9447 ,p_application_id => p_application_id
9448 ,p_amb_context_code => p_amb_context_code
9449 ,p_event_class_code => p_event_class_code
9450 ,p_event_type_code => p_event_type_code
9451 ,p_line_definition_owner_code => p_line_definition_owner_code
9452 ,p_line_definition_code => p_line_definition_code
9453 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9454 ,p_segment_rule_code => l_err.segment_rule_code
9455 ,p_source_type_code => l_err.source_type_code
9456 ,p_source_code => l_err.source_code);
9457 END IF;
9458 END LOOP;
9459 END LOOP;
9460 CLOSE c_child_adr;
9461
9462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9463 trace(p_msg => 'END of procedure chk_mpa_adr_inv_source_cond'
9464 ,p_module => l_log_module
9465 ,p_level => C_LEVEL_PROCEDURE);
9466 END IF;
9467
9468 RETURN l_return;
9469
9470 EXCEPTION
9471 WHEN xla_exceptions_pkg.application_exception THEN
9472 IF c_invalid_sources%ISOPEN THEN
9473 CLOSE c_invalid_sources;
9474 END IF;
9475 IF c_cond_der_sources%ISOPEN THEN
9476 CLOSE c_cond_der_sources;
9477 END IF;
9478 RAISE;
9479
9480 WHEN OTHERS THEN
9481 IF c_invalid_sources%ISOPEN THEN
9482 CLOSE c_invalid_sources;
9483 END IF;
9484 IF c_cond_der_sources%ISOPEN THEN
9485 CLOSE c_cond_der_sources;
9486 END IF;
9487 xla_exceptions_pkg.raise_message
9488 (p_location => 'xla_line_definitions_pvt.chk_mpa_adr_inv_source_cond');
9489 END chk_mpa_adr_inv_source_cond;
9490
9491
9492 --=============================================================================
9493 --
9494 -- Name: chk_mpa_adr_source_event_class
9495 -- Description: Check if all JLT of the line definition has all required
9496 -- accounting sources assigned
9497 --
9498 --=============================================================================
9499 FUNCTION chk_mpa_adr_source_event_class
9500 (p_application_id IN NUMBER
9501 ,p_amb_context_code IN VARCHAR2
9502 ,p_event_class_code IN VARCHAR2
9503 ,p_event_type_code IN VARCHAR2
9504 ,p_line_definition_owner_code IN VARCHAR2
9505 ,p_line_definition_code IN VARCHAR2)
9506 RETURN BOOLEAN
9507 IS
9508 --
9509 -- Get all JLT for which not all required line accounting sources are assigned
9510 --
9511 CURSOR c_invalid_sources IS
9512 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9513 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
9514 FROM xla_seg_rule_details xsr
9515 ,xla_mpa_jlt_adr_assgns xad
9516 ,xla_line_defn_jlt_assgns xjl
9517 WHERE xsr.application_id = xad.application_id
9518 AND xsr.amb_context_code = xad.amb_context_code
9519 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9520 AND xsr.segment_rule_code = xad.segment_rule_code
9521 AND xsr.value_source_type_code = 'S'
9522 AND xad.application_id = xjl.application_id
9523 AND xad.amb_context_code = xjl.amb_context_code
9524 AND xad.line_definition_code = xjl.line_definition_code
9525 AND xad.event_class_code = xjl.event_class_code
9526 AND xad.event_type_code = xjl.event_type_code
9527 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9528 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9529 AND xad.accounting_line_code = xjl.accounting_line_code
9530 AND xad.segment_rule_code is not null
9531 AND xjl.application_id = p_application_id
9532 AND xjl.amb_context_code = p_amb_context_code
9533 AND xjl.event_class_code = p_event_class_code
9534 AND xjl.event_type_code = p_event_type_code
9535 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9536 AND xjl.line_definition_code = p_line_definition_code
9537 AND xjl.active_flag = 'Y'
9538 AND NOT EXISTS (SELECT 'x'
9539 FROM xla_line_defn_jlt_assgns xld1
9540 WHERE xld1.application_id = xad.application_id
9541 AND xld1.amb_context_code = xad.amb_context_code
9542 AND xld1.event_class_code = xad.event_class_code
9543 AND xld1.event_type_code = xad.event_type_code
9544 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9545 AND xld1.line_definition_code = xad.line_definition_code
9546 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9547 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
9548 AND NOT EXISTS
9549 (SELECT 'y'
9550 FROM xla_event_sources xes
9551 WHERE xes.source_application_id = xsr.value_source_application_id
9552 AND xes.source_type_code = xsr.value_source_type_code
9553 AND xes.source_code = xsr.value_source_code
9554 AND xes.application_id = xsr.application_id
9555 AND xes.event_class_code = p_event_class_code
9556 AND xes.active_flag = 'Y')
9557 UNION
9558 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9559 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
9560 FROM xla_seg_rule_details xsr
9561 ,xla_mpa_jlt_adr_assgns xad
9562 ,xla_line_defn_jlt_assgns xjl
9563 WHERE xsr.application_id = xad.application_id
9564 AND xsr.amb_context_code = xad.amb_context_code
9565 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9566 AND xsr.segment_rule_code = xad.segment_rule_code
9567 AND xsr.input_source_type_code = 'S'
9568 AND xad.application_id = xjl.application_id
9569 AND xad.amb_context_code = xjl.amb_context_code
9570 AND xad.line_definition_code = xjl.line_definition_code
9571 AND xad.event_class_code = xjl.event_class_code
9572 AND xad.event_type_code = xjl.event_type_code
9573 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9574 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9575 AND xad.accounting_line_code = xjl.accounting_line_code
9576 AND xad.segment_rule_code is not null
9577 AND xjl.application_id = p_application_id
9578 AND xjl.amb_context_code = p_amb_context_code
9579 AND xjl.event_class_code = p_event_class_code
9580 AND xjl.event_type_code = p_event_type_code
9581 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9582 AND xjl.line_definition_code = p_line_definition_code
9583 AND xjl.active_flag = 'Y'
9584 AND NOT EXISTS (SELECT 'x'
9585 FROM xla_line_defn_jlt_assgns xld1
9586 WHERE xld1.application_id = xad.application_id
9587 AND xld1.amb_context_code = xad.amb_context_code
9588 AND xld1.event_class_code = xad.event_class_code
9589 AND xld1.event_type_code = xad.event_type_code
9590 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9591 AND xld1.line_definition_code = xad.line_definition_code
9592 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9593 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
9594 AND NOT EXISTS
9595 (SELECT 'y'
9596 FROM xla_event_sources xes
9597 WHERE xes.source_application_id = xsr.input_source_application_id
9598 AND xes.source_type_code = xsr.input_source_type_code
9599 AND xes.source_code = xsr.input_source_code
9600 AND xes.application_id = xsr.application_id
9601 AND xes.event_class_code = p_event_class_code
9602 AND xes.active_flag = 'Y');
9603
9604 CURSOR c_der_sources IS
9605 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9606 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
9607 FROM xla_seg_rule_details xsr
9608 ,xla_mpa_jlt_adr_assgns xad
9609 ,xla_line_defn_jlt_assgns xjl
9610 WHERE xsr.application_id = xad.application_id
9611 AND xsr.amb_context_code = xad.amb_context_code
9612 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9613 AND xsr.segment_rule_code = xad.segment_rule_code
9614 AND xsr.value_source_type_code = 'D'
9615 AND xad.application_id = xjl.application_id
9616 AND xad.amb_context_code = xjl.amb_context_code
9617 AND xad.event_class_code = xjl.event_class_code
9618 AND xad.event_type_code = xjl.event_type_code
9619 AND xad.line_definition_code = xjl.line_definition_code
9620 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9621 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9622 AND xad.accounting_line_code = xjl.accounting_line_code
9623 AND xad.segment_rule_code is not null
9624 AND xjl.application_id = p_application_id
9625 AND xjl.amb_context_code = p_amb_context_code
9626 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9627 AND xjl.line_definition_code = p_line_definition_code
9628 AND xjl.active_flag = 'Y'
9629 AND NOT EXISTS (SELECT 'x'
9630 FROM xla_line_defn_jlt_assgns xld1
9631 WHERE xld1.application_id = xad.application_id
9632 AND xld1.amb_context_code = xad.amb_context_code
9633 AND xld1.event_class_code = xad.event_class_code
9634 AND xld1.event_type_code = xad.event_type_code
9635 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9636 AND xld1.line_definition_code = xad.line_definition_code
9637 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9638 AND xld1.accounting_line_code = xad.mpa_accounting_line_code)
9639 UNION
9640 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9641 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
9642 FROM xla_seg_rule_details xsr
9643 ,xla_mpa_jlt_adr_assgns xad
9644 ,xla_line_defn_jlt_assgns xjl
9645 WHERE xsr.application_id = xad.application_id
9646 AND xsr.amb_context_code = xad.amb_context_code
9647 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9648 AND xsr.segment_rule_code = xad.segment_rule_code
9649 AND xsr.input_source_type_code = 'D'
9650 AND xad.application_id = xjl.application_id
9651 AND xad.amb_context_code = xjl.amb_context_code
9652 AND xad.event_class_code = xjl.event_class_code
9653 AND xad.event_type_code = xjl.event_type_code
9654 AND xad.line_definition_code = xjl.line_definition_code
9655 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9656 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9657 AND xad.accounting_line_code = xjl.accounting_line_code
9658 AND xad.segment_rule_code is not null
9659 AND xjl.application_id = p_application_id
9660 AND xjl.amb_context_code = p_amb_context_code
9661 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9662 AND xjl.line_definition_code = p_line_definition_code
9663 AND xjl.active_flag = 'Y'
9664 AND NOT EXISTS (SELECT 'x'
9665 FROM xla_line_defn_jlt_assgns xld1
9666 WHERE xld1.application_id = xad.application_id
9667 AND xld1.amb_context_code = xad.amb_context_code
9668 AND xld1.event_class_code = xad.event_class_code
9669 AND xld1.event_type_code = xad.event_type_code
9670 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9671 AND xld1.line_definition_code = xad.line_definition_code
9672 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9673 AND xld1.accounting_line_code = xad.mpa_accounting_line_code);
9674
9675
9676 CURSOR c_child_adr IS
9677 SELECT distinct xsr.value_segment_rule_appl_id,
9678 xsr.value_segment_rule_type_code, xsr.value_segment_rule_code
9679 FROM xla_line_defn_jlt_assgns xjl
9680 ,xla_mpa_jlt_adr_assgns xad
9681 ,xla_seg_rule_details xsr
9682 WHERE xsr.application_id = xad.application_id
9683 AND xsr.amb_context_code = xad.amb_context_code
9684 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9685 AND xsr.segment_rule_code = xad.segment_rule_code
9686 AND xsr.value_type_code = 'A'
9687 AND xad.application_id = xjl.application_id
9688 AND xad.amb_context_code = xjl.amb_context_code
9689 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9690 AND xad.line_definition_code = xjl.line_definition_code
9691 AND xad.event_class_code = xjl.event_class_code
9692 AND xad.event_type_code = xjl.event_type_code
9693 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9694 AND xad.accounting_line_code = xjl.accounting_line_code
9695 AND xad.segment_rule_code is not null
9696 AND xjl.application_id = p_application_id
9697 AND xjl.amb_context_code = p_amb_context_code
9698 AND xjl.event_class_code = p_event_class_code
9699 AND xjl.event_type_code = p_event_type_code
9700 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9701 AND xjl.line_definition_code = p_line_definition_code
9702 AND xjl.active_flag = 'Y'
9703 AND NOT EXISTS (SELECT 'x'
9704 FROM xla_line_defn_jlt_assgns xld1
9705 WHERE xld1.application_id = xad.application_id
9706 AND xld1.amb_context_code = xad.amb_context_code
9707 AND xld1.event_class_code = xad.event_class_code
9708 AND xld1.event_type_code = xad.event_type_code
9709 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9710 AND xld1.line_definition_code = xad.line_definition_code
9711 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9712 AND xld1.accounting_line_code = xad.mpa_accounting_line_code);
9713
9714 l_child_adr c_child_adr%rowtype;
9715
9716 CURSOR c_invalid_child_sources IS
9717 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9718 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
9719 FROM xla_seg_rule_details xsr
9720 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
9721 AND xsr.amb_context_code = p_amb_context_code
9722 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9723 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9724 AND xsr.value_source_type_code = 'S'
9725 AND NOT EXISTS
9726 (SELECT 'y'
9727 FROM xla_event_sources xes
9728 WHERE xes.source_application_id = xsr.value_source_application_id
9729 AND xes.source_type_code = xsr.value_source_type_code
9730 AND xes.source_code = xsr.value_source_code
9731 AND xes.application_id = xsr.application_id
9732 AND xes.event_class_code = p_event_class_code
9733 AND xes.active_flag = 'Y')
9734 UNION
9735 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9736 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
9737 FROM xla_seg_rule_details xsr
9738 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
9739 AND xsr.amb_context_code = p_amb_context_code
9740 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9741 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9742 AND xsr.input_source_type_code = 'S'
9743 AND NOT EXISTS
9744 (SELECT 'y'
9745 FROM xla_event_sources xes
9746 WHERE xes.source_application_id = xsr.input_source_application_id
9747 AND xes.source_type_code = xsr.input_source_type_code
9748 AND xes.source_code = xsr.input_source_code
9749 AND xes.application_id = xsr.application_id
9750 AND xes.event_class_code = p_event_class_code
9751 AND xes.active_flag = 'Y');
9752
9753 CURSOR c_child_der_sources IS
9754 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9755 xsr.value_source_type_code source_type_code, xsr.value_source_code source_code
9756 FROM xla_seg_rule_details xsr
9757 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
9758 AND xsr.amb_context_code = p_amb_context_code
9759 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9760 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9761 AND xsr.value_source_type_code = 'D'
9762 UNION
9763 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
9764 xsr.input_source_type_code source_type_code, xsr.input_source_code source_code
9765 FROM xla_seg_rule_details xsr
9766 WHERE xsr.application_id = l_child_adr.value_segment_rule_appl_id
9767 AND xsr.amb_context_code = p_amb_context_code
9768 AND xsr.segment_rule_type_code = l_child_adr.value_segment_rule_type_code
9769 AND xsr.segment_rule_code = l_child_adr.value_segment_rule_code
9770 AND xsr.input_source_type_code = 'D';
9771
9772 l_return BOOLEAN;
9773 l_log_module VARCHAR2(240);
9774 BEGIN
9775 IF g_log_enabled THEN
9776 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_adr_source_event_class';
9777 END IF;
9778
9779 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9780 trace(p_msg => 'BEGIN of procedure chk_mpa_adr_source_event_class'
9781 ,p_module => l_log_module
9782 ,p_level => C_LEVEL_PROCEDURE);
9783 END IF;
9784
9785 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9786 trace(p_msg => 'application_id = '||p_application_id||
9787 ',amb_context_code = '||p_amb_context_code||
9788 ',event_class_code = '||p_event_class_code||
9789 ',event_type_code = '||p_event_type_code||
9790 ',line_definition_owner_code = '||p_line_definition_owner_code||
9791 ',line_definition_code = '||p_line_definition_code
9792 ,p_module => l_log_module
9793 ,p_level => C_LEVEL_STATEMENT);
9794 END IF;
9795
9796 l_return := TRUE;
9797
9798 --
9799 -- Check if any JLT does not have all required line accounting sources
9800 --
9801 FOR l_err IN c_invalid_sources LOOP
9802 l_return := FALSE;
9803
9804 xla_amb_setup_err_pkg.stack_error
9805 (p_message_name => 'XLA_AB_MPA_SR_UNASSN_SOURCE'
9806 ,p_message_type => 'E'
9807 ,p_message_category => 'MPA_SEG_RULE'
9808 ,p_category_sequence => 21
9809 ,p_application_id => p_application_id
9810 ,p_amb_context_code => p_amb_context_code
9811 ,p_event_class_code => p_event_class_code
9812 ,p_event_type_code => p_event_type_code
9813 ,p_line_definition_owner_code => p_line_definition_owner_code
9814 ,p_line_definition_code => p_line_definition_code
9815 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9816 ,p_segment_rule_code => l_err.segment_rule_code
9817 ,p_source_type_code => l_err.source_type_code
9818 ,p_source_code => l_err.source_code);
9819 END LOOP;
9820
9821 FOR l_err IN c_der_sources LOOP
9822 IF xla_sources_pkg.derived_source_is_invalid
9823 (p_application_id => p_application_id
9824 ,p_derived_source_code => l_err.source_code
9825 ,p_derived_source_type_code => 'D'
9826 ,p_event_class_code => p_event_class_code
9827 ,p_level => 'L') = 'TRUE' THEN
9828
9829 l_return := FALSE;
9830 xla_amb_setup_err_pkg.stack_error
9831 (p_message_name => 'XLA_AB_MPA_SR_UNASSN_SOURCE'
9832 ,p_message_type => 'E'
9833 ,p_message_category => 'MPA_SEG_RULE'
9834 ,p_category_sequence => 21
9835 ,p_application_id => p_application_id
9836 ,p_amb_context_code => p_amb_context_code
9837 ,p_event_class_code => p_event_class_code
9838 ,p_event_type_code => p_event_type_code
9839 ,p_line_definition_owner_code => p_line_definition_owner_code
9840 ,p_line_definition_code => p_line_definition_code
9841 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9842 ,p_segment_rule_code => l_err.segment_rule_code
9843 ,p_source_type_code => l_err.source_type_code
9844 ,p_source_code => l_err.source_code);
9845 END IF;
9846 END LOOP;
9847
9848
9849 OPEN c_child_adr;
9850 LOOP
9851 FETCH c_child_adr
9852 INTO l_child_adr;
9853 EXIT WHEN c_child_adr%notfound;
9854
9855 FOR l_err IN c_invalid_child_sources LOOP
9856 l_return := FALSE;
9857
9858 xla_amb_setup_err_pkg.stack_error
9859 (p_message_name => 'XLA_AB_MPA_SR_UNASSN_SOURCE'
9860 ,p_message_type => 'E'
9861 ,p_message_category => 'MPA_SEG_RULE'
9862 ,p_category_sequence => 21
9863 ,p_application_id => p_application_id
9864 ,p_amb_context_code => p_amb_context_code
9865 ,p_event_class_code => p_event_class_code
9866 ,p_event_type_code => p_event_type_code
9867 ,p_line_definition_owner_code => p_line_definition_owner_code
9868 ,p_line_definition_code => p_line_definition_code
9869 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9870 ,p_segment_rule_code => l_err.segment_rule_code
9871 ,p_source_type_code => l_err.source_type_code
9872 ,p_source_code => l_err.source_code);
9873 END LOOP;
9874
9875 FOR l_err IN c_child_der_sources LOOP
9876 IF xla_sources_pkg.derived_source_is_invalid
9877 (p_application_id => p_application_id
9878 ,p_derived_source_code => l_err.source_code
9879 ,p_derived_source_type_code => 'D'
9880 ,p_event_class_code => p_event_class_code
9881 ,p_level => 'L') = 'TRUE' THEN
9882
9883 l_return := FALSE;
9884 xla_amb_setup_err_pkg.stack_error
9885 (p_message_name => 'XLA_AB_MPA_SR_UNASSN_SOURCE'
9886 ,p_message_type => 'E'
9887 ,p_message_category => 'MPA_SEG_RULE'
9888 ,p_category_sequence => 21
9889 ,p_application_id => p_application_id
9890 ,p_amb_context_code => p_amb_context_code
9891 ,p_event_class_code => p_event_class_code
9892 ,p_event_type_code => p_event_type_code
9893 ,p_line_definition_owner_code => p_line_definition_owner_code
9894 ,p_line_definition_code => p_line_definition_code
9895 ,p_segment_rule_type_code => l_err.segment_rule_type_code
9896 ,p_segment_rule_code => l_err.segment_rule_code
9897 ,p_source_type_code => l_err.source_type_code
9898 ,p_source_code => l_err.source_code);
9899 END IF;
9900 END LOOP;
9901 END LOOP;
9902 CLOSE c_child_adr;
9903
9904 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9905 trace(p_msg => 'END of procedure chk_mpa_adr_source_event_class'
9906 ,p_module => l_log_module
9907 ,p_level => C_LEVEL_PROCEDURE);
9908 END IF;
9909
9910 RETURN l_return;
9911
9912 EXCEPTION
9913 WHEN xla_exceptions_pkg.application_exception THEN
9914 IF c_invalid_sources%ISOPEN THEN
9915 CLOSE c_invalid_sources;
9916 END IF;
9917 IF c_der_sources%ISOPEN THEN
9918 CLOSE c_der_sources;
9919 END IF;
9920 RAISE;
9921
9922 WHEN OTHERS THEN
9923 IF c_invalid_sources%ISOPEN THEN
9924 CLOSE c_invalid_sources;
9925 END IF;
9926 IF c_der_sources%ISOPEN THEN
9927 CLOSE c_der_sources;
9928 END IF;
9929 xla_exceptions_pkg.raise_message
9930 (p_location => 'xla_line_definitions_pvt.chk_mpa_adr_source_event_class');
9931
9932 END chk_mpa_adr_source_event_class;
9933
9934
9935 --======================================================================
9936 --
9937 -- Name: check_mpa_adr_has_loop
9938 -- Description: Returns true if the ADR has an attached ADR which in
9939 -- turn has another ADR attached
9940 --
9941 --======================================================================
9942 FUNCTION check_mpa_adr_has_loop
9943 (p_application_id IN NUMBER
9944 ,p_amb_context_code IN VARCHAR2
9945 ,p_event_class_code IN VARCHAR2
9946 ,p_event_type_code IN VARCHAR2
9947 ,p_line_definition_owner_code IN VARCHAR2
9948 ,p_line_definition_code IN VARCHAR2)
9949 RETURN BOOLEAN
9950 IS
9951 l_log_module VARCHAR2(240);
9952
9953 l_return BOOLEAN := TRUE;
9954 l_exist VARCHAR2(1);
9955
9956 CURSOR c_child_adr IS
9957 SELECT distinct xad.segment_rule_appl_id, xad.segment_rule_type_code,
9958 xad.segment_rule_code,
9959 xsr.value_segment_rule_appl_id,
9960 xsr.value_segment_rule_type_code, xsr.value_segment_rule_code
9961 FROM xla_line_defn_jlt_assgns xjl
9962 ,xla_mpa_jlt_adr_assgns xad
9963 ,xla_seg_rule_details xsr
9964 WHERE xsr.application_id = xad.application_id
9965 AND xsr.amb_context_code = xad.amb_context_code
9966 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
9967 AND xsr.segment_rule_code = xad.segment_rule_code
9968 AND xsr.value_type_code = 'A'
9969 AND xad.application_id = xjl.application_id
9970 AND xad.amb_context_code = xjl.amb_context_code
9971 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
9972 AND xad.line_definition_code = xjl.line_definition_code
9973 AND xad.event_class_code = xjl.event_class_code
9974 AND xad.event_type_code = xjl.event_type_code
9975 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
9976 AND xad.accounting_line_code = xjl.accounting_line_code
9977 AND xad.segment_rule_code is not null
9978 AND xjl.application_id = p_application_id
9979 AND xjl.amb_context_code = p_amb_context_code
9980 AND xjl.event_class_code = p_event_class_code
9981 AND xjl.event_type_code = p_event_type_code
9982 AND xjl.line_definition_owner_code = p_line_definition_owner_code
9983 AND xjl.line_definition_code = p_line_definition_code
9984 AND xjl.active_flag = 'Y'
9985 AND NOT EXISTS (SELECT 'x'
9986 FROM xla_line_defn_jlt_assgns xld1
9987 WHERE xld1.application_id = xad.application_id
9988 AND xld1.amb_context_code = xad.amb_context_code
9989 AND xld1.event_class_code = xad.event_class_code
9990 AND xld1.event_type_code = xad.event_type_code
9991 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
9992 AND xld1.line_definition_code = xad.line_definition_code
9993 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
9994 AND xld1.accounting_line_code = xad.mpa_accounting_line_code);
9995
9996 l_child_adr c_child_adr%rowtype;
9997
9998 CURSOR c_adr_loop IS
9999 SELECT 'x'
10000 FROM xla_seg_rule_details xsd
10001 WHERE application_id = l_child_adr.value_segment_rule_appl_id
10002 AND amb_context_code = p_amb_context_code
10003 AND segment_rule_type_code = l_child_adr.value_segment_rule_type_code
10004 AND segment_rule_code = l_child_adr.value_segment_rule_code
10005 AND value_type_code = 'A';
10006
10007 BEGIN
10008 IF g_log_enabled THEN
10009 l_log_module := C_DEFAULT_MODULE||'.check_mpa_adr_has_loop';
10010 END IF;
10011
10012 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10013 trace(p_msg => 'BEGIN of procedure check_mpa_adr_has_loop'
10014 ,p_module => l_log_module
10015 ,p_level => C_LEVEL_PROCEDURE);
10016 END IF;
10017
10018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10019 trace(p_msg => 'application_id = '||p_application_id||
10020 ',amb_context_code = '||p_amb_context_code||
10021 ',event_class_code = '||p_event_class_code||
10022 ',event_type_code = '||p_event_type_code||
10023 ',line_definition_owner_code = '||p_line_definition_owner_code||
10024 ',line_definition_code = '||p_line_definition_code
10025 ,p_module => l_log_module
10026 ,p_level => C_LEVEL_STATEMENT);
10027 END IF;
10028
10029 OPEN c_child_adr;
10030 LOOP
10031 FETCH c_child_adr
10032 INTO l_child_adr;
10033 EXIT WHEN c_child_adr%notfound;
10034
10035 OPEN c_adr_loop;
10036 FETCH c_adr_loop
10037 INTO l_exist;
10038 IF c_adr_loop%found THEN
10039
10040 l_return := FALSE;
10041
10042 xla_amb_setup_err_pkg.stack_error
10043 (p_message_name => 'XLA_AB_MPA_ADR_HAS_LOOP'
10044 ,p_message_type => 'E'
10045 ,p_message_category => 'MPA_SEG_RULE'
10046 ,p_category_sequence => 21
10047 ,p_application_id => p_application_id
10048 ,p_amb_context_code => p_amb_context_code
10049 ,p_event_class_code => p_event_class_code
10050 ,p_event_type_code => p_event_type_code
10051 ,p_line_definition_owner_code => p_line_definition_owner_code
10052 ,p_line_definition_code => p_line_definition_code
10053 ,p_segment_rule_type_code => l_child_adr.segment_rule_type_code
10054 ,p_segment_rule_code => l_child_adr.segment_rule_code);
10055
10056 END IF;
10057 CLOSE c_adr_loop;
10058 END LOOP;
10059 CLOSE c_child_adr;
10060
10061
10062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10063 trace(p_msg => 'END of procedure check_mpa_adr_has_loop'
10064 ,p_module => l_log_module
10065 ,p_level => C_LEVEL_PROCEDURE);
10066 END IF;
10067
10068 RETURN l_return;
10069
10070 EXCEPTION
10071 WHEN xla_exceptions_pkg.application_exception THEN
10072 RAISE;
10073 WHEN OTHERS THEN
10074 xla_exceptions_pkg.raise_message
10075 (p_location => 'xla_line_definitions_pvt.check_mpa_adr_has_loop');
10076 END check_mpa_adr_has_loop;
10077
10078
10079
10080 --=============================================================================
10081 --
10082 -- Name: validate_mpa_line_adr
10083 -- Description: Validate all ADR assigned to the MPA JLT of the line definition
10084 -- is valid
10085 -- Return Value:
10086 -- TRUE - if all ADR assignments are valid
10087 -- FALSE - if any ADR assignment is invalid
10088 --
10089 --=============================================================================
10090 FUNCTION validate_mpa_line_adr
10091 (p_application_id IN NUMBER
10092 ,p_amb_context_code IN VARCHAR2
10093 ,p_event_class_code IN VARCHAR2
10094 ,p_event_type_code IN VARCHAR2
10095 ,p_line_definition_owner_code IN VARCHAR2
10096 ,p_line_definition_code IN VARCHAR2)
10097 RETURN BOOLEAN
10098 IS
10099 l_return BOOLEAN;
10100 l_log_module VARCHAR2(240);
10101 BEGIN
10102 IF g_log_enabled THEN
10103 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_line_adr';
10104 END IF;
10105
10106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10107 trace(p_msg => 'BEGIN of procedure validate_mpa_line_adr'
10108 ,p_module => l_log_module
10109 ,p_level => C_LEVEL_PROCEDURE);
10110 END IF;
10111
10112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10113 trace(p_msg => 'application_id = '||p_application_id||
10114 ',amb_context_code = '||p_amb_context_code||
10115 ',event_class_code = '||p_event_class_code||
10116 ',event_type_code = '||p_event_type_code||
10117 ',line_definition_owner_code = '||p_line_definition_owner_code||
10118 ',line_definition_code = '||p_line_definition_code
10119 ,p_module => l_log_module
10120 ,p_level => C_LEVEL_STATEMENT);
10121 END IF;
10122
10123 l_return := TRUE;
10124
10125 l_return := chk_mpa_adr_assgn_complete
10126 (p_application_id => p_application_id
10127 ,p_amb_context_code => p_amb_context_code
10128 ,p_event_class_code => p_event_class_code
10129 ,p_event_type_code => p_event_type_code
10130 ,p_line_definition_owner_code => p_line_definition_owner_code
10131 ,p_line_definition_code => p_line_definition_code)
10132 AND l_return;
10133
10134 l_return := chk_mpa_adr_is_enabled
10135 (p_application_id => p_application_id
10136 ,p_amb_context_code => p_amb_context_code
10137 ,p_event_class_code => p_event_class_code
10138 ,p_event_type_code => p_event_type_code
10139 ,p_line_definition_owner_code => p_line_definition_owner_code
10140 ,p_line_definition_code => p_line_definition_code)
10141 AND l_return;
10142
10143 l_return := chk_mpa_adr_has_details
10144 (p_application_id => p_application_id
10145 ,p_amb_context_code => p_amb_context_code
10146 ,p_event_class_code => p_event_class_code
10147 ,p_event_type_code => p_event_type_code
10148 ,p_line_definition_owner_code => p_line_definition_owner_code
10149 ,p_line_definition_code => p_line_definition_code)
10150 AND l_return;
10151
10152 l_return := chk_mpa_adr_inv_source_cond
10153 (p_application_id => p_application_id
10154 ,p_amb_context_code => p_amb_context_code
10155 ,p_event_class_code => p_event_class_code
10156 ,p_event_type_code => p_event_type_code
10157 ,p_line_definition_owner_code => p_line_definition_owner_code
10158 ,p_line_definition_code => p_line_definition_code)
10159 AND l_return;
10160
10161 l_return := chk_mpa_adr_source_event_class
10162 (p_application_id => p_application_id
10163 ,p_amb_context_code => p_amb_context_code
10164 ,p_event_class_code => p_event_class_code
10165 ,p_event_type_code => p_event_type_code
10166 ,p_line_definition_owner_code => p_line_definition_owner_code
10167 ,p_line_definition_code => p_line_definition_code)
10168 AND l_return;
10169
10170 l_return := check_mpa_adr_has_loop
10171 (p_application_id => p_application_id
10172 ,p_amb_context_code => p_amb_context_code
10173 ,p_event_class_code => p_event_class_code
10174 ,p_event_type_code => p_event_type_code
10175 ,p_line_definition_owner_code => p_line_definition_owner_code
10176 ,p_line_definition_code => p_line_definition_code)
10177 AND l_return;
10178
10179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10180 trace(p_msg => 'END of procedure validate_mpa_line_adr'
10181 ,p_module => l_log_module
10182 ,p_level => C_LEVEL_PROCEDURE);
10183 END IF;
10184
10185 RETURN l_return;
10186
10187 EXCEPTION
10188 WHEN xla_exceptions_pkg.application_exception THEN
10189 RAISE;
10190 WHEN OTHERS THEN
10191 xla_exceptions_pkg.raise_message
10192 (p_location => 'xla_line_definitions_pvt.validate_mpa_line_adr');
10193 END validate_mpa_line_adr;
10194
10195
10196 --=============================================================================
10197 --
10198 -- Name: chk_mpa_ms_is_enabled
10199 -- Description: Check if all mapping sets assigned to the line definition
10200 -- are enabled
10201 --
10202 --=============================================================================
10203 FUNCTION chk_mpa_ms_is_enabled
10204 (p_application_id IN NUMBER
10205 ,p_amb_context_code IN VARCHAR2
10206 ,p_event_class_code IN VARCHAR2
10207 ,p_event_type_code IN VARCHAR2
10208 ,p_line_definition_owner_code IN VARCHAR2
10209 ,p_line_definition_code IN VARCHAR2)
10210 RETURN BOOLEAN
10211 IS
10212 CURSOR c_invalid_ms IS
10213 SELECT distinct xsr.segment_rule_code, xsr.segment_rule_type_code,
10214 xsr.value_mapping_set_code
10215 FROM xla_seg_rule_details xsr
10216 ,xla_mpa_jlt_adr_assgns xad
10217 ,xla_line_defn_jlt_assgns xjl
10218 ,xla_mapping_sets_b xms
10219 WHERE xms.mapping_set_code = xsr.value_mapping_set_code
10220 AND xms.amb_context_code = xsr.amb_context_code
10221 AND xms.enabled_flag <> 'Y'
10222 AND xsr.application_id = xad.application_id
10223 AND xsr.amb_context_code = xad.amb_context_code
10224 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
10225 AND xsr.segment_rule_code = xad.segment_rule_code
10226 AND xsr.value_mapping_set_code IS NOT NULL
10227 AND xad.application_id = xjl.application_id
10228 AND xad.amb_context_code = xjl.amb_context_code
10229 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
10230 AND xad.line_definition_code = xjl.line_definition_code
10231 AND xad.event_class_code = xjl.event_class_code
10232 AND xad.event_type_code = xjl.event_type_code
10233 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
10234 AND xad.accounting_line_code = xjl.accounting_line_code
10235 AND xjl.application_id = p_application_id
10236 AND xjl.amb_context_code = p_amb_context_code
10237 AND xjl.event_class_code = p_event_class_code
10238 AND xjl.event_type_code = p_event_type_code
10239 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10240 AND xjl.line_definition_code = p_line_definition_code
10241 AND xjl.active_flag = 'Y'
10242 AND NOT EXISTS (SELECT 'x'
10243 FROM xla_line_defn_jlt_assgns xld1
10244 WHERE xld1.application_id = xad.application_id
10245 AND xld1.amb_context_code = xad.amb_context_code
10246 AND xld1.event_class_code = xad.event_class_code
10247 AND xld1.event_type_code = xad.event_type_code
10248 AND xld1.line_definition_owner_code = xad.line_definition_owner_code
10249 AND xld1.line_definition_code = xad.line_definition_code
10250 AND xld1.accounting_line_type_code = xad.mpa_accounting_line_type_code
10251 AND xld1.accounting_line_code = xad.mpa_accounting_line_code);
10252
10253 l_return BOOLEAN;
10254 l_log_module VARCHAR2(240);
10255 BEGIN
10256 IF g_log_enabled THEN
10257 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_ms_is_enabled';
10258 END IF;
10259
10260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10261 trace(p_msg => 'BEGIN of procedure chk_mpa_ms_is_enabled'
10262 ,p_module => l_log_module
10263 ,p_level => C_LEVEL_PROCEDURE);
10264 END IF;
10265
10266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10267 trace(p_msg => 'application_id = '||p_application_id||
10268 ',amb_context_code = '||p_amb_context_code||
10269 ',event_class_code = '||p_event_class_code||
10270 ',event_type_code = '||p_event_type_code||
10271 ',line_definition_owner_code = '||p_line_definition_owner_code||
10272 ',line_definition_code = '||p_line_definition_code
10273 ,p_module => l_log_module
10274 ,p_level => C_LEVEL_STATEMENT);
10275 END IF;
10276
10277 l_return := TRUE;
10278
10279 FOR l_err IN c_invalid_ms LOOP
10280 l_return := FALSE;
10281
10282 xla_amb_setup_err_pkg.stack_error
10283 (p_message_name => 'XLA_AB_MPA_DISABLD_MAPPING_SET'
10284 ,p_message_type => 'E'
10285 ,p_message_category => 'MPA_MAPPING_SET'
10286 ,p_category_sequence => 22
10287 ,p_application_id => p_application_id
10288 ,p_amb_context_code => p_amb_context_code
10289 ,p_event_class_code => p_event_class_code
10290 ,p_event_type_code => p_event_type_code
10291 ,p_line_definition_owner_code => p_line_definition_owner_code
10292 ,p_line_definition_code => p_line_definition_code
10293 ,p_segment_rule_type_code => l_err.segment_rule_type_code
10294 ,p_segment_rule_code => l_err.segment_rule_code
10295 ,p_mapping_set_code => l_err.value_mapping_set_code);
10296 END LOOP;
10297
10298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10299 trace(p_msg => 'END of procedure chk_mpa_ms_is_enabled'
10300 ,p_module => l_log_module
10301 ,p_level => C_LEVEL_PROCEDURE);
10302 END IF;
10303
10304 RETURN l_return;
10305
10306 EXCEPTION
10307 WHEN xla_exceptions_pkg.application_exception THEN
10308 IF (c_invalid_ms%ISOPEN) THEN
10309 CLOSE c_invalid_ms;
10310 END IF;
10311 RAISE;
10312
10313 WHEN OTHERS THEN
10314 IF (c_invalid_ms%ISOPEN) THEN
10315 CLOSE c_invalid_ms;
10316 END IF;
10317 xla_exceptions_pkg.raise_message
10318 (p_location => 'xla_line_definitions_pvt.chk_mpa_ms_is_enabled');
10319 END chk_mpa_ms_is_enabled;
10320
10321 --=============================================================================
10322 --
10323 -- Name: validate_mpa_line_ms
10324 -- Description: Validate MPA Mapping Set assignment of the line definition
10325 --
10326 --=============================================================================
10327 FUNCTION validate_mpa_line_ms
10328 (p_application_id IN NUMBER
10329 ,p_amb_context_code IN VARCHAR2
10330 ,p_event_class_code IN VARCHAR2
10331 ,p_event_type_code IN VARCHAR2
10332 ,p_line_definition_owner_code IN VARCHAR2
10333 ,p_line_definition_code IN VARCHAR2)
10334 RETURN BOOLEAN
10335 IS
10336 l_return BOOLEAN;
10337 l_log_module VARCHAR2(240);
10338 BEGIN
10339 IF g_log_enabled THEN
10340 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_line_ms';
10341 END IF;
10342
10343 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10344 trace(p_msg => 'BEGIN of procedure validate_mpa_line_ms'
10345 ,p_module => l_log_module
10346 ,p_level => C_LEVEL_PROCEDURE);
10347 END IF;
10348
10349 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10350 trace(p_msg => 'application_id = '||p_application_id||
10351 ',amb_context_code = '||p_amb_context_code||
10352 ',event_class_code = '||p_event_class_code||
10353 ',event_type_code = '||p_event_type_code||
10354 ',line_definition_owner_code = '||p_line_definition_owner_code||
10355 ',line_definition_code = '||p_line_definition_code
10356 ,p_module => l_log_module
10357 ,p_level => C_LEVEL_STATEMENT);
10358 END IF;
10359
10360 l_return := TRUE;
10361
10362 l_return := chk_mpa_ms_is_enabled
10363 (p_application_id => p_application_id
10364 ,p_amb_context_code => p_amb_context_code
10365 ,p_event_class_code => p_event_class_code
10366 ,p_event_type_code => p_event_type_code
10367 ,p_line_definition_owner_code => p_line_definition_owner_code
10368 ,p_line_definition_code => p_line_definition_code)
10369 AND l_return;
10370
10371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10372 trace(p_msg => 'END of procedure validate_mpa_line_ms'
10373 ,p_module => l_log_module
10374 ,p_level => C_LEVEL_PROCEDURE);
10375 END IF;
10376
10377 RETURN l_return;
10378
10379 EXCEPTION
10380 WHEN xla_exceptions_pkg.application_exception THEN
10381 RAISE;
10382 WHEN OTHERS THEN
10383 xla_exceptions_pkg.raise_message
10384 (p_location => 'xla_line_definitions_pvt.validate_mpa_line_ms');
10385 END validate_mpa_line_ms;
10386
10387
10388 --=============================================================================
10389 --
10390 -- Name: validate_mpa_line_assgns
10391 -- Description: Validate MPA Line assignment of the line definition
10392 --
10393 --=============================================================================
10394 FUNCTION validate_mpa_line_assgns
10395 (p_application_id IN NUMBER
10396 ,p_amb_context_code IN VARCHAR2
10397 ,p_event_class_code IN VARCHAR2
10398 ,p_event_type_code IN VARCHAR2
10399 ,p_line_definition_owner_code IN VARCHAR2
10400 ,p_line_definition_code IN VARCHAR2)
10401 RETURN BOOLEAN
10402 IS
10403 l_return BOOLEAN;
10404 l_log_module VARCHAR2(240);
10405 BEGIN
10406 IF g_log_enabled THEN
10407 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_line_assgns';
10408 END IF;
10409
10410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10411 trace(p_msg => 'BEGIN of procedure validate_mpa_line_assgns'
10412 ,p_module => l_log_module
10413 ,p_level => C_LEVEL_PROCEDURE);
10414 END IF;
10415
10416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10417 trace(p_msg => 'application_id = '||p_application_id||
10418 ',amb_context_code = '||p_amb_context_code||
10419 ',event_class_code = '||p_event_class_code||
10420 ',event_type_code = '||p_event_type_code||
10421 ',line_definition_owner_code = '||p_line_definition_owner_code||
10422 ',line_definition_code = '||p_line_definition_code
10423 ,p_module => l_log_module
10424 ,p_level => C_LEVEL_STATEMENT);
10425 END IF;
10426
10427 l_return := TRUE;
10428
10429 l_return := validate_mpa_jlt_assgns
10430 (p_application_id => p_application_id
10431 ,p_amb_context_code => p_amb_context_code
10432 ,p_event_class_code => p_event_class_code
10433 ,p_event_type_code => p_event_type_code
10434 ,p_line_definition_owner_code => p_line_definition_owner_code
10435 ,p_line_definition_code => p_line_definition_code)
10436 AND l_return;
10437
10438 l_return := validate_mpa_line_desc
10439 (p_application_id => p_application_id
10440 ,p_amb_context_code => p_amb_context_code
10441 ,p_event_class_code => p_event_class_code
10442 ,p_event_type_code => p_event_type_code
10443 ,p_line_definition_owner_code => p_line_definition_owner_code
10444 ,p_line_definition_code => p_line_definition_code)
10445 AND l_return;
10446
10447 l_return := validate_mpa_line_ac
10448 (p_application_id => p_application_id
10449 ,p_amb_context_code => p_amb_context_code
10450 ,p_event_class_code => p_event_class_code
10451 ,p_event_type_code => p_event_type_code
10452 ,p_line_definition_owner_code => p_line_definition_owner_code
10453 ,p_line_definition_code => p_line_definition_code)
10454 AND l_return;
10455
10456 l_return := validate_mpa_line_adr
10457 (p_application_id => p_application_id
10458 ,p_amb_context_code => p_amb_context_code
10459 ,p_event_class_code => p_event_class_code
10460 ,p_event_type_code => p_event_type_code
10461 ,p_line_definition_owner_code => p_line_definition_owner_code
10462 ,p_line_definition_code => p_line_definition_code)
10463 AND l_return;
10464
10465 l_return := validate_mpa_line_ms
10466 (p_application_id => p_application_id
10467 ,p_amb_context_code => p_amb_context_code
10468 ,p_event_class_code => p_event_class_code
10469 ,p_event_type_code => p_event_type_code
10470 ,p_line_definition_owner_code => p_line_definition_owner_code
10471 ,p_line_definition_code => p_line_definition_code)
10472 AND l_return;
10473
10474 RETURN l_return;
10475
10476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10477 trace(p_msg => 'END of procedure validate_mpa_line_assgns'
10478 ,p_module => l_log_module
10479 ,p_level => C_LEVEL_PROCEDURE);
10480 END IF;
10481
10482 RETURN l_return;
10483
10484 EXCEPTION
10485 WHEN xla_exceptions_pkg.application_exception THEN
10486 RAISE;
10487 WHEN OTHERS THEN
10488 xla_exceptions_pkg.raise_message
10489 (p_location => 'xla_line_definitions_pvt.validate_mpa_line_assgns');
10490 END validate_mpa_line_assgns;
10491
10492 --=============================================================================
10493 --
10494 -- Name: chk_mpa_hdr_desc_is_enabled
10495 -- Description: Check if all mapping sets assigned to the line definition
10496 -- are enabled
10497 --
10498 --=============================================================================
10499 FUNCTION chk_mpa_hdr_desc_is_enabled
10500 (p_application_id IN NUMBER
10501 ,p_amb_context_code IN VARCHAR2
10502 ,p_event_class_code IN VARCHAR2
10503 ,p_event_type_code IN VARCHAR2
10504 ,p_line_definition_owner_code IN VARCHAR2
10505 ,p_line_definition_code IN VARCHAR2)
10506 RETURN BOOLEAN
10507 IS
10508 CURSOR c_invalid_hdr_desc IS
10509 SELECT distinct xdb.description_type_code, xdb.description_code
10510 FROM xla_line_defn_jlt_assgns xjl
10511 ,xla_descriptions_b xdb
10512 WHERE xjl.application_id = p_application_id
10513 AND xjl.amb_context_code = p_amb_context_code
10514 AND xjl.event_class_code = p_event_class_code
10515 AND xjl.event_type_code = p_event_type_code
10516 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10517 AND xjl.line_definition_code = p_line_definition_code
10518 AND xjl.active_flag = 'Y'
10519 AND xjl.mpa_header_desc_type_code IS NOT NULL
10520 AND xdb.application_id = xjl.application_id
10521 AND xdb.amb_context_code = xjl.amb_context_code
10522 AND xdb.description_type_code = xjl.mpa_header_desc_type_code
10523 AND xdb.description_code = xjl.mpa_header_desc_code
10524 AND xdb.enabled_flag <> 'Y';
10525
10526 l_return BOOLEAN;
10527 l_log_module VARCHAR2(240);
10528 BEGIN
10529 IF g_log_enabled THEN
10530 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_desc_is_enabled';
10531 END IF;
10532
10533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10534 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_desc_is_enabled'
10535 ,p_module => l_log_module
10536 ,p_level => C_LEVEL_PROCEDURE);
10537 END IF;
10538
10539 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10540 trace(p_msg => 'application_id = '||p_application_id||
10541 ',amb_context_code = '||p_amb_context_code||
10542 ',event_class_code = '||p_event_class_code||
10543 ',event_type_code = '||p_event_type_code||
10544 ',line_definition_owner_code = '||p_line_definition_owner_code||
10545 ',line_definition_code = '||p_line_definition_code
10546 ,p_module => l_log_module
10547 ,p_level => C_LEVEL_STATEMENT);
10548 END IF;
10549
10550 l_return := TRUE;
10551
10552 FOR l_err IN c_invalid_hdr_desc LOOP
10553 l_return := FALSE;
10554
10555 xla_amb_setup_err_pkg.stack_error
10556 (p_message_name => 'XLA_AB_MPA_DISABLD_HDR_DESC'
10557 ,p_message_type => 'E'
10558 ,p_message_category => 'MPA_HDR_DESC'
10559 ,p_category_sequence => 15
10560 ,p_application_id => p_application_id
10561 ,p_amb_context_code => p_amb_context_code
10562 ,p_event_class_code => p_event_class_code
10563 ,p_event_type_code => p_event_type_code
10564 ,p_line_definition_owner_code => p_line_definition_owner_code
10565 ,p_line_definition_code => p_line_definition_code
10566 ,p_description_type_code => l_err.description_type_code
10567 ,p_description_code => l_err.description_code);
10568 END LOOP;
10569
10570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10571 trace(p_msg => 'END of procedure chk_mpa_hdr_desc_is_enabled'
10572 ,p_module => l_log_module
10573 ,p_level => C_LEVEL_PROCEDURE);
10574 END IF;
10575
10576 RETURN l_return;
10577
10578 EXCEPTION
10579 WHEN xla_exceptions_pkg.application_exception THEN
10580 RAISE;
10581
10582 WHEN OTHERS THEN
10583 xla_exceptions_pkg.raise_message
10584 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_desc_is_enabled');
10585 END chk_mpa_hdr_desc_is_enabled;
10586
10587 --=============================================================================
10588 --
10589 -- Name: chk_mpa_hdr_desc_inv_src_dtl
10590 -- Description: Check if all mapping sets assigned to the line definition
10591 -- are enabled
10592 --
10593 --=============================================================================
10594 FUNCTION chk_mpa_hdr_desc_inv_src_dtl
10595 (p_application_id IN NUMBER
10596 ,p_amb_context_code IN VARCHAR2
10597 ,p_event_class_code IN VARCHAR2
10598 ,p_event_type_code IN VARCHAR2
10599 ,p_line_definition_owner_code IN VARCHAR2
10600 ,p_line_definition_code IN VARCHAR2)
10601 RETURN BOOLEAN
10602 IS
10603 CURSOR c_invalid_sources IS
10604 SELECT distinct xjl.mpa_header_desc_type_code, xjl.mpa_header_desc_code,
10605 xdd.source_type_code, xdd.source_code
10606 FROM xla_descript_details_b xdd
10607 ,xla_desc_priorities xdp
10608 ,xla_line_defn_jlt_assgns xjl
10609 WHERE xdd.description_prio_id = xdp.description_prio_id
10610 AND xdp.application_id = xjl.application_id
10611 AND xdp.amb_context_code = xjl.amb_context_code
10612 AND xdp.description_type_code = xjl.mpa_header_desc_type_code
10613 AND xdp.description_code = xjl.mpa_header_desc_code
10614 AND xjl.application_id = p_application_id
10615 AND xjl.amb_context_code = p_amb_context_code
10616 AND xjl.event_class_code = p_event_class_code
10617 AND xjl.event_type_code = p_event_type_code
10618 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10619 AND xjl.line_definition_code = p_line_definition_code
10620 AND xjl.active_flag = 'Y'
10621 AND xdd.source_type_code = 'S'
10622 AND NOT EXISTS
10623 (SELECT 'y'
10624 FROM xla_event_sources xes
10625 WHERE xes.source_application_id = xdd.source_application_id
10626 AND xes.source_type_code = xdd.source_type_code
10627 AND xes.source_code = xdd.source_code
10628 AND xes.application_id = xjl.application_id
10629 AND xes.event_class_code = xjl.event_class_code
10630 AND xes.active_flag = 'Y');
10631
10632 CURSOR c_der_sources IS
10633 SELECT distinct xjl.mpa_header_desc_type_code, xjl.mpa_header_desc_code,
10634 xdd.source_type_code, xdd.source_code
10635 FROM xla_descript_details_b xdd
10636 ,xla_desc_priorities xdp
10637 ,xla_line_defn_jlt_assgns xjl
10638 WHERE xdd.description_prio_id = xdp.description_prio_id
10639 AND xdp.application_id = xjl.application_id
10640 AND xdp.amb_context_code = xjl.amb_context_code
10641 AND xdp.description_type_code = xjl.mpa_header_desc_type_code
10642 AND xdp.description_code = xjl.mpa_header_desc_code
10643 AND xjl.application_id = p_application_id
10644 AND xjl.amb_context_code = p_amb_context_code
10645 AND xjl.event_class_code = p_event_class_code
10646 AND xjl.event_type_code = p_event_type_code
10647 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10648 AND xjl.line_definition_code = p_line_definition_code
10649 AND xjl.active_flag = 'Y'
10650 AND xdd.source_type_code = 'D';
10651
10652 l_return BOOLEAN;
10653 l_log_module VARCHAR2(240);
10654 BEGIN
10655 IF g_log_enabled THEN
10656 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_desc_inv_src_dtl';
10657 END IF;
10658
10659 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10660 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_desc_inv_src_dtl'
10661 ,p_module => l_log_module
10662 ,p_level => C_LEVEL_PROCEDURE);
10663 END IF;
10664
10665 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10666 trace(p_msg => 'application_id = '||p_application_id||
10667 ',amb_context_code = '||p_amb_context_code||
10668 ',event_class_code = '||p_event_class_code||
10669 ',event_type_code = '||p_event_type_code||
10670 ',line_definition_owner_code = '||p_line_definition_owner_code||
10671 ',line_definition_code = '||p_line_definition_code
10672 ,p_module => l_log_module
10673 ,p_level => C_LEVEL_STATEMENT);
10674 END IF;
10675
10676 l_return := TRUE;
10677
10678 FOR l_err IN c_invalid_sources LOOP
10679 l_return := FALSE;
10680
10681 xla_amb_setup_err_pkg.stack_error
10682 (p_message_name => 'XLA_AB_MPA_HDR_DES_DET_SRC'
10683 ,p_message_type => 'E'
10684 ,p_message_category => 'MPA_HDR_DESC'
10685 ,p_category_sequence => 15
10686 ,p_application_id => p_application_id
10687 ,p_amb_context_code => p_amb_context_code
10688 ,p_line_definition_owner_code => p_line_definition_owner_code
10689 ,p_line_definition_code => p_line_definition_code
10690 ,p_event_class_code => p_event_class_code
10691 ,p_event_type_code => p_event_type_code
10692 ,p_description_type_code => l_err.mpa_header_desc_type_code
10693 ,p_description_code => l_err.mpa_header_desc_code
10694 ,p_source_type_code => l_err.source_type_code
10695 ,p_source_code => l_err.source_code);
10696 END LOOP;
10697
10698 FOR l_err IN c_der_sources LOOP
10699 IF xla_sources_pkg.derived_source_is_invalid
10700 (p_application_id => p_application_id
10701 ,p_derived_source_code => l_err.source_code
10702 ,p_derived_source_type_code => 'D'
10703 ,p_event_class_code => p_event_class_code
10704 ,p_level => 'L') = 'TRUE' THEN
10705
10706 l_return := FALSE;
10707
10708 xla_amb_setup_err_pkg.stack_error
10709 (p_message_name => 'XLA_AB_MPA_HDR_DES_DET_SRC'
10710 ,p_message_type => 'E'
10711 ,p_message_category => 'MPA_HDR_DESC'
10712 ,p_category_sequence => 15
10713 ,p_application_id => p_application_id
10714 ,p_amb_context_code => p_amb_context_code
10715 ,p_line_definition_owner_code => p_line_definition_owner_code
10716 ,p_line_definition_code => p_line_definition_code
10717 ,p_event_class_code => p_event_class_code
10718 ,p_event_type_code => p_event_type_code
10719 ,p_description_type_code => l_err.mpa_header_desc_type_code
10720 ,p_description_code => l_err.mpa_header_desc_code
10721 ,p_source_type_code => l_err.source_type_code
10722 ,p_source_code => l_err.source_code);
10723
10724 END IF;
10725 END LOOP;
10726
10727
10728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10729 trace(p_msg => 'END of procedure chk_mpa_hdr_desc_inv_src_dtl'
10730 ,p_module => l_log_module
10731 ,p_level => C_LEVEL_PROCEDURE);
10732 END IF;
10733
10734 RETURN l_return;
10735
10736 EXCEPTION
10737 WHEN xla_exceptions_pkg.application_exception THEN
10738 RAISE;
10739
10740 WHEN OTHERS THEN
10741 xla_exceptions_pkg.raise_message
10742 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_desc_inv_src_dtl');
10743 END chk_mpa_hdr_desc_inv_src_dtl;
10744
10745 --=============================================================================
10746 --
10747 -- Name: chk_mpa_hdr_desc_inv_src_cond
10748 -- Description: Check if all mapping sets assigned to the line definition
10749 -- are enabled
10750 --
10751 --=============================================================================
10752 FUNCTION chk_mpa_hdr_desc_inv_src_cond
10753 (p_application_id IN NUMBER
10754 ,p_amb_context_code IN VARCHAR2
10755 ,p_event_class_code IN VARCHAR2
10756 ,p_event_type_code IN VARCHAR2
10757 ,p_line_definition_owner_code IN VARCHAR2
10758 ,p_line_definition_code IN VARCHAR2)
10759 RETURN BOOLEAN
10760 IS
10761 CURSOR c_invalid_sources IS
10762 SELECT distinct xjl.mpa_header_desc_type_code, xjl.mpa_header_desc_code,
10763 xco.source_type_code source_type_code, xco.source_code source_code
10764 FROM xla_conditions xco
10765 ,xla_desc_priorities xdp
10766 ,xla_line_defn_jlt_assgns xjl
10767 WHERE xco.description_prio_id = xdp.description_prio_id
10768 AND xdp.application_id = xjl.application_id
10769 AND xdp.amb_context_code = xjl.amb_context_code
10770 AND xdp.description_type_code = xjl.mpa_header_desc_type_code
10771 AND xdp.description_code = xjl.mpa_header_desc_code
10772 AND xjl.application_id = p_application_id
10773 AND xjl.amb_context_code = p_amb_context_code
10774 AND xjl.event_class_code = p_event_class_code
10775 AND xjl.event_type_code = p_event_type_code
10776 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10777 AND xjl.line_definition_code = p_line_definition_code
10778 AND xjl.active_flag = 'Y'
10779 AND xco.source_type_code = 'S'
10780 AND NOT EXISTS
10781 (SELECT 'y'
10782 FROM xla_event_sources xes
10783 WHERE xes.source_application_id = xco.source_application_id
10784 AND xes.source_type_code = xco.source_type_code
10785 AND xes.source_code = xco.source_code
10786 AND xes.application_id = xjl.application_id
10787 AND xes.event_class_code = xjl.event_class_code
10788 AND xes.active_flag = 'Y')
10789 UNION
10790 SELECT distinct xjl.mpa_header_desc_type_code, xjl.mpa_header_desc_code,
10791 xco.value_source_type_code source_type_code, xco.value_source_code source_code
10792 FROM xla_conditions xco
10793 ,xla_desc_priorities xdp
10794 ,xla_line_defn_jlt_assgns xjl
10795 WHERE xco.description_prio_id = xdp.description_prio_id
10796 AND xdp.application_id = xjl.application_id
10797 AND xdp.amb_context_code = xjl.amb_context_code
10798 AND xdp.description_type_code = xjl.mpa_header_desc_type_code
10799 AND xdp.description_code = xjl.mpa_header_desc_code
10800 AND xjl.application_id = p_application_id
10801 AND xjl.amb_context_code = p_amb_context_code
10802 AND xjl.event_class_code = p_event_class_code
10803 AND xjl.event_type_code = p_event_type_code
10804 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10805 AND xjl.line_definition_code = p_line_definition_code
10806 AND xjl.active_flag = 'Y'
10807 AND xco.value_source_type_code = 'S'
10808 AND NOT EXISTS
10809 (SELECT 'y'
10810 FROM xla_event_sources xes
10811 WHERE xes.source_application_id = xco.value_source_application_id
10812 AND xes.source_type_code = xco.value_source_type_code
10813 AND xes.source_code = xco.value_source_code
10814 AND xes.application_id = xjl.application_id
10815 AND xes.event_class_code = xjl.event_class_code
10816 AND xes.active_flag = 'Y');
10817
10818 CURSOR c_der_sources IS
10819 SELECT distinct xjl.mpa_header_desc_type_code, xjl.mpa_header_desc_code,
10820 xco.source_type_code source_type_code, xco.source_code source_code
10821 FROM xla_conditions xco
10822 ,xla_desc_priorities xdp
10823 ,xla_line_defn_jlt_assgns xjl
10824 WHERE xco.description_prio_id = xdp.description_prio_id
10825 AND xdp.application_id = xjl.application_id
10826 AND xdp.amb_context_code = xjl.amb_context_code
10827 AND xdp.description_type_code = xjl.mpa_header_desc_type_code
10828 AND xdp.description_code = xjl.mpa_header_desc_code
10829 AND xjl.application_id = p_application_id
10830 AND xjl.amb_context_code = p_amb_context_code
10831 AND xjl.event_class_code = p_event_class_code
10832 AND xjl.event_type_code = p_event_type_code
10833 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10834 AND xjl.line_definition_code = p_line_definition_code
10835 AND xjl.active_flag = 'Y'
10836 AND xco.source_type_code = 'D'
10837 UNION
10838 SELECT distinct xjl.mpa_header_desc_type_code, xjl.mpa_header_desc_code,
10839 xco.value_source_type_code source_type_code, xco.value_source_code source_code
10840 FROM xla_conditions xco
10841 ,xla_desc_priorities xdp
10842 ,xla_line_defn_jlt_assgns xjl
10843 WHERE xco.description_prio_id = xdp.description_prio_id
10844 AND xdp.application_id = xjl.application_id
10845 AND xdp.amb_context_code = xjl.amb_context_code
10846 AND xdp.description_type_code = xjl.mpa_header_desc_type_code
10847 AND xdp.description_code = xjl.mpa_header_desc_code
10848 AND xjl.application_id = p_application_id
10849 AND xjl.amb_context_code = p_amb_context_code
10850 AND xjl.event_class_code = p_event_class_code
10851 AND xjl.event_type_code = p_event_type_code
10852 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10853 AND xjl.line_definition_code = p_line_definition_code
10854 AND xjl.active_flag = 'Y'
10855 AND xco.value_source_type_code = 'D';
10856
10857 l_return BOOLEAN;
10858 l_log_module VARCHAR2(240);
10859 BEGIN
10860 IF g_log_enabled THEN
10861 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_desc_inv_src_cond';
10862 END IF;
10863
10864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10865 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_desc_inv_src_cond'
10866 ,p_module => l_log_module
10867 ,p_level => C_LEVEL_PROCEDURE);
10868 END IF;
10869
10870 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10871 trace(p_msg => 'application_id = '||p_application_id||
10872 ',amb_context_code = '||p_amb_context_code||
10873 ',event_class_code = '||p_event_class_code||
10874 ',event_type_code = '||p_event_type_code||
10875 ',line_definition_owner_code = '||p_line_definition_owner_code||
10876 ',line_definition_code = '||p_line_definition_code
10877 ,p_module => l_log_module
10878 ,p_level => C_LEVEL_STATEMENT);
10879 END IF;
10880
10881 l_return := TRUE;
10882
10883 FOR l_err IN c_invalid_sources LOOP
10884 l_return := FALSE;
10885
10886 xla_amb_setup_err_pkg.stack_error
10887 (p_message_name => 'XLA_AB_MPA_HDR_DES_CON_SRC'
10888 ,p_message_type => 'E'
10889 ,p_message_category => 'MPA_HDR_DESC'
10890 ,p_category_sequence => 15
10891 ,p_application_id => p_application_id
10892 ,p_amb_context_code => p_amb_context_code
10893 ,p_line_definition_owner_code => p_line_definition_owner_code
10894 ,p_line_definition_code => p_line_definition_code
10895 ,p_event_class_code => p_event_class_code
10896 ,p_event_type_code => p_event_type_code
10897 ,p_description_type_code => l_err.mpa_header_desc_type_code
10898 ,p_description_code => l_err.mpa_header_desc_code
10899 ,p_source_type_code => l_err.source_type_code
10900 ,p_source_code => l_err.source_code);
10901 END LOOP;
10902
10903 FOR l_err IN c_der_sources LOOP
10904 IF xla_sources_pkg.derived_source_is_invalid
10905 (p_application_id => p_application_id
10906 ,p_derived_source_code => l_err.source_code
10907 ,p_derived_source_type_code => 'D'
10908 ,p_event_class_code => p_event_class_code
10909 ,p_level => 'L') = 'TRUE' THEN
10910
10911 l_return := FALSE;
10912
10913 xla_amb_setup_err_pkg.stack_error
10914 (p_message_name => 'XLA_AB_MPA_HDR_DES_CON_SRC'
10915 ,p_message_type => 'E'
10916 ,p_message_category => 'MPA_HDR_DESC'
10917 ,p_category_sequence => 15
10918 ,p_application_id => p_application_id
10919 ,p_amb_context_code => p_amb_context_code
10920 ,p_line_definition_owner_code => p_line_definition_owner_code
10921 ,p_line_definition_code => p_line_definition_code
10922 ,p_event_class_code => p_event_class_code
10923 ,p_event_type_code => p_event_type_code
10924 ,p_description_type_code => l_err.mpa_header_desc_type_code
10925 ,p_description_code => l_err.mpa_header_desc_code
10926 ,p_source_type_code => l_err.source_type_code
10927 ,p_source_code => l_err.source_code);
10928
10929 END IF;
10930 END LOOP;
10931
10932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10933 trace(p_msg => 'END of procedure chk_mpa_hdr_desc_inv_src_cond'
10934 ,p_module => l_log_module
10935 ,p_level => C_LEVEL_PROCEDURE);
10936 END IF;
10937
10938 RETURN l_return;
10939
10940 EXCEPTION
10941 WHEN xla_exceptions_pkg.application_exception THEN
10942 RAISE;
10943
10944 WHEN OTHERS THEN
10945 xla_exceptions_pkg.raise_message
10946 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_desc_inv_src_cond');
10947 END chk_mpa_hdr_desc_inv_src_cond;
10948
10949 --=============================================================================
10950 --
10951 -- Name: chk_mpa_hdr_ac_is_enabled
10952 -- Description: Check if all mapping sets assigned to the line definition
10953 -- are enabled
10954 --
10955 --=============================================================================
10956 FUNCTION chk_mpa_hdr_ac_is_enabled
10957 (p_application_id IN NUMBER
10958 ,p_amb_context_code IN VARCHAR2
10959 ,p_event_class_code IN VARCHAR2
10960 ,p_event_type_code IN VARCHAR2
10961 ,p_line_definition_owner_code IN VARCHAR2
10962 ,p_line_definition_code IN VARCHAR2)
10963 RETURN BOOLEAN
10964 IS
10965 CURSOR c_invalid_line_ac IS
10966 SELECT distinct xah.analytical_criterion_type_code, xah.analytical_criterion_code
10967 FROM xla_mpa_header_ac_assgns xac
10968 ,xla_line_defn_jlt_assgns xjl
10969 ,xla_analytical_hdrs_b xah
10970 WHERE xah.amb_context_code = xac.amb_context_code
10971 AND xah.analytical_criterion_code = xac.analytical_criterion_code
10972 AND xah.analytical_criterion_type_code = xac.analytical_criterion_type_code
10973 AND xah.enabled_flag <> 'Y'
10974 AND xac.application_id = xjl.application_id
10975 AND xac.amb_context_code = xjl.amb_context_code
10976 AND xac.event_class_code = xjl.event_class_code
10977 AND xac.event_type_code = xjl.event_type_code
10978 AND xac.line_definition_code = xjl.line_definition_code
10979 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
10980 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
10981 AND xac.accounting_line_code = xjl.accounting_line_code
10982 AND xjl.application_id = p_application_id
10983 AND xjl.amb_context_code = p_amb_context_code
10984 AND xjl.event_class_code = p_event_class_code
10985 AND xjl.event_type_code = p_event_type_code
10986 AND xjl.line_definition_owner_code = p_line_definition_owner_code
10987 AND xjl.line_definition_code = p_line_definition_code
10988 AND xjl.active_flag = 'Y';
10989
10990 l_return BOOLEAN;
10991 l_log_module VARCHAR2(240);
10992 BEGIN
10993 IF g_log_enabled THEN
10994 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_ac_is_enabled';
10995 END IF;
10996
10997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10998 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_ac_is_enabled'
10999 ,p_module => l_log_module
11000 ,p_level => C_LEVEL_PROCEDURE);
11001 END IF;
11002
11003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11004 trace(p_msg => 'application_id = '||p_application_id||
11005 ',amb_context_code = '||p_amb_context_code||
11006 ',event_class_code = '||p_event_class_code||
11007 ',event_type_code = '||p_event_type_code||
11008 ',line_definition_owner_code = '||p_line_definition_owner_code||
11009 ',line_definition_code = '||p_line_definition_code
11010 ,p_module => l_log_module
11011 ,p_level => C_LEVEL_STATEMENT);
11012 END IF;
11013
11014 l_return := TRUE;
11015
11016 FOR l_err IN c_invalid_line_ac LOOP
11017 l_return := FALSE;
11018
11019 xla_amb_setup_err_pkg.stack_error
11020 (p_message_name => 'XLA_AB_MPA_DISABLD_HDR_AC'
11021 ,p_message_type => 'E'
11022 ,p_message_category => 'MPA_HDR_AC'
11023 ,p_category_sequence => 16
11024 ,p_application_id => p_application_id
11025 ,p_amb_context_code => p_amb_context_code
11026 ,p_event_class_code => p_event_class_code
11027 ,p_event_type_code => p_event_type_code
11028 ,p_line_definition_owner_code => p_line_definition_owner_code
11029 ,p_line_definition_code => p_line_definition_code
11030 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
11031 ,p_anal_criterion_code => l_err.analytical_criterion_code);
11032 END LOOP;
11033
11034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11035 trace(p_msg => 'END of procedure chk_mpa_hdr_ac_is_enabled'
11036 ,p_module => l_log_module
11037 ,p_level => C_LEVEL_PROCEDURE);
11038 END IF;
11039
11040 RETURN l_return;
11041
11042 EXCEPTION
11043 WHEN xla_exceptions_pkg.application_exception THEN
11044 RAISE;
11045
11046 WHEN OTHERS THEN
11047 xla_exceptions_pkg.raise_message
11048 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_ac_is_enabled');
11049 END chk_mpa_hdr_ac_is_enabled;
11050
11051 --=============================================================================
11052 --
11053 -- Name: chk_mpa_hdr_ac_bal
11054 -- Description: Check if all mapping sets assigned to the line definition
11055 -- are enabled
11056 --
11057 --=============================================================================
11058 FUNCTION chk_mpa_hdr_ac_bal
11059 (p_application_id IN NUMBER
11060 ,p_amb_context_code IN VARCHAR2
11061 ,p_event_class_code IN VARCHAR2
11062 ,p_event_type_code IN VARCHAR2
11063 ,p_line_definition_owner_code IN VARCHAR2
11064 ,p_line_definition_code IN VARCHAR2)
11065 RETURN BOOLEAN
11066 IS
11067 CURSOR c_invalid_line_ac IS
11068 SELECT distinct xah.analytical_criterion_type_code, xah.analytical_criterion_code
11069 FROM xla_mpa_header_ac_assgns xac
11070 ,xla_line_defn_jlt_assgns xjl
11071 ,xla_analytical_hdrs_b xah
11072 WHERE xah.amb_context_code = xac.amb_context_code
11073 AND xah.analytical_criterion_code = xac.analytical_criterion_code
11074 AND xah.analytical_criterion_type_code = xac.analytical_criterion_type_code
11075 AND xah.balancing_flag = 'Y'
11076 AND xac.application_id = xjl.application_id
11077 AND xac.amb_context_code = xjl.amb_context_code
11078 AND xac.event_class_code = xjl.event_class_code
11079 AND xac.event_type_code = xjl.event_type_code
11080 AND xac.line_definition_code = xjl.line_definition_code
11081 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
11082 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
11083 AND xac.accounting_line_code = xjl.accounting_line_code
11084 AND xjl.application_id = p_application_id
11085 AND xjl.amb_context_code = p_amb_context_code
11086 AND xjl.event_class_code = p_event_class_code
11087 AND xjl.event_type_code = p_event_type_code
11088 AND xjl.line_definition_owner_code = p_line_definition_owner_code
11089 AND xjl.line_definition_code = p_line_definition_code
11090 AND xjl.active_flag = 'Y';
11091
11092 l_return BOOLEAN;
11093 l_log_module VARCHAR2(240);
11094 BEGIN
11095 IF g_log_enabled THEN
11096 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_ac_bal';
11097 END IF;
11098
11099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11100 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_ac_bal'
11101 ,p_module => l_log_module
11102 ,p_level => C_LEVEL_PROCEDURE);
11103 END IF;
11104
11105 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11106 trace(p_msg => 'application_id = '||p_application_id||
11107 ',amb_context_code = '||p_amb_context_code||
11108 ',event_class_code = '||p_event_class_code||
11109 ',event_type_code = '||p_event_type_code||
11110 ',line_definition_owner_code = '||p_line_definition_owner_code||
11111 ',line_definition_code = '||p_line_definition_code
11112 ,p_module => l_log_module
11113 ,p_level => C_LEVEL_STATEMENT);
11114 END IF;
11115
11116 l_return := TRUE;
11117
11118 FOR l_err IN c_invalid_line_ac LOOP
11119 l_return := FALSE;
11120
11121 xla_amb_setup_err_pkg.stack_error
11122 (p_message_name => 'XLA_AB_MPA_ANC_MAINTAIN_BAL'
11123 ,p_message_type => 'E'
11124 ,p_message_category => 'MPA_HDR_AC'
11125 ,p_category_sequence => 16
11126 ,p_application_id => p_application_id
11127 ,p_amb_context_code => p_amb_context_code
11128 ,p_event_class_code => p_event_class_code
11129 ,p_event_type_code => p_event_type_code
11130 ,p_line_definition_owner_code => p_line_definition_owner_code
11131 ,p_line_definition_code => p_line_definition_code
11132 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
11133 ,p_anal_criterion_code => l_err.analytical_criterion_code);
11134 END LOOP;
11135
11136 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11137 trace(p_msg => 'END of procedure chk_mpa_hdr_ac_bal'
11138 ,p_module => l_log_module
11139 ,p_level => C_LEVEL_PROCEDURE);
11140 END IF;
11141
11142 RETURN l_return;
11143
11144 EXCEPTION
11145 WHEN xla_exceptions_pkg.application_exception THEN
11146 RAISE;
11147
11148 WHEN OTHERS THEN
11149 xla_exceptions_pkg.raise_message
11150 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_ac_bal');
11151 END chk_mpa_hdr_ac_bal;
11152
11153 --=============================================================================
11154 --
11155 -- Name: chk_mpa_hdr_ac_has_details
11156 -- Description: Check if all mapping sets assigned to the line definition
11157 -- are enabled
11158 --
11159 --=============================================================================
11160 FUNCTION chk_mpa_hdr_ac_has_details
11161 (p_application_id IN NUMBER
11162 ,p_amb_context_code IN VARCHAR2
11163 ,p_event_class_code IN VARCHAR2
11164 ,p_event_type_code IN VARCHAR2
11165 ,p_line_definition_owner_code IN VARCHAR2
11166 ,p_line_definition_code IN VARCHAR2)
11167 RETURN BOOLEAN
11168 IS
11169 CURSOR c_invalid_ac IS
11170 SELECT distinct xac.analytical_criterion_type_code, xac.analytical_criterion_code
11171 FROM xla_mpa_header_ac_assgns xac
11172 ,xla_line_defn_jlt_assgns xjl
11173 WHERE xac.application_id = xjl.application_id
11174 AND xac.amb_context_code = xjl.amb_context_code
11175 AND xac.event_class_code = xjl.event_class_code
11176 AND xac.event_type_code = xjl.event_type_code
11177 AND xac.line_definition_code = xjl.line_definition_code
11178 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
11179 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
11180 AND xac.accounting_line_code = xjl.accounting_line_code
11181 AND xjl.application_id = p_application_id
11182 AND xjl.amb_context_code = p_amb_context_code
11183 AND xjl.event_class_code = p_event_class_code
11184 AND xjl.event_type_code = p_event_type_code
11185 AND xjl.line_definition_owner_code = p_line_definition_owner_code
11186 AND xjl.line_definition_code = p_line_definition_code
11187 AND xjl.active_flag = 'Y'
11188 AND NOT EXISTS
11189 (SELECT 'x'
11190 FROM xla_analytical_sources xas
11191 WHERE xas.application_id = xac.application_id
11192 AND xas.amb_context_code = xac.amb_context_code
11193 AND xas.event_class_code = xac.event_class_code
11194 AND xas.analytical_criterion_code = xac.analytical_criterion_code
11195 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code);
11196
11197 l_return BOOLEAN;
11198 l_log_module VARCHAR2(240);
11199 BEGIN
11200 IF g_log_enabled THEN
11201 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_ac_has_details';
11202 END IF;
11203
11204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11205 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_ac_has_details'
11206 ,p_module => l_log_module
11207 ,p_level => C_LEVEL_PROCEDURE);
11208 END IF;
11209
11210 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11211 trace(p_msg => 'application_id = '||p_application_id||
11212 ',amb_context_code = '||p_amb_context_code||
11213 ',event_class_code = '||p_event_class_code||
11214 ',event_type_code = '||p_event_type_code||
11215 ',line_definition_owner_code = '||p_line_definition_owner_code||
11216 ',line_definition_code = '||p_line_definition_code
11217 ,p_module => l_log_module
11218 ,p_level => C_LEVEL_STATEMENT);
11219 END IF;
11220
11221 l_return := TRUE;
11222
11223 FOR l_err IN c_invalid_ac LOOP
11224 l_return := FALSE;
11225
11226 xla_amb_setup_err_pkg.stack_error
11227 (p_message_name => 'XLA_AB_MPA_HDR_ANC_NO_DETAIL'
11228 ,p_message_type => 'E'
11229 ,p_message_category => 'MPA_HDR_AC'
11230 ,p_category_sequence => 16
11231 ,p_application_id => p_application_id
11232 ,p_amb_context_code => p_amb_context_code
11233 ,p_event_class_code => p_event_class_code
11234 ,p_event_type_code => p_event_type_code
11235 ,p_line_definition_owner_code => p_line_definition_owner_code
11236 ,p_line_definition_code => p_line_definition_code
11237 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
11238 ,p_anal_criterion_code => l_err.analytical_criterion_code);
11239 END LOOP;
11240
11241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11242 trace(p_msg => 'END of procedure chk_mpa_hdr_ac_has_details'
11243 ,p_module => l_log_module
11244 ,p_level => C_LEVEL_PROCEDURE);
11245 END IF;
11246
11247 RETURN l_return;
11248
11249 EXCEPTION
11250 WHEN xla_exceptions_pkg.application_exception THEN
11251 RAISE;
11252
11253 WHEN OTHERS THEN
11254 xla_exceptions_pkg.raise_message
11255 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_ac_has_details');
11256 END chk_mpa_hdr_ac_has_details;
11257
11258 --=============================================================================
11259 --
11260 -- Name: chk_mpa_hdr_ac_inv_sources
11261 -- Description: Check if all mapping sets assigned to the line definition
11262 -- are enabled
11263 --
11264 --=============================================================================
11265 FUNCTION chk_mpa_hdr_ac_inv_sources
11266 (p_application_id IN NUMBER
11267 ,p_amb_context_code IN VARCHAR2
11268 ,p_event_class_code IN VARCHAR2
11269 ,p_event_type_code IN VARCHAR2
11270 ,p_line_definition_owner_code IN VARCHAR2
11271 ,p_line_definition_code IN VARCHAR2)
11272 RETURN BOOLEAN
11273 IS
11274 CURSOR c_invalid_sources IS
11275 SELECT distinct xas.analytical_criterion_type_code, xas.analytical_criterion_code,
11276 xas.source_code, xas.source_type_code
11277 FROM xla_analytical_sources xas
11278 ,xla_mpa_header_ac_assgns xac
11279 ,xla_line_defn_jlt_assgns xjl
11280 ,xla_event_sources xes
11281 WHERE xas.application_id = xac.application_id
11282 AND xas.amb_context_code = xac.amb_context_code
11283 AND xas.event_class_code = xac.event_class_code
11284 AND xas.analytical_criterion_code = xac.analytical_criterion_code
11285 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code
11286 AND xas.source_type_code = 'S'
11287 AND xac.application_id = xjl.application_id
11288 AND xac.amb_context_code = xjl.amb_context_code
11289 AND xac.event_class_code = xjl.event_class_code
11290 AND xac.event_type_code = xjl.event_type_code
11291 AND xac.line_definition_code = xjl.line_definition_code
11292 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
11293 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
11294 AND xac.accounting_line_code = xjl.accounting_line_code
11295 AND xjl.application_id = p_application_id
11296 AND xjl.amb_context_code = p_amb_context_code
11297 AND xjl.event_class_code = p_event_class_code
11298 AND xjl.event_type_code = p_event_type_code
11299 AND xjl.line_definition_owner_code = p_line_definition_owner_code
11300 AND xjl.line_definition_code = p_line_definition_code
11301 AND xjl.active_flag = 'Y'
11302 AND not exists (SELECT 'y'
11303 FROM xla_event_sources xes
11304 WHERE xes.source_application_id = xas.source_application_id
11305 AND xes.source_type_code = xas.source_type_code
11306 AND xes.source_code = xas.source_code
11307 AND xes.application_id = xas.application_id
11308 AND xes.event_class_code = xas.event_class_code
11309 AND xes.active_flag = 'Y');
11310
11311 CURSOR c_der_sources IS
11312 SELECT distinct xas.analytical_criterion_type_code, xas.analytical_criterion_code,
11313 xas.source_code, xas.source_type_code
11314 FROM xla_analytical_sources xas
11315 ,xla_mpa_header_ac_assgns xac
11316 ,xla_line_defn_jlt_assgns xjl
11317 WHERE xas.application_id = xac.application_id
11318 AND xas.amb_context_code = xac.amb_context_code
11319 AND xas.event_class_code = xac.event_class_code
11320 AND xas.analytical_criterion_code = xac.analytical_criterion_code
11321 AND xas.analytical_criterion_type_code = xac.analytical_criterion_type_code
11322 AND xas.source_type_code = 'D'
11323 AND xac.application_id = xjl.application_id
11324 AND xac.amb_context_code = xjl.amb_context_code
11325 AND xac.event_class_code = xjl.event_class_code
11326 AND xac.event_type_code = xjl.event_type_code
11327 AND xac.line_definition_code = xjl.line_definition_code
11328 AND xac.line_definition_owner_code = xjl.line_definition_owner_code
11329 AND xac.accounting_line_type_code = xjl.accounting_line_type_code
11330 AND xac.accounting_line_code = xjl.accounting_line_code
11331 AND xjl.application_id = p_application_id
11332 AND xjl.amb_context_code = p_amb_context_code
11333 AND xjl.event_class_code = p_event_class_code
11334 AND xjl.event_type_code = p_event_type_code
11335 AND xjl.line_definition_owner_code = p_line_definition_owner_code
11336 AND xjl.line_definition_code = p_line_definition_code
11337 AND xjl.active_flag = 'Y';
11338
11339 l_return BOOLEAN;
11340 l_log_module VARCHAR2(240);
11341 BEGIN
11342 IF g_log_enabled THEN
11343 l_log_module := C_DEFAULT_MODULE||'.chk_mpa_hdr_ac_inv_sources';
11344 END IF;
11345
11346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11347 trace(p_msg => 'BEGIN of procedure chk_mpa_hdr_ac_inv_sources'
11348 ,p_module => l_log_module
11349 ,p_level => C_LEVEL_PROCEDURE);
11350 END IF;
11351
11352 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11353 trace(p_msg => 'application_id = '||p_application_id||
11354 ',amb_context_code = '||p_amb_context_code||
11355 ',event_class_code = '||p_event_class_code||
11356 ',event_type_code = '||p_event_type_code||
11357 ',line_definition_owner_code = '||p_line_definition_owner_code||
11358 ',line_definition_code = '||p_line_definition_code
11359 ,p_module => l_log_module
11360 ,p_level => C_LEVEL_STATEMENT);
11361 END IF;
11362
11363 l_return := TRUE;
11364
11365 FOR l_err IN c_invalid_sources LOOP
11366
11367 l_return := FALSE;
11368 xla_amb_setup_err_pkg.stack_error
11369 (p_message_name => 'XLA_AB_MPA_HDR_ANC_SOURCE'
11370 ,p_message_type => 'E'
11371 ,p_message_category => 'MPA_HDR_AC'
11372 ,p_category_sequence => 16
11373 ,p_application_id => p_application_id
11374 ,p_amb_context_code => p_amb_context_code
11375 ,p_event_class_code => p_event_class_code
11376 ,p_event_type_code => p_event_type_code
11377 ,p_line_definition_owner_code => p_line_definition_owner_code
11378 ,p_line_definition_code => p_line_definition_code
11379 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
11380 ,p_anal_criterion_code => l_err.analytical_criterion_code
11381 ,p_source_code => l_err.source_code
11382 ,p_source_type_code => l_err.source_type_code);
11383 END LOOP;
11384
11385 FOR l_err IN c_der_sources LOOP
11386 IF xla_sources_pkg.derived_source_is_invalid
11387 (p_application_id => p_application_id
11388 ,p_derived_source_code => l_err.source_code
11389 ,p_derived_source_type_code => 'D'
11390 ,p_event_class_code => p_event_class_code
11391 ,p_level => 'L') = 'TRUE' THEN
11392
11393 l_return := FALSE;
11394 xla_amb_setup_err_pkg.stack_error
11395 (p_message_name => 'XLA_AB_MPA_HDR_ANC_SOURCE'
11396 ,p_message_type => 'E'
11397 ,p_message_category => 'MPA_HDR_AC'
11398 ,p_category_sequence => 16
11399 ,p_application_id => p_application_id
11400 ,p_amb_context_code => p_amb_context_code
11401 ,p_event_class_code => p_event_class_code
11402 ,p_event_type_code => p_event_type_code
11403 ,p_line_definition_owner_code => p_line_definition_owner_code
11404 ,p_line_definition_code => p_line_definition_code
11405 ,p_anal_criterion_type_code => l_err.analytical_criterion_type_code
11406 ,p_anal_criterion_code => l_err.analytical_criterion_code
11407 ,p_source_code => l_err.source_code
11408 ,p_source_type_code => l_err.source_type_code);
11409 END IF;
11410 END LOOP;
11411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11412 trace(p_msg => 'END of procedure chk_mpa_hdr_ac_inv_sources'
11413 ,p_module => l_log_module
11414 ,p_level => C_LEVEL_PROCEDURE);
11415 END IF;
11416
11417 RETURN l_return;
11418
11419 EXCEPTION
11420 WHEN xla_exceptions_pkg.application_exception THEN
11421 RAISE;
11422
11423 WHEN OTHERS THEN
11424 xla_exceptions_pkg.raise_message
11425 (p_location => 'xla_line_definitions_pvt.chk_mpa_hdr_ac_inv_sources');
11426 END chk_mpa_hdr_ac_inv_sources;
11427
11428
11429 --=============================================================================
11430 --
11431 -- Name: validate_mpa_header_assgns
11432 -- Description: Validate MPA Header assignment of the line definition
11433 --
11434 --=============================================================================
11435 FUNCTION validate_mpa_header_assgns
11436 (p_application_id IN NUMBER
11437 ,p_amb_context_code IN VARCHAR2
11438 ,p_event_class_code IN VARCHAR2
11439 ,p_event_type_code IN VARCHAR2
11440 ,p_line_definition_owner_code IN VARCHAR2
11441 ,p_line_definition_code IN VARCHAR2)
11442 RETURN BOOLEAN
11443 IS
11444 l_return BOOLEAN;
11445 l_log_module VARCHAR2(240);
11446 BEGIN
11447 IF g_log_enabled THEN
11448 l_log_module := C_DEFAULT_MODULE||'.validate_mpa_header_assgns';
11449 END IF;
11450
11451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11452 trace(p_msg => 'BEGIN of procedure validate_mpa_header_assgns'
11453 ,p_module => l_log_module
11454 ,p_level => C_LEVEL_PROCEDURE);
11455 END IF;
11456
11457 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11458 trace(p_msg => 'application_id = '||p_application_id||
11459 ',amb_context_code = '||p_amb_context_code||
11460 ',event_class_code = '||p_event_class_code||
11461 ',event_type_code = '||p_event_type_code||
11462 ',line_definition_owner_code = '||p_line_definition_owner_code||
11463 ',line_definition_code = '||p_line_definition_code
11464 ,p_module => l_log_module
11465 ,p_level => C_LEVEL_STATEMENT);
11466 END IF;
11467
11468 l_return := TRUE;
11469
11470 l_return := chk_mpa_hdr_desc_is_enabled
11471 (p_application_id => p_application_id
11472 ,p_amb_context_code => p_amb_context_code
11473 ,p_event_class_code => p_event_class_code
11474 ,p_event_type_code => p_event_type_code
11475 ,p_line_definition_owner_code => p_line_definition_owner_code
11476 ,p_line_definition_code => p_line_definition_code)
11477 AND l_return;
11478
11479 l_return := chk_mpa_hdr_desc_inv_src_cond
11480 (p_application_id => p_application_id
11481 ,p_amb_context_code => p_amb_context_code
11482 ,p_event_class_code => p_event_class_code
11483 ,p_event_type_code => p_event_type_code
11484 ,p_line_definition_owner_code => p_line_definition_owner_code
11485 ,p_line_definition_code => p_line_definition_code)
11486 AND l_return;
11487
11488 l_return := chk_mpa_hdr_desc_inv_src_dtl
11489 (p_application_id => p_application_id
11490 ,p_amb_context_code => p_amb_context_code
11491 ,p_event_class_code => p_event_class_code
11492 ,p_event_type_code => p_event_type_code
11493 ,p_line_definition_owner_code => p_line_definition_owner_code
11494 ,p_line_definition_code => p_line_definition_code)
11495 AND l_return;
11496
11497 l_return := chk_mpa_hdr_ac_is_enabled
11498 (p_application_id => p_application_id
11499 ,p_amb_context_code => p_amb_context_code
11500 ,p_event_class_code => p_event_class_code
11501 ,p_event_type_code => p_event_type_code
11502 ,p_line_definition_owner_code => p_line_definition_owner_code
11503 ,p_line_definition_code => p_line_definition_code)
11504 AND l_return;
11505
11506 l_return := chk_mpa_hdr_ac_bal
11507 (p_application_id => p_application_id
11508 ,p_amb_context_code => p_amb_context_code
11509 ,p_event_class_code => p_event_class_code
11510 ,p_event_type_code => p_event_type_code
11511 ,p_line_definition_owner_code => p_line_definition_owner_code
11512 ,p_line_definition_code => p_line_definition_code)
11513 AND l_return;
11514
11515 l_return := chk_mpa_hdr_ac_has_details
11516 (p_application_id => p_application_id
11517 ,p_amb_context_code => p_amb_context_code
11518 ,p_event_class_code => p_event_class_code
11519 ,p_event_type_code => p_event_type_code
11520 ,p_line_definition_owner_code => p_line_definition_owner_code
11521 ,p_line_definition_code => p_line_definition_code)
11522 AND l_return;
11523
11524 l_return := chk_mpa_hdr_ac_inv_sources
11525 (p_application_id => p_application_id
11526 ,p_amb_context_code => p_amb_context_code
11527 ,p_event_class_code => p_event_class_code
11528 ,p_event_type_code => p_event_type_code
11529 ,p_line_definition_owner_code => p_line_definition_owner_code
11530 ,p_line_definition_code => p_line_definition_code)
11531 AND l_return;
11532
11533 RETURN l_return;
11534
11535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11536 trace(p_msg => 'END of procedure validate_mpa_header_assgns'
11537 ,p_module => l_log_module
11538 ,p_level => C_LEVEL_PROCEDURE);
11539 END IF;
11540
11541 RETURN l_return;
11542
11543 EXCEPTION
11544 WHEN xla_exceptions_pkg.application_exception THEN
11545 RAISE;
11546 WHEN OTHERS THEN
11547 xla_exceptions_pkg.raise_message
11548 (p_location => 'xla_line_definitions_pvt.validate_mpa_header_assgns');
11549 END validate_mpa_header_assgns;
11550
11551
11552
11553 --=============================================================================
11554 --
11555 --
11556 --
11557 --
11558 --
11559 -- *********** public procedures and functions **********
11560 --
11561 --
11562 --
11563 --
11564 --
11565 --=============================================================================
11566
11567
11568 --=============================================================================
11569 --
11570 -- Name: delete_line_defn_details
11571 -- Description: Deletes all details of the line definition
11572 --
11573 --=============================================================================
11574 PROCEDURE delete_line_defn_details
11575 (p_application_id IN NUMBER
11576 ,p_amb_context_code IN VARCHAR2
11577 ,p_event_class_code IN VARCHAR2
11578 ,p_event_type_code IN VARCHAR2
11579 ,p_line_definition_owner_code IN VARCHAR2
11580 ,p_line_definition_code IN VARCHAR2)
11581 IS
11582 l_log_module VARCHAR2(240);
11583 BEGIN
11584 IF g_log_enabled THEN
11585 l_log_module := C_DEFAULT_MODULE||'.delete_line_defn_details';
11586 END IF;
11587
11588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11589 trace(p_msg => 'BEGIN of procedure delete_line_defn_details'
11590 ,p_module => l_log_module
11591 ,p_level => C_LEVEL_PROCEDURE);
11592 END IF;
11593
11594 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11595 trace(p_msg => 'application_id = '||p_application_id||
11596 ',amb_context_code = '||p_amb_context_code||
11597 ',event_class_code = '||p_event_class_code||
11598 ',event_type_code = '||p_event_type_code||
11599 ',line_definition_owner_code = '||p_line_definition_owner_code||
11600 ',line_definition_code = '||p_line_definition_code
11601 ,p_module => l_log_module
11602 ,p_level => C_LEVEL_STATEMENT);
11603 END IF;
11604
11605 DELETE
11606 FROM xla_line_defn_adr_assgns
11607 WHERE application_id = p_application_id
11608 AND amb_context_code = p_amb_context_code
11609 AND event_class_code = p_event_class_code
11610 AND event_type_code = p_event_type_code
11611 AND line_definition_owner_code = p_line_definition_owner_code
11612 AND line_definition_code = p_line_definition_code;
11613
11614 DELETE
11615 FROM xla_line_defn_ac_assgns
11616 WHERE application_id = p_application_id
11617 AND amb_context_code = p_amb_context_code
11618 AND event_class_code = p_event_class_code
11619 AND event_type_code = p_event_type_code
11620 AND line_definition_owner_code = p_line_definition_owner_code
11621 AND line_definition_code = p_line_definition_code;
11622
11623 DELETE
11624 FROM xla_line_defn_jlt_assgns
11625 WHERE application_id = p_application_id
11626 AND amb_context_code = p_amb_context_code
11627 AND event_class_code = p_event_class_code
11628 AND event_type_code = p_event_type_code
11629 AND line_definition_owner_code = p_line_definition_owner_code
11630 AND line_definition_code = p_line_definition_code;
11631
11632 DELETE
11633 FROM xla_mpa_header_ac_assgns
11634 WHERE application_id = p_application_id
11635 AND amb_context_code = p_amb_context_code
11636 AND event_class_code = p_event_class_code
11637 AND event_type_code = p_event_type_code
11638 AND line_definition_owner_code = p_line_definition_owner_code
11639 AND line_definition_code = p_line_definition_code;
11640
11641 DELETE
11642 FROM xla_mpa_jlt_assgns
11643 WHERE application_id = p_application_id
11644 AND amb_context_code = p_amb_context_code
11645 AND event_class_code = p_event_class_code
11646 AND event_type_code = p_event_type_code
11647 AND line_definition_owner_code = p_line_definition_owner_code
11648 AND line_definition_code = p_line_definition_code;
11649
11650 DELETE
11651 FROM xla_mpa_jlt_adr_assgns
11652 WHERE application_id = p_application_id
11653 AND amb_context_code = p_amb_context_code
11654 AND event_class_code = p_event_class_code
11655 AND event_type_code = p_event_type_code
11656 AND line_definition_owner_code = p_line_definition_owner_code
11657 AND line_definition_code = p_line_definition_code;
11658
11659 DELETE
11660 FROM xla_mpa_jlt_ac_assgns
11661 WHERE application_id = p_application_id
11662 AND amb_context_code = p_amb_context_code
11663 AND event_class_code = p_event_class_code
11664 AND event_type_code = p_event_type_code
11665 AND line_definition_owner_code = p_line_definition_owner_code
11666 AND line_definition_code = p_line_definition_code;
11667
11668
11669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11670 trace(p_msg => 'END of procedure delete_line_defn_details'
11671 ,p_module => l_log_module
11672 ,p_level => C_LEVEL_PROCEDURE);
11673 END IF;
11674
11675 EXCEPTION
11676 WHEN xla_exceptions_pkg.application_exception THEN
11677 RAISE;
11678 WHEN OTHERS THEN
11679 xla_exceptions_pkg.raise_message
11680 (p_location => 'xla_line_definitions_pvt.delete_line_defn_details');
11681 END delete_line_defn_details;
11682
11683 --=============================================================================
11684 --
11685 -- Name: delete_line_defn_jlt_details
11686 -- Description: Deletes all details of the line assignment
11687 --
11688 --=============================================================================
11689 PROCEDURE delete_line_defn_jlt_details
11690 (p_application_id IN NUMBER
11691 ,p_amb_context_code IN VARCHAR2
11692 ,p_event_class_code IN VARCHAR2
11693 ,p_event_type_code IN VARCHAR2
11694 ,p_line_definition_owner_code IN VARCHAR2
11695 ,p_line_definition_code IN VARCHAR2
11696 ,p_accounting_line_type_code IN VARCHAR2
11697 ,p_accounting_line_code IN VARCHAR2)
11698 IS
11699 l_log_module VARCHAR2(240);
11700 BEGIN
11701 IF g_log_enabled THEN
11702 l_log_module := C_DEFAULT_MODULE||'.delete_line_defn_jlt_details';
11703 END IF;
11704
11705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11706 trace(p_msg => 'BEGIN of procedure delete_line_defn_jlt_details'
11707 ,p_module => l_log_module
11708 ,p_level => C_LEVEL_PROCEDURE);
11709 END IF;
11710
11711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11712 trace(p_msg => 'application_id = '||p_application_id||
11713 ',amb_context_code = '||p_amb_context_code||
11714 ',event_class_code = '||p_event_class_code||
11715 ',event_type_code = '||p_event_type_code||
11716 ',line_definition_owner_code = '||p_line_definition_owner_code||
11717 ',line_definition_code = '||p_line_definition_code||
11718 ',accounting_line_type_code = '||p_accounting_line_type_code||
11719 ',accounting_line_code = '||p_accounting_line_code
11720 ,p_module => l_log_module
11721 ,p_level => C_LEVEL_STATEMENT);
11722 END IF;
11723
11724 DELETE
11725 FROM xla_line_defn_adr_assgns
11726 WHERE application_id = p_application_id
11727 AND amb_context_code = p_amb_context_code
11728 AND event_class_code = p_event_class_code
11729 AND event_type_code = p_event_type_code
11730 AND line_definition_owner_code = p_line_definition_owner_code
11731 AND line_definition_code = p_line_definition_code
11732 AND accounting_line_type_code = p_accounting_line_type_code
11733 AND accounting_line_code = p_accounting_line_code;
11734
11735 DELETE
11736 FROM xla_line_defn_ac_assgns
11737 WHERE application_id = p_application_id
11738 AND amb_context_code = p_amb_context_code
11739 AND event_class_code = p_event_class_code
11740 AND event_type_code = p_event_type_code
11741 AND line_definition_owner_code = p_line_definition_owner_code
11742 AND line_definition_code = p_line_definition_code
11743 AND accounting_line_type_code = p_accounting_line_type_code
11744 AND accounting_line_code = p_accounting_line_code;
11745
11746 -- Added for MPA project. 4262811.
11747 DELETE
11748 FROM xla_mpa_header_ac_assgns
11749 WHERE application_id = p_application_id
11750 AND amb_context_code = p_amb_context_code
11751 AND event_class_code = p_event_class_code
11752 AND event_type_code = p_event_type_code
11753 AND line_definition_owner_code = p_line_definition_owner_code
11754 AND line_definition_code = p_line_definition_code
11755 AND accounting_line_type_code = p_accounting_line_type_code
11756 AND accounting_line_code = p_accounting_line_code;
11757
11758 DELETE
11759 FROM xla_mpa_jlt_assgns
11760 WHERE application_id = p_application_id
11761 AND amb_context_code = p_amb_context_code
11762 AND event_class_code = p_event_class_code
11763 AND event_type_code = p_event_type_code
11764 AND line_definition_owner_code = p_line_definition_owner_code
11765 AND line_definition_code = p_line_definition_code
11766 AND accounting_line_type_code = p_accounting_line_type_code
11767 AND accounting_line_code = p_accounting_line_code;
11768
11769 DELETE
11770 FROM xla_mpa_jlt_adr_assgns
11771 WHERE application_id = p_application_id
11772 AND amb_context_code = p_amb_context_code
11773 AND event_class_code = p_event_class_code
11774 AND event_type_code = p_event_type_code
11775 AND line_definition_owner_code = p_line_definition_owner_code
11776 AND line_definition_code = p_line_definition_code
11777 AND accounting_line_type_code = p_accounting_line_type_code
11778 AND accounting_line_code = p_accounting_line_code;
11779
11780 DELETE
11781 FROM xla_mpa_jlt_ac_assgns
11782 WHERE application_id = p_application_id
11783 AND amb_context_code = p_amb_context_code
11784 AND event_class_code = p_event_class_code
11785 AND event_type_code = p_event_type_code
11786 AND line_definition_owner_code = p_line_definition_owner_code
11787 AND line_definition_code = p_line_definition_code
11788 AND accounting_line_type_code = p_accounting_line_type_code
11789 AND accounting_line_code = p_accounting_line_code;
11790
11791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11792 trace(p_msg => 'END of procedure delete_line_defn_jlt_details'
11793 ,p_module => l_log_module
11794 ,p_level => C_LEVEL_PROCEDURE);
11795 END IF;
11796
11797 EXCEPTION
11798 WHEN xla_exceptions_pkg.application_exception THEN
11799 RAISE;
11800 WHEN OTHERS THEN
11801 xla_exceptions_pkg.raise_message
11802 (p_location => 'xla_line_definitions_pvt.delete_line_defn_jlt_details');
11803 END delete_line_defn_jlt_details;
11804
11805 --=============================================================================
11806 --
11807 -- Name: copy_line_definition_details
11808 -- Description: Copies the details of an existing line definition into the new
11809 -- one
11810 --
11811 --=============================================================================
11812 PROCEDURE copy_line_definition_details
11813 (p_application_id IN NUMBER
11814 ,p_amb_context_code IN VARCHAR2
11815 ,p_event_class_code IN VARCHAR2
11816 ,p_event_type_code IN VARCHAR2
11817 ,p_old_line_defn_owner_code IN VARCHAR2
11818 ,p_old_line_defn_code IN VARCHAR2
11819 ,p_new_line_defn_owner_code IN VARCHAR2
11820 ,p_new_line_defn_code IN VARCHAR2
11821 ,p_old_accounting_coa_id IN NUMBER
11822 ,p_new_accounting_coa_id IN NUMBER)
11823 IS
11824 l_creation_date DATE := sysdate;
11825 l_last_update_date DATE := sysdate;
11826 l_created_by INTEGER := xla_environment_pkg.g_usr_id;
11827 l_last_update_login INTEGER := xla_environment_pkg.g_login_id;
11828 l_last_updated_by INTEGER := xla_environment_pkg.g_usr_id;
11829
11830 l_log_module VARCHAR2(240);
11831 BEGIN
11832 IF g_log_enabled THEN
11833 l_log_module := C_DEFAULT_MODULE||'.copy_line_definition_details';
11834 END IF;
11835
11836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11837 trace(p_msg => 'BEGIN of procedure copy_line_definition_details'
11838 ,p_module => l_log_module
11839 ,p_level => C_LEVEL_PROCEDURE);
11840 END IF;
11841
11842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11843 trace(p_msg => 'application_id = '||p_application_id||
11844 ',amb_context_code = '||p_amb_context_code||
11845 ',event_class_code = '||p_event_class_code||
11846 ',event_type_code = '||p_event_type_code||
11847 ',old_line_definition_owner_code = '||p_old_line_defn_owner_code||
11848 ',old_line_definition_owner_code = '||p_old_line_defn_owner_code||
11849 ',old_line_defn_code = '||p_old_line_defn_code||
11850 ',new_line_defn_owner_code = '||p_new_line_defn_owner_code||
11851 ',new_line_defn_code = '||p_new_line_defn_code
11852 ,p_module => l_log_module
11853 ,p_level => C_LEVEL_PROCEDURE);
11854 END IF;
11855
11856 INSERT INTO xla_line_defn_jlt_assgns
11857 (application_id
11858 ,amb_context_code
11859 ,event_class_code
11860 ,event_type_code
11861 ,line_definition_owner_code
11862 ,line_definition_code
11863 ,accounting_line_type_code
11864 ,accounting_line_code
11865 ,description_type_code
11866 ,description_code
11867 ,active_flag
11868 ,object_version_number
11869 ,inherit_desc_flag
11870 ,mpa_header_desc_code
11871 ,mpa_header_desc_type_code
11872 ,mpa_num_je_code
11873 ,mpa_gl_dates_code
11874 ,mpa_proration_code
11875 ,creation_date
11876 ,created_by
11877 ,last_update_date
11878 ,last_updated_by
11879 ,last_update_login)
11880 SELECT
11881 application_id
11882 ,amb_context_code
11883 ,event_class_code
11884 ,event_type_code
11885 ,p_new_line_defn_owner_code
11886 ,p_new_line_defn_code
11887 ,accounting_line_type_code
11888 ,accounting_line_code
11889 ,description_type_code
11890 ,description_code
11891 ,active_flag
11892 ,1
11893 ,inherit_desc_flag
11894 ,mpa_header_desc_code
11895 ,mpa_header_desc_type_code
11896 ,mpa_num_je_code
11897 ,mpa_gl_dates_code
11898 ,mpa_proration_code
11899 ,l_creation_date
11900 ,l_created_by
11901 ,l_last_update_date
11902 ,l_last_updated_by
11903 ,l_last_update_login
11904 FROM xla_line_defn_jlt_assgns
11905 WHERE application_id = p_application_id
11906 AND amb_context_code = p_amb_context_code
11907 AND event_class_code = p_event_class_code
11908 AND event_type_code = p_event_type_code
11909 AND line_definition_owner_code = p_old_line_defn_owner_code
11910 AND line_definition_code = p_old_line_defn_code;
11911
11912 INSERT INTO xla_mpa_header_ac_assgns
11913 (application_id
11914 ,amb_context_code
11915 ,event_class_code
11916 ,event_type_code
11917 ,line_definition_owner_code
11918 ,line_definition_code
11919 ,accounting_line_type_code
11920 ,accounting_line_code
11921 ,analytical_criterion_type_code
11922 ,analytical_criterion_code
11923 ,object_version_number
11924 ,creation_date
11925 ,created_by
11926 ,last_update_date
11927 ,last_updated_by
11928 ,last_update_login)
11929 SELECT
11930 application_id
11931 ,amb_context_code
11932 ,event_class_code
11933 ,event_type_code
11934 ,p_new_line_defn_owner_code
11935 ,p_new_line_defn_code
11936 ,accounting_line_type_code
11937 ,accounting_line_code
11938 ,analytical_criterion_type_code
11939 ,analytical_criterion_code
11940 ,1
11941 ,l_creation_date
11942 ,l_created_by
11943 ,l_last_update_date
11944 ,l_last_updated_by
11945 ,l_last_update_login
11946 FROM xla_mpa_header_ac_assgns
11947 WHERE application_id = p_application_id
11948 AND amb_context_code = p_amb_context_code
11949 AND event_class_code = p_event_class_code
11950 AND event_type_code = p_event_type_code
11951 AND line_definition_owner_code = p_old_line_defn_owner_code
11952 AND line_definition_code = p_old_line_defn_code;
11953
11954 INSERT INTO xla_mpa_jlt_assgns
11955 (application_id
11956 ,amb_context_code
11957 ,event_class_code
11958 ,event_type_code
11959 ,line_definition_owner_code
11960 ,line_definition_code
11961 ,accounting_line_type_code
11962 ,accounting_line_code
11963 ,mpa_accounting_line_type_code
11964 ,mpa_accounting_line_code
11965 ,description_type_code
11966 ,description_code
11967 ,object_version_number
11968 ,inherit_desc_flag
11969 ,creation_date
11970 ,created_by
11971 ,last_update_date
11972 ,last_updated_by
11973 ,last_update_login)
11974 SELECT
11975 application_id
11976 ,amb_context_code
11977 ,event_class_code
11978 ,event_type_code
11979 ,p_new_line_defn_owner_code
11980 ,p_new_line_defn_code
11981 ,accounting_line_type_code
11982 ,accounting_line_code
11983 ,mpa_accounting_line_type_code
11984 ,mpa_accounting_line_code
11985 ,description_type_code
11986 ,description_code
11987 ,1
11988 ,inherit_desc_flag
11989 ,l_creation_date
11990 ,l_created_by
11991 ,l_last_update_date
11992 ,l_last_updated_by
11993 ,l_last_update_login
11994 FROM xla_mpa_jlt_assgns
11995 WHERE application_id = p_application_id
11996 AND amb_context_code = p_amb_context_code
11997 AND event_class_code = p_event_class_code
11998 AND event_type_code = p_event_type_code
11999 AND line_definition_owner_code = p_old_line_defn_owner_code
12000 AND line_definition_code = p_old_line_defn_code;
12001
12002
12003 IF p_new_accounting_coa_id is not null and p_old_accounting_coa_id is null THEN
12004
12005 INSERT INTO xla_line_defn_adr_assgns
12006 (application_id
12007 ,amb_context_code
12008 ,event_class_code
12009 ,event_type_code
12010 ,line_definition_owner_code
12011 ,line_definition_code
12012 ,accounting_line_type_code
12013 ,accounting_line_code
12014 ,flexfield_segment_code
12015 ,adr_version_num
12016 ,segment_rule_appl_id
12017 ,segment_rule_type_code
12018 ,segment_rule_code
12019 ,side_code
12020 ,object_version_number
12021 ,inherit_adr_flag
12022 ,creation_date
12023 ,created_by
12024 ,last_update_date
12025 ,last_updated_by
12026 ,last_update_login)
12027 SELECT
12028 application_id
12029 ,amb_context_code
12030 ,event_class_code
12031 ,event_type_code
12032 ,p_new_line_defn_owner_code
12033 ,p_new_line_defn_code
12034 ,accounting_line_type_code
12035 ,accounting_line_code
12036 ,flexfield_segment_code
12037 ,adr_version_num
12038 ,segment_rule_appl_id
12039 ,segment_rule_type_code
12040 ,segment_rule_code
12041 ,side_code
12042 ,1
12043 ,inherit_adr_flag
12044 ,l_creation_date
12045 ,l_created_by
12046 ,l_last_update_date
12047 ,l_last_updated_by
12048 ,l_last_update_login
12049 FROM xla_line_defn_adr_assgns
12050 WHERE application_id = p_application_id
12051 AND amb_context_code = p_amb_context_code
12052 AND event_class_code = p_event_class_code
12053 AND event_type_code = p_event_type_code
12054 AND line_definition_owner_code = p_old_line_defn_owner_code
12055 AND line_definition_code = p_old_line_defn_code
12056 AND flexfield_segment_code = 'ALL'
12057 UNION
12058 SELECT
12059 application_id
12060 ,amb_context_code
12061 ,event_class_code
12062 ,event_type_code
12063 ,p_new_line_defn_owner_code
12064 ,p_new_line_defn_code
12065 ,accounting_line_type_code
12066 ,accounting_line_code
12067 ,xla_flex_pkg.get_qualifier_segment
12068 (101
12069 ,'GL#'
12070 ,p_new_accounting_coa_id
12071 ,flexfield_segment_code)
12072 ,adr_version_num
12073 ,segment_rule_appl_id
12074 ,segment_rule_type_code
12075 ,segment_rule_code
12076 ,side_code
12077 ,1
12078 ,inherit_adr_flag
12079 ,l_creation_date
12080 ,l_created_by
12081 ,l_last_update_date
12082 ,l_last_updated_by
12083 ,l_last_update_login
12084 FROM xla_line_defn_adr_assgns
12085 WHERE application_id = p_application_id
12086 AND amb_context_code = p_amb_context_code
12087 AND event_class_code = p_event_class_code
12088 AND event_type_code = p_event_type_code
12089 AND line_definition_owner_code = p_old_line_defn_owner_code
12090 AND line_definition_code = p_old_line_defn_code
12091 AND flexfield_segment_code <> 'ALL';
12092
12093 INSERT INTO xla_mpa_jlt_adr_assgns
12094 (application_id
12095 ,amb_context_code
12096 ,event_class_code
12097 ,event_type_code
12098 ,line_definition_owner_code
12099 ,line_definition_code
12100 ,accounting_line_type_code
12101 ,accounting_line_code
12102 ,mpa_accounting_line_type_code
12103 ,mpa_accounting_line_code
12104 ,flexfield_segment_code
12105 ,segment_rule_type_code
12106 ,segment_rule_code
12107 ,segment_rule_appl_id
12108 ,object_version_number
12109 ,inherit_adr_flag
12110 ,creation_date
12111 ,created_by
12112 ,last_update_date
12113 ,last_updated_by
12114 ,last_update_login)
12115 SELECT
12116 application_id
12117 ,amb_context_code
12118 ,event_class_code
12119 ,event_type_code
12120 ,p_new_line_defn_owner_code
12121 ,p_new_line_defn_code
12122 ,accounting_line_type_code
12123 ,accounting_line_code
12124 ,mpa_accounting_line_type_code
12125 ,mpa_accounting_line_code
12126 ,flexfield_segment_code
12127 ,segment_rule_type_code
12128 ,segment_rule_code
12129 ,segment_rule_appl_id
12130 ,1
12131 ,inherit_adr_flag
12132 ,l_creation_date
12133 ,l_created_by
12134 ,l_last_update_date
12135 ,l_last_updated_by
12136 ,l_last_update_login
12137 FROM xla_mpa_jlt_adr_assgns
12138 WHERE application_id = p_application_id
12139 AND amb_context_code = p_amb_context_code
12140 AND event_class_code = p_event_class_code
12141 AND event_type_code = p_event_type_code
12142 AND line_definition_owner_code = p_old_line_defn_owner_code
12143 AND line_definition_code = p_old_line_defn_code
12144 AND flexfield_segment_code = 'ALL'
12145 UNION
12146 SELECT
12147 application_id
12148 ,amb_context_code
12149 ,event_class_code
12150 ,event_type_code
12151 ,p_new_line_defn_owner_code
12152 ,p_new_line_defn_code
12153 ,accounting_line_type_code
12154 ,accounting_line_code
12155 ,mpa_accounting_line_type_code
12156 ,mpa_accounting_line_code
12157 ,xla_flex_pkg.get_qualifier_segment
12158 (101
12159 ,'GL#'
12160 ,p_new_accounting_coa_id
12161 ,flexfield_segment_code)
12162 ,segment_rule_type_code
12163 ,segment_rule_code
12164 ,segment_rule_appl_id
12165 ,1
12166 ,inherit_adr_flag
12167 ,l_creation_date
12168 ,l_created_by
12169 ,l_last_update_date
12170 ,l_last_updated_by
12171 ,l_last_update_login
12172 FROM xla_mpa_jlt_adr_assgns
12173 WHERE application_id = p_application_id
12174 AND amb_context_code = p_amb_context_code
12175 AND event_class_code = p_event_class_code
12176 AND event_type_code = p_event_type_code
12177 AND line_definition_owner_code = p_old_line_defn_owner_code
12178 AND line_definition_code = p_old_line_defn_code
12179 AND flexfield_segment_code <> 'ALL';
12180
12181 ELSE
12182
12183 INSERT INTO xla_line_defn_adr_assgns
12184 (application_id
12185 ,amb_context_code
12186 ,event_class_code
12187 ,event_type_code
12188 ,line_definition_owner_code
12189 ,line_definition_code
12190 ,accounting_line_type_code
12191 ,accounting_line_code
12192 ,flexfield_segment_code
12193 ,adr_version_num
12194 ,segment_rule_type_code
12195 ,segment_rule_code
12196 ,segment_rule_appl_id
12197 ,side_code
12198 ,object_version_number
12199 ,inherit_adr_flag
12200 ,creation_date
12201 ,created_by
12202 ,last_update_date
12203 ,last_updated_by
12204 ,last_update_login)
12205 SELECT
12206 application_id
12207 ,amb_context_code
12208 ,event_class_code
12209 ,event_type_code
12210 ,p_new_line_defn_owner_code
12211 ,p_new_line_defn_code
12212 ,accounting_line_type_code
12213 ,accounting_line_code
12214 ,flexfield_segment_code
12215 ,adr_version_num
12216 ,segment_rule_type_code
12217 ,segment_rule_code
12218 ,segment_rule_appl_id
12219 ,side_code
12220 ,1
12221 ,inherit_adr_flag
12222 ,l_creation_date
12223 ,l_created_by
12224 ,l_last_update_date
12225 ,l_last_updated_by
12226 ,l_last_update_login
12227 FROM xla_line_defn_adr_assgns
12228 WHERE application_id = p_application_id
12229 AND amb_context_code = p_amb_context_code
12230 AND event_class_code = p_event_class_code
12231 AND event_type_code = p_event_type_code
12232 AND line_definition_owner_code = p_old_line_defn_owner_code
12233 AND line_definition_code = p_old_line_defn_code;
12234
12235 INSERT INTO xla_mpa_jlt_adr_assgns
12236 (application_id
12237 ,amb_context_code
12238 ,event_class_code
12239 ,event_type_code
12240 ,line_definition_owner_code
12241 ,line_definition_code
12242 ,accounting_line_type_code
12243 ,accounting_line_code
12244 ,mpa_accounting_line_type_code
12245 ,mpa_accounting_line_code
12246 ,flexfield_segment_code
12247 ,segment_rule_type_code
12248 ,segment_rule_code
12249 ,segment_rule_appl_id
12250 ,object_version_number
12251 ,inherit_adr_flag
12252 ,creation_date
12253 ,created_by
12254 ,last_update_date
12255 ,last_updated_by
12256 ,last_update_login)
12257 SELECT
12258 application_id
12259 ,amb_context_code
12260 ,event_class_code
12261 ,event_type_code
12262 ,p_new_line_defn_owner_code
12263 ,p_new_line_defn_code
12264 ,accounting_line_type_code
12265 ,accounting_line_code
12266 ,mpa_accounting_line_type_code
12267 ,mpa_accounting_line_code
12268 ,flexfield_segment_code
12269 ,segment_rule_type_code
12270 ,segment_rule_code
12271 ,segment_rule_appl_id
12272 ,1
12273 ,inherit_adr_flag
12274 ,l_creation_date
12275 ,l_created_by
12276 ,l_last_update_date
12277 ,l_last_updated_by
12278 ,l_last_update_login
12279 FROM xla_mpa_jlt_adr_assgns
12280 WHERE application_id = p_application_id
12281 AND amb_context_code = p_amb_context_code
12282 AND event_class_code = p_event_class_code
12283 AND event_type_code = p_event_type_code
12284 AND line_definition_owner_code = p_old_line_defn_owner_code
12285 AND line_definition_code = p_old_line_defn_code;
12286
12287 END IF;
12288
12289 INSERT INTO xla_line_defn_ac_assgns
12290 (application_id
12291 ,amb_context_code
12292 ,event_class_code
12293 ,event_type_code
12294 ,line_definition_owner_code
12295 ,line_definition_code
12296 ,accounting_line_type_code
12297 ,accounting_line_code
12298 ,analytical_criterion_type_code
12299 ,analytical_criterion_code
12300 ,object_version_number
12301 ,creation_date
12302 ,created_by
12303 ,last_update_date
12304 ,last_updated_by
12305 ,last_update_login)
12306 SELECT
12307 application_id
12308 ,amb_context_code
12309 ,event_class_code
12310 ,event_type_code
12311 ,p_new_line_defn_owner_code
12312 ,p_new_line_defn_code
12313 ,accounting_line_type_code
12314 ,accounting_line_code
12315 ,analytical_criterion_type_code
12316 ,analytical_criterion_code
12317 ,1
12318 ,l_creation_date
12319 ,l_created_by
12320 ,l_last_update_date
12321 ,l_last_updated_by
12322 ,l_last_update_login
12323 FROM xla_line_defn_ac_assgns
12324 WHERE application_id = p_application_id
12325 AND amb_context_code = p_amb_context_code
12326 AND event_class_code = p_event_class_code
12327 AND event_type_code = p_event_type_code
12328 AND line_definition_owner_code = p_old_line_defn_owner_code
12329 AND line_definition_code = p_old_line_defn_code;
12330
12331 INSERT INTO xla_mpa_jlt_ac_assgns
12332 (application_id
12333 ,amb_context_code
12334 ,event_class_code
12335 ,event_type_code
12336 ,line_definition_owner_code
12337 ,line_definition_code
12338 ,accounting_line_type_code
12339 ,accounting_line_code
12340 ,mpa_accounting_line_type_code
12341 ,mpa_accounting_line_code
12342 ,analytical_criterion_type_code
12343 ,analytical_criterion_code
12344 ,mpa_inherit_ac_flag
12345 ,object_version_number
12346 ,creation_date
12347 ,created_by
12348 ,last_update_date
12349 ,last_updated_by
12350 ,last_update_login)
12351 SELECT
12352 application_id
12353 ,amb_context_code
12354 ,event_class_code
12355 ,event_type_code
12356 ,p_new_line_defn_owner_code
12357 ,p_new_line_defn_code
12358 ,accounting_line_type_code
12359 ,accounting_line_code
12360 ,mpa_accounting_line_type_code
12361 ,mpa_accounting_line_code
12362 ,analytical_criterion_type_code
12363 ,analytical_criterion_code
12364 ,mpa_inherit_ac_flag
12365 ,1
12366 ,l_creation_date
12367 ,l_created_by
12368 ,l_last_update_date
12369 ,l_last_updated_by
12370 ,l_last_update_login
12371 FROM xla_mpa_jlt_ac_assgns
12372 WHERE application_id = p_application_id
12373 AND amb_context_code = p_amb_context_code
12374 AND event_class_code = p_event_class_code
12375 AND event_type_code = p_event_type_code
12376 AND line_definition_owner_code = p_old_line_defn_owner_code
12377 AND line_definition_code = p_old_line_defn_code;
12378
12379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12380 trace(p_msg => 'END of procedure copy_line_definition_details'
12381 ,p_module => l_log_module
12382 ,p_level => C_LEVEL_PROCEDURE);
12383 END IF;
12384
12385
12386 EXCEPTION
12387 WHEN xla_exceptions_pkg.application_exception THEN
12388 RAISE;
12389 WHEN OTHERS THEN
12390 xla_exceptions_pkg.raise_message
12391 (p_location => 'xla_line_definitions_pvt.copy_line_definition_details');
12392 END copy_line_definition_details;
12393
12394 --=============================================================================
12395 --
12396 -- Name: line_definition_in_use
12397 -- Description: Returns true if the line definition is assigned to an
12398 -- accounting method
12399 --
12400 --=============================================================================
12401 FUNCTION line_definition_in_use
12402 (p_application_id IN NUMBER
12403 ,p_amb_context_code IN VARCHAR2
12404 ,p_event_class_code IN VARCHAR2
12405 ,p_event_type_code IN VARCHAR2
12406 ,p_line_definition_owner_code IN VARCHAR2
12407 ,p_line_definition_code IN VARCHAR2
12408 ,x_product_rule_name IN OUT NOCOPY VARCHAR2
12409 ,x_product_rule_owner IN OUT NOCOPY VARCHAR2)
12410 RETURN BOOLEAN
12411 IS
12412 CURSOR c_aads
12413 IS
12414 SELECT xpr.name product_rule_name
12415 ,xlk.meaning product_rule_owner
12416 FROM xla_aad_line_defn_assgns xal
12417 ,xla_product_rules_tl xpr
12418 ,xla_lookups xlk
12419 WHERE xpr.application_id = xal.application_id
12420 AND xpr.amb_context_code = xal.amb_context_code
12421 AND xpr.product_rule_type_code = xal.product_rule_type_code
12422 AND xpr.product_rule_code = xal.product_rule_code
12423 AND xpr.language = USERENV('LANG')
12424 AND xlk.lookup_type = 'XLA_OWNER_TYPE'
12425 AND xlk.lookup_code = xal.product_rule_type_code
12426 AND xal.application_id = p_application_id
12427 AND xal.amb_context_code = p_amb_context_code
12428 AND xal.event_class_code = p_event_class_code
12429 AND xal.event_type_code = p_event_type_code
12430 AND xal.line_definition_owner_code = p_line_definition_owner_code
12431 AND xal.line_definition_code = p_line_definition_code;
12432
12433 l_aad c_aads%ROWTYPE;
12434 l_return BOOLEAN;
12435
12436 l_log_module VARCHAR2(240);
12437 BEGIN
12438 IF g_log_enabled THEN
12439 l_log_module := C_DEFAULT_MODULE||'.line_definition_in_use';
12440 END IF;
12441
12442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12443 trace(p_msg => 'BEGIN of procedure line_definition_in_use'
12444 ,p_module => l_log_module
12445 ,p_level => C_LEVEL_PROCEDURE);
12446 END IF;
12447
12448 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12449 trace(p_msg => 'application_id = ' ||p_application_id
12450 ||',amb_context_code = ' ||p_amb_context_code
12451 ||',event_class_code = ' ||p_event_class_code
12452 ||',event_type_code = ' ||p_event_type_code
12453 ||',line_definition_owner_code = '||p_line_definition_owner_code
12454 ||',line_definition_code = ' ||p_line_definition_code
12455 ,p_module => l_log_module
12456 ,p_level => C_LEVEL_STATEMENT);
12457 END IF;
12458
12459 OPEN c_aads;
12460 FETCH c_aads INTO l_aad;
12461 IF c_aads%FOUND THEn
12462 x_product_rule_name := l_aad.product_rule_name;
12463 x_product_rule_owner := l_aad.product_rule_owner;
12464
12465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12466 trace(p_msg => 'found aad: product_rule_name = '||x_product_rule_name
12467 ||',product_rule_owner = ' ||x_product_rule_owner
12468 ,p_module => l_log_module
12469 ,p_level => C_LEVEL_STATEMENT);
12470 END IF;
12471
12472 l_return := TRUE;
12473 ELSE
12474 l_return := FALSE;
12475 END IF;
12476 CLOSE c_aads;
12477
12478 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12479 trace(p_msg => 'END of procedure line_definition_in_use'
12480 ,p_module => l_log_module
12481 ,p_level => C_LEVEL_PROCEDURE);
12482 END IF;
12483
12484 RETURN l_return;
12485
12486 EXCEPTION
12487 WHEN xla_exceptions_pkg.application_exception THEN
12488 IF c_aads%ISOPEN THEN
12489 CLOSE c_aads;
12490 END IF;
12491 RAISE;
12492
12493 WHEN OTHERS THEN
12494 IF c_aads%ISOPEN THEN
12495 CLOSE c_aads;
12496 END IF;
12497 xla_exceptions_pkg.raise_message
12498 (p_location => 'xla_line_definitions_pvt.line_definition_in_use');
12499
12500 END line_definition_in_use;
12501
12502 --=============================================================================
12503 --
12504 -- Name: line_definition_is_locked
12505 -- Description: Returns true if the line definition is assigned to an
12506 -- accounting method
12507 --
12508 --=============================================================================
12509 FUNCTION line_definition_is_locked
12510 (p_application_id IN NUMBER
12511 ,p_amb_context_code IN VARCHAR2
12512 ,p_event_class_code IN VARCHAR2
12513 ,p_event_type_code IN VARCHAR2
12514 ,p_line_definition_owner_code IN VARCHAR2
12515 ,p_line_definition_code IN VARCHAR2
12516 ,x_product_rule_name IN OUT NOCOPY VARCHAR2
12517 ,x_product_rule_owner IN OUT NOCOPY VARCHAR2
12518 ,x_event_class_name IN OUT NOCOPY VARCHAR2
12519 ,x_event_type_name IN OUT NOCOPY VARCHAR2
12520 ,x_locking_status_flag IN OUT NOCOPY VARCHAR2)
12521 RETURN BOOLEAN
12522 IS
12523 CURSOR c_aads
12524 IS
12525 SELECT xpa.entity_code, xpa.product_rule_type_code, xpa.product_rule_code
12526 ,xpa.locking_status_flag
12527 FROM xla_aad_line_defn_assgns xal
12528 ,xla_prod_acct_headers xpa
12529 WHERE xpa.application_id = xal.application_id
12530 AND xpa.amb_context_code = xal.amb_context_code
12531 AND xpa.product_rule_type_code = xal.product_rule_type_code
12532 AND xpa.product_rule_code = xal.product_rule_code
12533 AND xpa.event_class_code = xal.event_class_code
12534 AND xpa.event_type_code = xal.event_type_code
12535 AND xpa.locking_status_flag = 'Y'
12536 AND xal.application_id = p_application_id
12537 AND xal.amb_context_code = p_amb_context_code
12538 AND xal.event_class_code = p_event_class_code
12539 AND xal.event_type_code = p_event_type_code
12540 AND xal.line_definition_owner_code = p_line_definition_owner_code
12541 AND xal.line_definition_code = p_line_definition_code;
12542
12543 l_aad c_aads%ROWTYPE;
12544 l_application_name varchar2(80);
12545 l_return BOOLEAN;
12546
12547 l_log_module VARCHAR2(240);
12548 BEGIN
12549 IF g_log_enabled THEN
12550 l_log_module := C_DEFAULT_MODULE||'.line_definition_is_locked';
12551 END IF;
12552
12553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12554 trace(p_msg => 'BEGIN of procedure line_definition_is_locked'
12555 ,p_module => l_log_module
12556 ,p_level => C_LEVEL_PROCEDURE);
12557 END IF;
12558
12559 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12560 trace(p_msg => 'application_id = ' ||p_application_id
12561 ||',amb_context_code = ' ||p_amb_context_code
12562 ||',event_class_code = ' ||p_event_class_code
12563 ||',event_type_code = ' ||p_event_type_code
12564 ||',line_definition_owner_code = '||p_line_definition_owner_code
12565 ||',line_definition_code = ' ||p_line_definition_code
12566 ,p_module => l_log_module
12567 ,p_level => C_LEVEL_STATEMENT);
12568 END IF;
12569
12570 OPEN c_aads;
12571 FETCH c_aads INTO l_aad;
12572 IF c_aads%FOUND THEN
12573
12574 xla_validations_pkg.get_product_rule_info
12575 (p_application_id => p_application_id
12576 ,p_amb_context_code => p_amb_context_code
12577 ,p_product_rule_type_code => l_aad.product_rule_type_code
12578 ,p_product_rule_code => l_aad.product_rule_code
12579 ,p_application_name => l_application_name
12580 ,p_product_rule_name => x_product_rule_name
12581 ,p_product_rule_type => x_product_rule_owner);
12582
12583 xla_validations_pkg.get_event_class_info
12584 (p_application_id => p_application_id
12585 ,p_entity_code => l_aad.entity_code
12586 ,p_event_class_code => p_event_class_code
12587 ,p_event_class_name => x_event_class_name);
12588
12589 xla_validations_pkg.get_event_type_info
12590 (p_application_id => p_application_id
12591 ,p_entity_code => l_aad.entity_code
12592 ,p_event_class_code => p_event_class_code
12593 ,p_event_type_code => p_event_type_code
12594 ,p_event_type_name => x_event_type_name);
12595
12596 x_locking_status_flag := l_aad.locking_status_flag;
12597
12598 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12599 trace(p_msg => 'found aad: product_rule_name = '||x_product_rule_name
12600 ||',product_rule_owner = ' ||x_product_rule_owner
12601 ,p_module => l_log_module
12602 ,p_level => C_LEVEL_STATEMENT);
12603 END IF;
12604
12605 l_return := TRUE;
12606 ELSE
12607 l_return := FALSE;
12608 END IF;
12609 CLOSE c_aads;
12610
12611 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12612 trace(p_msg => 'END of procedure line_definition_is_locked'
12613 ,p_module => l_log_module
12614 ,p_level => C_LEVEL_PROCEDURE);
12615 END IF;
12616
12617 RETURN l_return;
12618
12619 EXCEPTION
12620 WHEN xla_exceptions_pkg.application_exception THEN
12621 IF c_aads%ISOPEN THEN
12622 CLOSE c_aads;
12623 END IF;
12624 RAISE;
12625
12626 WHEN OTHERS THEN
12627 IF c_aads%ISOPEN THEN
12628 CLOSE c_aads;
12629 END IF;
12630 xla_exceptions_pkg.raise_message
12631 (p_location => 'xla_line_definitions_pvt.line_definition_is_locked');
12632
12633 END line_definition_is_locked;
12634
12635 --=============================================================================
12636 --
12637 -- Name: line_definition_is_locked
12638 -- Description: Returns true if the line definition is assigned to an
12639 -- accounting method
12640 --
12641 --=============================================================================
12642 FUNCTION line_definition_is_locked
12643 (p_application_id IN NUMBER
12644 ,p_amb_context_code IN VARCHAR2
12645 ,p_event_class_code IN VARCHAR2
12646 ,p_event_type_code IN VARCHAR2
12647 ,p_line_definition_owner_code IN VARCHAR2
12648 ,p_line_definition_code IN VARCHAR2)
12649 RETURN BOOLEAN
12650 IS
12651 CURSOR c_aads
12652 IS
12653 SELECT xpa.entity_code, xpa.product_rule_type_code, xpa.product_rule_code
12654 ,xpa.locking_status_flag
12655 FROM xla_aad_line_defn_assgns xal
12656 ,xla_prod_acct_headers xpa
12657 WHERE xpa.application_id = xal.application_id
12658 AND xpa.amb_context_code = xal.amb_context_code
12659 AND xpa.product_rule_type_code = xal.product_rule_type_code
12660 AND xpa.product_rule_code = xal.product_rule_code
12661 AND xpa.event_class_code = xal.event_class_code
12662 AND xpa.event_type_code = xal.event_type_code
12663 AND xpa.locking_status_flag = 'Y'
12664 AND xal.application_id = p_application_id
12665 AND xal.amb_context_code = p_amb_context_code
12666 AND xal.event_class_code = p_event_class_code
12667 AND xal.event_type_code = p_event_type_code
12668 AND xal.line_definition_owner_code = p_line_definition_owner_code
12669 AND xal.line_definition_code = p_line_definition_code;
12670
12671 l_aad c_aads%ROWTYPE;
12672 l_return BOOLEAN;
12673
12674 l_log_module VARCHAR2(240);
12675 BEGIN
12676 IF g_log_enabled THEN
12677 l_log_module := C_DEFAULT_MODULE||'.line_definition_is_locked';
12678 END IF;
12679
12680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12681 trace(p_msg => 'BEGIN of procedure line_definition_is_locked'
12682 ,p_module => l_log_module
12683 ,p_level => C_LEVEL_PROCEDURE);
12684 END IF;
12685
12686 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12687 trace(p_msg => 'application_id = ' ||p_application_id
12688 ||',amb_context_code = ' ||p_amb_context_code
12689 ||',event_class_code = ' ||p_event_class_code
12690 ||',event_type_code = ' ||p_event_type_code
12691 ||',line_definition_owner_code = '||p_line_definition_owner_code
12692 ||',line_definition_code = ' ||p_line_definition_code
12693 ,p_module => l_log_module
12694 ,p_level => C_LEVEL_STATEMENT);
12695 END IF;
12696
12697 OPEN c_aads;
12698 FETCH c_aads INTO l_aad;
12699 IF c_aads%FOUND THEN
12700
12701 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12702 trace(p_msg => 'found aad: '||l_aad.product_rule_code||','
12703 ||l_aad.product_rule_code
12704 ,p_module => l_log_module
12705 ,p_level => C_LEVEL_STATEMENT);
12706 END IF;
12707
12708 l_return := TRUE;
12709 ELSE
12710 l_return := FALSE;
12711 END IF;
12712 CLOSE c_aads;
12713
12714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12715 trace(p_msg => 'END of procedure line_definition_is_locked'
12716 ,p_module => l_log_module
12717 ,p_level => C_LEVEL_PROCEDURE);
12718 END IF;
12719
12720 RETURN l_return;
12721
12722 EXCEPTION
12723 WHEN xla_exceptions_pkg.application_exception THEN
12724 IF c_aads%ISOPEN THEN
12725 CLOSE c_aads;
12726 END IF;
12727 RAISE;
12728
12729 WHEN OTHERS THEN
12730 IF c_aads%ISOPEN THEN
12731 CLOSE c_aads;
12732 END IF;
12733 xla_exceptions_pkg.raise_message
12734 (p_location => 'xla_line_definitions_pvt.line_definition_is_locked');
12735
12736 END line_definition_is_locked;
12737
12738 --=============================================================================
12739 --
12740 -- Name: invalid_line_description
12741 -- Description: Returns true if sources for the line description are invalid
12742 --
12743 --=============================================================================
12744 FUNCTION invalid_line_description
12745 (p_application_id IN NUMBER
12746 ,p_amb_context_code IN VARCHAR2
12747 ,p_entity_code IN VARCHAR2
12748 ,p_event_class_code IN VARCHAR2
12749 ,p_description_type_code IN VARCHAR2
12750 ,p_description_code IN VARCHAR2)
12751 RETURN VARCHAR2
12752 IS
12753 l_return VARCHAR2(30);
12754 l_log_module VARCHAR2(240);
12755 BEGIN
12756 IF g_log_enabled THEN
12757 l_log_module := C_DEFAULT_MODULE||'.line_definition_in_use';
12758 END IF;
12759
12760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12761 trace(p_msg => 'BEGIN of procedure line_definition_in_use'
12762 ,p_module => l_log_module
12763 ,p_level => C_LEVEL_PROCEDURE);
12764 END IF;
12765
12766 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12767 trace(p_msg => 'application_id = '||p_application_id||
12768 ',amb_context_code = '||p_amb_context_code||
12769 ',entity_code = '||p_entity_code||
12770 ',event_class_code = '||p_event_class_code||
12771 ',description_type_code = '||p_description_type_code||
12772 ',description_code = '||p_description_code
12773 ,p_module => l_log_module
12774 ,p_level => C_LEVEL_STATEMENT);
12775 END IF;
12776
12777 --
12778 -- call invalid_line_desc to see if description is invalid
12779 --
12780 IF xla_line_definitions_pvt.invalid_line_desc
12781 (p_application_id => p_application_id
12782 ,p_amb_context_code => p_amb_context_code
12783 ,p_entity_code => p_entity_code
12784 ,p_event_class_code => p_event_class_code
12785 ,p_description_type_code => p_description_type_code
12786 ,p_description_code => p_description_code) THEN
12787
12788 l_return := 'TRUE';
12789 ELSE
12790 l_return := 'FALSE';
12791 END IF;
12792
12793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12794 trace(p_msg => 'END of procedure line_definition_in_use'
12795 ,p_module => l_log_module
12796 ,p_level => C_LEVEL_PROCEDURE);
12797 END IF;
12798
12799 RETURN l_return;
12800
12801 EXCEPTION
12802 WHEN xla_exceptions_pkg.application_exception THEN
12803 RAISE;
12804 WHEN OTHERS THEN
12805 xla_exceptions_pkg.raise_message
12806 (p_location => 'xla_line_definitions_pvt.invalid_line_description');
12807 END invalid_line_description;
12808
12809 --=============================================================================
12810 --
12811 -- Name: invalid_segment_rule
12812 -- Description: Returns true if sources for the seg rule are invalid
12813 --
12814 --=============================================================================
12815 FUNCTION invalid_segment_rule
12816 (p_application_id IN NUMBER
12817 ,p_amb_context_code IN VARCHAR2
12818 ,p_entity_code IN VARCHAR2
12819 ,p_event_class_code IN VARCHAR2
12820 ,p_segment_rule_appl_id IN NUMBER DEFAULT NULL
12821 ,p_segment_rule_type_code IN VARCHAR2
12822 ,p_segment_rule_code IN VARCHAR2)
12823 RETURN VARCHAR2
12824 IS
12825 l_return VARCHAR2(30);
12826
12827 CURSOR c_adr
12828 IS
12829 SELECT value_segment_rule_appl_id
12830 ,value_segment_rule_type_code
12831 ,value_segment_rule_code
12832 FROM xla_seg_rule_details
12833 WHERE application_id = p_application_id
12834 AND amb_context_code = p_amb_context_code
12835 AND segment_rule_type_code = p_segment_rule_type_code
12836 AND segment_rule_code = p_segment_rule_code
12837 AND value_type_code = 'A';
12838
12839 l_adr c_adr%rowtype;
12840
12841 l_log_module VARCHAR2(240);
12842 BEGIN
12843 IF g_log_enabled THEN
12844 l_log_module := C_DEFAULT_MODULE||'.invalid_segment_rule';
12845 END IF;
12846
12847 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12848 trace(p_msg => 'BEGIN of procedure invalid_segment_rule'
12849 ,p_module => l_log_module
12850 ,p_level => C_LEVEL_PROCEDURE);
12851 END IF;
12852
12853 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12854 trace(p_msg => 'application_id = '||p_application_id||
12855 ',amb_context_code = '||p_amb_context_code||
12856 ',entity_code = '||p_entity_code||
12857 ',event_class_code = '||p_event_class_code||
12858 ',segment_rule_type_code = '||p_segment_rule_type_code||
12859 ',segment_rule_code = '||p_segment_rule_code
12860 ,p_module => l_log_module
12861 ,p_level => C_LEVEL_STATEMENT);
12862 END IF;
12863
12864 --
12865 -- call invalid_seg_rule to see if segment rule is invalid
12866 --
12867 IF xla_line_definitions_pvt.invalid_seg_rule
12868 (p_application_id => p_application_id
12869 ,p_amb_context_code => p_amb_context_code
12870 ,p_entity_code => p_entity_code
12871 ,p_event_class_code => p_event_class_code
12872 ,p_segment_rule_appl_id => p_segment_rule_appl_id
12873 ,p_segment_rule_type_code => p_segment_rule_type_code
12874 ,p_segment_rule_code => p_segment_rule_code) THEN
12875
12876 l_return := 'TRUE';
12877 ELSE
12878 l_return := 'FALSE';
12879 END IF;
12880
12881 IF l_return = 'FALSE' THEN
12882 OPEN c_adr;
12883 LOOP
12884 FETCH c_adr
12885 INTO l_adr;
12886 EXIT WHEN c_adr%notfound or l_return = 'TRUE';
12887
12888 IF xla_line_definitions_pvt.invalid_seg_rule
12889 (p_application_id => p_application_id
12890 ,p_amb_context_code => p_amb_context_code
12891 ,p_entity_code => p_entity_code
12892 ,p_event_class_code => p_event_class_code
12893 ,p_segment_rule_appl_id => l_adr.value_segment_rule_appl_id
12894 ,p_segment_rule_type_code => l_adr.value_segment_rule_type_code
12895 ,p_segment_rule_code => l_adr.value_segment_rule_code) THEN
12896
12897 l_return := 'TRUE';
12898 ELSE
12899 l_return := 'FALSE';
12900 END IF;
12901 END LOOP;
12902 CLOSE c_adr;
12903
12904 END IF;
12905
12906 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12907 trace(p_msg => 'END of procedure invalid_segment_rule'
12908 ,p_module => l_log_module
12909 ,p_level => C_LEVEL_PROCEDURE);
12910 END IF;
12911
12912 RETURN l_return;
12913
12914 EXCEPTION
12915 WHEN xla_exceptions_pkg.application_exception THEN
12916 RAISE;
12917
12918 WHEN OTHERS THEN
12919 xla_exceptions_pkg.raise_message
12920 (p_location => 'xla_line_definitions_pvt.invalid_segment_rule');
12921
12922 END invalid_segment_rule;
12923
12924 --=============================================================================
12925 --
12926 -- Name: uncompile_aads
12927 -- Description: Returns true if the application accounting definition gets
12928 -- uncompiled
12929 --
12930 --=============================================================================
12931 FUNCTION uncompile_aads
12932 (p_amb_context_code IN VARCHAR2
12933 ,p_application_id IN NUMBER
12934 ,p_event_class_code IN VARCHAR2
12935 ,p_event_type_code IN VARCHAR2
12936 ,p_line_definition_owner_code IN VARCHAR2
12937 ,p_line_definition_code IN VARCHAR2
12938 ,x_product_rule_name IN OUT NOCOPY VARCHAR2
12939 ,x_product_rule_type IN OUT NOCOPY VARCHAR2
12940 ,x_event_class_name IN OUT NOCOPY VARCHAR2
12941 ,x_event_type_name IN OUT NOCOPY VARCHAR2
12942 ,x_locking_status_flag IN OUT NOCOPY VARCHAR2)
12943 RETURN BOOLEAN
12944 IS
12945 l_application_name VARCHAR2(80);
12946
12947 CURSOR c_lock_aads IS
12948 SELECT xpa.entity_code
12949 ,xpa.event_class_code
12950 ,xpa.event_type_code
12951 ,xpa.product_rule_type_code
12952 ,xpa.product_rule_code
12953 ,xpa.locking_status_flag
12954 ,xpa.validation_status_code
12955 FROM xla_aad_line_defn_assgns xal
12956 ,xla_prod_acct_headers xpa
12957 WHERE xpa.application_id = xal.application_id
12958 AND xpa.amb_context_code = xal.amb_context_code
12959 AND xpa.product_rule_type_code = xal.product_rule_type_code
12960 AND xpa.product_rule_code = xal.product_rule_code
12961 AND xpa.event_class_code = xal.event_class_code
12962 AND xpa.event_type_code = xal.event_type_code
12963 AND xal.application_id = p_application_id
12964 AND xal.amb_context_code = p_amb_context_code
12965 AND xal.event_class_code = p_event_class_code
12966 AND xal.event_type_code = p_event_type_code
12967 AND xal.line_definition_owner_code = p_line_definition_owner_code
12968 AND xal.line_definition_code = p_line_definition_code
12969 FOR UPDATE NOWAIT;
12970
12971 CURSOR c_update_aads IS
12972 SELECT xal.event_class_code
12973 , xal.product_rule_type_code
12974 , xal.product_rule_code
12975 FROM xla_aad_line_defn_assgns xal
12976 ,xla_prod_acct_headers xpa
12977 WHERE xpa.application_id = xal.application_id
12978 AND xpa.amb_context_code = xal.amb_context_code
12979 AND xpa.product_rule_type_code = xal.product_rule_type_code
12980 AND xpa.product_rule_code = xal.product_rule_code
12981 AND xpa.event_class_code = xal.event_class_code
12982 AND xpa.event_type_code = xal.event_type_code
12983 AND xal.application_id = p_application_id
12984 AND xal.amb_context_code = p_amb_context_code
12985 AND xal.event_class_code = p_event_class_code
12986 AND xal.event_type_code = p_event_type_code
12987 AND xal.line_definition_owner_code = p_line_definition_owner_code
12988 AND xal.line_definition_code = p_line_definition_code
12989 FOR UPDATE NOWAIT;
12990
12991 l_event_class_codes t_array_codes;
12992 l_product_rule_type_codes t_array_type_codes;
12993 l_product_rule_codes t_array_codes;
12994
12995 l_return BOOLEAN;
12996
12997 l_log_module VARCHAR2(240);
12998 BEGIN
12999 IF g_log_enabled THEN
13000 l_log_module := C_DEFAULT_MODULE||'.uncompile_aads';
13001 END IF;
13002
13003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13004 trace(p_msg => 'BEGIN of procedure uncompile_aads'
13005 ,p_module => l_log_module
13006 ,p_level => C_LEVEL_PROCEDURE);
13007 END IF;
13008
13009 IF (C_LEVEL_EVENT >= g_log_level) THEN
13010 trace(p_msg => 'BEGIN LOOP - uncompile aads',
13011 p_module => l_log_module,
13012 p_level => C_LEVEL_EVENT);
13013 END IF;
13014
13015 l_return := TRUE;
13016
13017 FOR l_aad IN c_lock_aads LOOP
13018 IF (l_aad.validation_status_code NOT IN ('E', 'Y', 'N') OR
13019 l_aad.locking_status_flag = 'Y') THEN
13020
13021 IF (C_LEVEL_ERROR >= g_log_level) THEN
13022 trace(p_msg => 'Found locked aad: '||
13023 l_aad.event_class_code||','||
13024 l_aad.event_type_code||','||
13025 l_aad.product_rule_code||','||
13026 l_aad.product_rule_type_code,
13027 p_module => l_log_module,
13028 p_level => C_LEVEL_ERROR);
13029 END IF;
13030
13031 xla_validations_pkg.get_product_rule_info
13032 (p_application_id => p_application_id
13033 ,p_amb_context_code => p_amb_context_code
13034 ,p_product_rule_type_code => l_aad.product_rule_type_code
13035 ,p_product_rule_code => l_aad.product_rule_code
13036 ,p_application_name => l_application_name
13037 ,p_product_rule_name => x_product_rule_name
13038 ,p_product_rule_type => x_product_rule_type);
13039
13040 xla_validations_pkg.get_event_class_info
13041 (p_application_id => p_application_id
13042 ,p_entity_code => l_aad.entity_code
13043 ,p_event_class_code => l_aad.event_class_code
13044 ,p_event_class_name => x_event_class_name);
13045
13046 xla_validations_pkg.get_event_type_info
13047 (p_application_id => p_application_id
13048 ,p_entity_code => l_aad.entity_code
13049 ,p_event_class_code => l_aad.event_class_code
13050 ,p_event_type_code => l_aad.event_type_code
13051 ,p_event_type_name => x_event_type_name);
13052
13053 x_locking_status_flag := l_aad.locking_status_flag;
13054
13055 l_return := FALSE;
13056 EXIT;
13057
13058 END IF;
13059 END LOOP;
13060
13061 IF (l_return) THEN
13062
13063 OPEN c_update_aads;
13064 FETCH c_update_aads BULK COLLECT INTO l_event_class_codes
13065 ,l_product_rule_type_codes
13066 ,l_product_rule_codes;
13067 CLOSE c_update_aads;
13068
13069 IF (C_LEVEL_EVENT >= g_log_level) THEN
13070 trace(p_msg => 'l_event_class_codes.count = '||l_event_class_codes.count,
13071 p_module => l_log_module,
13072 p_level => C_LEVEL_EVENT);
13073 END IF;
13074
13075 IF (l_event_class_codes.count > 0) THEN
13076
13077 FORALL i IN 1..l_event_class_codes.LAST
13078 UPDATE xla_product_rules_b xpr
13079 SET compile_status_code = 'N'
13080 , updated_flag = 'Y'
13081 , last_update_date = sysdate
13082 , last_updated_by = xla_environment_pkg.g_usr_id
13083 , last_update_login = xla_environment_pkg.g_login_id
13084 WHERE application_id = p_application_id
13085 AND amb_context_code = p_amb_context_code
13086 AND product_rule_type_code = l_product_rule_type_codes(i)
13087 AND product_rule_code = l_product_rule_codes(i)
13088 AND (compile_status_code <> 'N' OR
13089 updated_flag <> 'Y');
13090
13091 IF (C_LEVEL_EVENT >= g_log_level) THEN
13092 trace(p_msg => '# row updated in xla_product_rules_b = '||SQL%ROWCOUNT,
13093 p_module => l_log_module,
13094 p_level => C_LEVEL_EVENT);
13095 END IF;
13096
13097 FORALL i IN 1..l_event_class_codes.LAST
13098 UPDATE xla_prod_acct_headers xpa
13099 SET validation_status_code = 'N'
13100 , last_update_date = sysdate
13101 , last_updated_by = xla_environment_pkg.g_usr_id
13102 , last_update_login = xla_environment_pkg.g_login_id
13103 WHERE xpa.application_id = p_application_id
13104 AND xpa.amb_context_code = p_amb_context_code
13105 AND xpa.event_class_code = l_event_class_codes(i)
13106 AND xpa.product_rule_type_code = l_product_rule_type_codes(i)
13107 AND xpa.product_rule_code = l_product_rule_codes(i)
13108 AND xpa.validation_status_code <> 'N';
13109
13110 IF (C_LEVEL_EVENT >= g_log_level) THEN
13111 trace(p_msg => '# row updated in xla_prod_acct_headers = '||SQL%ROWCOUNT,
13112 p_module => l_log_module,
13113 p_level => C_LEVEL_EVENT);
13114 END IF;
13115
13116 UPDATE xla_appli_amb_contexts
13117 SET updated_flag = 'Y'
13118 , last_update_date = sysdate
13119 , last_updated_by = xla_environment_pkg.g_usr_id
13120 , last_update_login = xla_environment_pkg.g_login_id
13121 WHERE application_id = p_application_id
13122 AND amb_context_code = p_amb_context_code
13123 AND updated_flag <> 'Y';
13124
13125 END IF;
13126 END IF;
13127
13128 IF (C_LEVEL_EVENT >= g_log_level) THEN
13129 trace(p_msg => 'END LOOP - uncompile aads',
13130 p_module => l_log_module,
13131 p_level => C_LEVEL_EVENT);
13132 END IF;
13133
13134 UPDATE xla_line_definitions_b
13135 SET validation_status_code = 'N'
13136 ,last_update_date = sysdate
13137 ,last_updated_by = xla_environment_pkg.g_usr_id
13138 ,last_update_login = xla_environment_pkg.g_login_id
13139 WHERE application_id = p_application_id
13140 AND amb_context_code = p_amb_context_code
13141 AND event_class_code = p_event_class_code
13142 AND event_type_code = p_event_type_code
13143 AND line_definition_owner_code = p_line_definition_owner_code
13144 AND line_definition_code = p_line_definition_code;
13145
13146 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13147 trace(p_msg => 'END of procedure uncompile_aads'
13148 ,p_module => l_log_module
13149 ,p_level => C_LEVEL_PROCEDURE);
13150 END IF;
13151
13152 RETURN l_return;
13153
13154 EXCEPTION
13155 WHEN xla_exceptions_pkg.application_exception THEN
13156 IF c_update_aads%ISOPEN THEN
13157 CLOSE c_update_aads;
13158 END IF;
13159 IF (c_lock_aads%ISOPEN) THEN
13160 CLOSE c_lock_aads;
13161 END IF;
13162 RAISE;
13163
13164 WHEN OTHERS THEN
13165 IF c_update_aads%ISOPEN THEN
13166 CLOSE c_update_aads;
13167 END IF;
13168 IF (c_lock_aads%ISOPEN) THEN
13169 CLOSE c_lock_aads;
13170 END IF;
13171 xla_exceptions_pkg.raise_message
13172 (p_location => 'xla_line_definitions_pvt.uncompile_aads');
13173
13174 END uncompile_aads;
13175
13176
13177 --=============================================================================
13178 --
13179 -- Name: invalid_line_analytical
13180 -- Description: Returns true if sources for the analytical criteria are invalid
13181 --
13182 --=============================================================================
13183 FUNCTION invalid_line_analytical
13184 (p_application_id IN NUMBER
13185 ,p_amb_context_code IN VARCHAR2
13186 ,p_entity_code IN VARCHAR2
13187 ,p_event_class_code IN VARCHAR2
13188 ,p_ac_type_code IN VARCHAR2
13189 ,p_ac_code IN VARCHAR2)
13190 RETURN VARCHAR2
13191 IS
13192 l_return VARCHAR2(30);
13193 l_exist VARCHAR2(1);
13194
13195 l_log_module VARCHAR2(240);
13196 BEGIN
13197 IF g_log_enabled THEN
13198 l_log_module := C_DEFAULT_MODULE||'.invalid_line_analytical';
13199 END IF;
13200
13201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13202 trace(p_msg => 'BEGIN of procedure invalid_line_analytical'
13203 ,p_module => l_log_module
13204 ,p_level => C_LEVEL_PROCEDURE);
13205 END IF;
13206
13207 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13208 trace(p_msg => 'application_id = '||p_application_id||
13209 ',amb_context_code = '||p_amb_context_code||
13210 ',entity_code = '||p_entity_code||
13211 ',event_class_code = '||p_event_class_code||
13212 ',analytical_criterion_type_code = '||p_ac_type_code||
13213 ',analytical_criterion_code = '||p_ac_code
13214 ,p_module => l_log_module
13215 ,p_level => C_LEVEL_STATEMENT);
13216 END IF;
13217
13218 --
13219 -- call invalid_line_analytical to see if header analytical criteria is invalid
13220 --
13221 IF xla_line_definitions_pvt.invalid_line_ac
13222 (p_application_id => p_application_id
13223 ,p_amb_context_code => p_amb_context_code
13224 ,p_entity_code => p_entity_code
13225 ,p_event_class_code => p_event_class_code
13226 ,p_ac_type_code => p_ac_type_code
13227 ,p_ac_code => p_ac_code) THEN
13228
13229 l_return := 'TRUE';
13230 ELSE
13231 l_return := 'FALSE';
13232 END IF;
13233
13234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13235 trace(p_msg => 'END of procedure invalid_line_analytical'
13236 ,p_module => l_log_module
13237 ,p_level => C_LEVEL_PROCEDURE);
13238 END IF;
13239
13240 RETURN l_return;
13241
13242 EXCEPTION
13243 WHEN xla_exceptions_pkg.application_exception THEN
13244 RAISE;
13245
13246 WHEN OTHERS THEN
13247 xla_exceptions_pkg.raise_message
13248 (p_location => 'xla_line_definitions_pvt.invalid_line_analytical');
13249 END invalid_line_analytical;
13250
13251 --=============================================================================
13252 --
13253 -- Name: copy_line_assignment_details
13254 -- Description: Copies the details of an existing line assignment to a new one
13255 --
13256 --=============================================================================
13257 PROCEDURE copy_line_assignment_details
13258 (p_application_id IN NUMBER
13259 ,p_amb_context_code IN VARCHAR2
13260 ,p_event_class_code IN VARCHAR2
13261 ,p_event_type_code IN VARCHAR2
13262 ,p_line_definition_owner_code IN VARCHAR2
13263 ,p_line_definition_code IN VARCHAR2
13264 ,p_old_accting_line_type_code IN VARCHAR2
13265 ,p_old_accounting_line_code IN VARCHAR2
13266 ,p_new_accting_line_type_code IN VARCHAR2
13267 ,p_new_accounting_line_code IN VARCHAR2
13268 ,p_include_ac_assignments IN VARCHAR2
13269 ,p_include_adr_assignments IN VARCHAR2
13270 ,p_mpa_option_code IN VARCHAR2)
13271
13272 IS
13273
13274 l_creation_date DATE := sysdate;
13275 l_last_update_date DATE := sysdate;
13276 l_created_by INTEGER := xla_environment_pkg.g_usr_id;
13277 l_last_update_login INTEGER := xla_environment_pkg.g_login_id;
13278 l_last_updated_by INTEGER := xla_environment_pkg.g_usr_id;
13279
13280 l_log_module VARCHAR2(240);
13281 BEGIN
13282 IF g_log_enabled THEN
13283 l_log_module := C_DEFAULT_MODULE||'.invalid_line_analytical';
13284 END IF;
13285
13286 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13287 trace(p_msg => 'BEGIN of procedure invalid_line_analytical'
13288 ,p_module => l_log_module
13289 ,p_level => C_LEVEL_PROCEDURE);
13290 END IF;
13291
13292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13293 trace(p_msg => 'application_id = '||p_application_id||
13294 ',amb_context_code = '||p_amb_context_code||
13295 ',event_class_code = '||p_event_class_code||
13296 ',event_type_code = '||p_event_type_code||
13297 ',line_definition_owner_code = '||p_line_definition_owner_code||
13298 ',line_definition_code = '||p_line_definition_code||
13299 ',old_accting_line_type_code = '||p_old_accting_line_type_code||
13300 ',old_accounting_line_code = '||p_old_accounting_line_code||
13301 ',new_accting_line_type_code = '||p_new_accting_line_type_code||
13302 ',new_accounting_line_code = '||p_new_accounting_line_code||
13303 ',include_ac_assignments = '||p_include_ac_assignments||
13304 ',include_adr_assignments = '||p_include_adr_assignments||
13305 ',p_mpa_option_code = '||p_mpa_option_code
13306 ,p_module => l_log_module
13307 ,p_level => C_LEVEL_STATEMENT);
13308 END IF;
13309
13310 IF ( p_include_adr_assignments = 'Y') THEN
13311 INSERT INTO xla_line_defn_adr_assgns
13312 (application_id
13313 ,amb_context_code
13314 ,event_class_code
13315 ,event_type_code
13316 ,line_definition_owner_code
13317 ,line_definition_code
13318 ,accounting_line_type_code
13319 ,accounting_line_code
13320 ,flexfield_segment_code
13321 ,adr_version_num
13322 ,segment_rule_type_code
13323 ,segment_rule_code
13324 ,segment_rule_appl_id
13325 ,side_code
13326 ,object_version_number
13327 ,inherit_adr_flag
13328 ,creation_date
13329 ,created_by
13330 ,last_update_date
13331 ,last_updated_by
13332 ,last_update_login)
13333 SELECT
13334 application_id
13335 ,amb_context_code
13336 ,event_class_code
13337 ,event_type_code
13338 ,line_definition_owner_code
13339 ,line_definition_code
13340 ,p_new_accting_line_type_code
13341 ,p_new_accounting_line_code
13342 ,flexfield_segment_code
13343 ,adr_version_num
13344 ,segment_rule_type_code
13345 ,segment_rule_code
13346 ,segment_rule_appl_id
13347 ,side_code
13348 ,1
13349 ,inherit_adr_flag
13350 ,l_creation_date
13351 ,l_created_by
13352 ,l_last_update_date
13353 ,l_last_updated_by
13354 ,l_last_update_login
13355 FROM xla_line_defn_adr_assgns
13356 WHERE application_id = p_application_id
13357 AND amb_context_code = p_amb_context_code
13358 AND event_class_code = p_event_class_code
13359 AND event_type_code = p_event_type_code
13360 AND line_definition_owner_code = p_line_definition_owner_code
13361 AND line_definition_code = p_line_definition_code
13362 AND accounting_line_type_code = p_old_accting_line_type_code
13363 AND accounting_line_code = p_old_accounting_line_code;
13364
13365 If (p_mpa_option_code = 'ACCRUAL') then
13366
13367 INSERT INTO xla_mpa_jlt_adr_assgns
13368 (application_id
13369 ,amb_context_code
13370 ,event_class_code
13371 ,event_type_code
13372 ,line_definition_owner_code
13373 ,line_definition_code
13374 ,accounting_line_type_code
13375 ,accounting_line_code
13376 ,mpa_accounting_line_type_code
13377 ,mpa_accounting_line_code
13378 ,flexfield_segment_code
13379 ,segment_rule_type_code
13380 ,segment_rule_code
13381 ,segment_rule_appl_id
13382 ,object_version_number
13383 ,inherit_adr_flag
13384 ,creation_date
13385 ,created_by
13386 ,last_update_date
13387 ,last_updated_by
13388 ,last_update_login)
13389 SELECT
13390 application_id
13391 ,amb_context_code
13392 ,event_class_code
13393 ,event_type_code
13394 ,line_definition_owner_code
13395 ,line_definition_code
13396 ,p_new_accting_line_type_code
13397 ,p_new_accounting_line_code
13398 ,p_new_accting_line_type_code
13399 ,p_new_accounting_line_code
13400 ,flexfield_segment_code
13401 ,segment_rule_type_code
13402 ,segment_rule_code
13403 ,segment_rule_appl_id
13404 ,1
13405 ,inherit_adr_flag
13406 ,l_creation_date
13407 ,l_created_by
13408 ,l_last_update_date
13409 ,l_last_updated_by
13410 ,l_last_update_login
13411 FROM xla_mpa_jlt_adr_assgns
13412 WHERE application_id = p_application_id
13413 AND amb_context_code = p_amb_context_code
13414 AND event_class_code = p_event_class_code
13415 AND event_type_code = p_event_type_code
13416 AND line_definition_owner_code = p_line_definition_owner_code
13417 AND line_definition_code = p_line_definition_code
13418 AND accounting_line_type_code = p_old_accting_line_type_code
13419 AND accounting_line_code = p_old_accounting_line_code
13420 AND mpa_accounting_line_type_code = p_old_accting_line_type_code
13421 AND mpa_accounting_line_code = p_old_accounting_line_code;
13422
13423 End If; -- mpa_option_code = 'ACCRUAL'
13424 END IF; -- p_include_adr_assignments = 'Y'
13425
13426 IF (p_include_ac_assignments = 'Y') THEN
13427 INSERT INTO xla_line_defn_ac_assgns
13428 (application_id
13429 ,amb_context_code
13430 ,event_class_code
13431 ,event_type_code
13432 ,line_definition_owner_code
13433 ,line_definition_code
13434 ,accounting_line_type_code
13435 ,accounting_line_code
13436 ,analytical_criterion_type_code
13437 ,analytical_criterion_code
13438 ,object_version_number
13439 ,creation_date
13440 ,created_by
13441 ,last_update_date
13442 ,last_updated_by
13443 ,last_update_login)
13444 SELECT
13445 application_id
13446 ,amb_context_code
13447 ,event_class_code
13448 ,event_type_code
13449 ,line_definition_owner_code
13450 ,line_definition_code
13451 ,p_new_accting_line_type_code
13452 ,p_new_accounting_line_code
13453 ,analytical_criterion_type_code
13454 ,analytical_criterion_code
13455 ,1
13456 ,l_creation_date
13457 ,l_created_by
13458 ,l_last_update_date
13459 ,l_last_updated_by
13460 ,l_last_update_login
13461 FROM xla_line_defn_ac_assgns
13462 WHERE application_id = p_application_id
13463 AND amb_context_code = p_amb_context_code
13464 AND event_class_code = p_event_class_code
13465 AND event_type_code = p_event_type_code
13466 AND line_definition_owner_code = p_line_definition_owner_code
13467 AND line_definition_code = p_line_definition_code
13468 AND accounting_line_type_code = p_old_accting_line_type_code
13469 AND accounting_line_code = p_old_accounting_line_code;
13470
13471 If (p_mpa_option_code = 'ACCRUAL') then
13472
13473 INSERT INTO xla_mpa_header_ac_assgns
13474 (application_id
13475 ,amb_context_code
13476 ,event_class_code
13477 ,event_type_code
13478 ,line_definition_owner_code
13479 ,line_definition_code
13480 ,accounting_line_type_code
13481 ,accounting_line_code
13482 ,analytical_criterion_type_code
13483 ,analytical_criterion_code
13484 ,object_version_number
13485 ,creation_date
13486 ,created_by
13487 ,last_update_date
13488 ,last_updated_by
13489 ,last_update_login)
13490 SELECT
13491 application_id
13492 ,amb_context_code
13493 ,event_class_code
13494 ,event_type_code
13495 ,line_definition_owner_code
13496 ,line_definition_code
13497 ,p_new_accting_line_type_code
13498 ,p_new_accounting_line_code
13499 ,analytical_criterion_type_code
13500 ,analytical_criterion_code
13501 ,1
13502 ,l_creation_date
13503 ,l_created_by
13504 ,l_last_update_date
13505 ,l_last_updated_by
13506 ,l_last_update_login
13507 FROM xla_mpa_header_ac_assgns
13508 WHERE application_id = p_application_id
13509 AND amb_context_code = p_amb_context_code
13510 AND event_class_code = p_event_class_code
13511 AND event_type_code = p_event_type_code
13512 AND line_definition_owner_code = p_line_definition_owner_code
13513 AND line_definition_code = p_line_definition_code
13514 AND accounting_line_type_code = p_old_accting_line_type_code
13515 AND accounting_line_code = p_old_accounting_line_code;
13516
13517
13518 INSERT INTO xla_mpa_jlt_ac_assgns
13519 (application_id
13520 ,amb_context_code
13521 ,event_class_code
13522 ,event_type_code
13523 ,line_definition_owner_code
13524 ,line_definition_code
13525 ,accounting_line_type_code
13526 ,accounting_line_code
13527 ,mpa_accounting_line_type_code
13528 ,mpa_accounting_line_code
13529 ,analytical_criterion_type_code
13530 ,analytical_criterion_code
13531 ,mpa_inherit_ac_flag
13532 ,object_version_number
13533 ,creation_date
13534 ,created_by
13535 ,last_update_date
13536 ,last_updated_by
13537 ,last_update_login)
13538 SELECT
13539 application_id
13540 ,amb_context_code
13541 ,event_class_code
13542 ,event_type_code
13543 ,line_definition_owner_code
13544 ,line_definition_code
13545 ,p_new_accting_line_type_code
13546 ,p_new_accounting_line_code
13547 ,p_new_accting_line_type_code
13548 ,p_new_accounting_line_code
13549 ,analytical_criterion_type_code
13550 ,analytical_criterion_code
13551 ,mpa_inherit_ac_flag
13552 ,1
13553 ,l_creation_date
13554 ,l_created_by
13555 ,l_last_update_date
13556 ,l_last_updated_by
13557 ,l_last_update_login
13558 FROM xla_mpa_jlt_ac_assgns
13559 WHERE application_id = p_application_id
13560 AND amb_context_code = p_amb_context_code
13561 AND event_class_code = p_event_class_code
13562 AND event_type_code = p_event_type_code
13563 AND line_definition_owner_code = p_line_definition_owner_code
13564 AND line_definition_code = p_line_definition_code
13565 AND accounting_line_type_code = p_old_accting_line_type_code
13566 AND accounting_line_code = p_old_accounting_line_code
13567 AND mpa_accounting_line_type_code = p_old_accting_line_type_code
13568 AND mpa_accounting_line_code = p_old_accounting_line_code;
13569
13570 End If; -- p_mpa_option_code = 'ACCRUAL'
13571 END IF; -- p_include_ac_assignments = 'Y'
13572
13573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13574 trace(p_msg => 'END of procedure copy_line_assignment_details'
13575 ,p_module => l_log_module
13576 ,p_level => C_LEVEL_PROCEDURE);
13577 END IF;
13578
13579 EXCEPTION
13580 WHEN xla_exceptions_pkg.application_exception THEN
13581 RAISE;
13582
13583 WHEN OTHERS THEN
13584 xla_exceptions_pkg.raise_message
13585 (p_location => 'xla_line_definitions_pvt.copy_line_assignment_details');
13586
13587 END copy_line_assignment_details;
13588
13589
13590 --=============================================================================
13591 --
13592 -- Name: get_line_definition_info
13593 -- Description: Validate the line definition
13594 --
13595 --=============================================================================
13596 PROCEDURE get_line_definition_info
13597 (p_application_id IN NUMBER
13598 ,p_amb_context_code IN VARCHAR2
13599 ,p_event_class_code IN VARCHAR2
13600 ,p_event_type_code IN VARCHAR2
13601 ,p_line_definition_owner_code IN VARCHAR2
13602 ,p_line_definition_code IN VARCHAR2
13603 ,x_line_definition_owner IN OUT NOCOPY VARCHAR2
13604 ,x_line_definition_name IN OUT NOCOPY VARCHAR2)
13605 IS
13606 CURSOR c_line_defn IS
13607 SELECT xld.name, xlk.meaning owner
13608 FROM xla_line_definitions_tl xld
13609 ,xla_lookups xlk
13610 WHERE xld.application_id = p_application_id
13611 AND xld.amb_context_code = p_amb_context_code
13612 AND xld.event_class_code = p_event_class_code
13613 AND xld.event_type_code = p_event_type_code
13614 AND xld.line_definition_owner_code = p_line_definition_owner_code
13615 AND xld.line_definition_code = p_line_definition_code
13616 AND xld.language = USERENV('LANG')
13617 AND xlk.lookup_type = 'XLA_OWNER_TYPE'
13618 AND xlk.lookup_code = xld.line_definition_owner_code;
13619
13620 l_log_module VARCHAR2(240);
13621 BEGIN
13622 IF g_log_enabled THEN
13623 l_log_module := C_DEFAULT_MODULE||'.get_line_definition_info';
13624 END IF;
13625
13626 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13627 trace(p_msg => 'BEGIN of procedure get_line_definition_info'
13628 ,p_module => l_log_module
13629 ,p_level => C_LEVEL_PROCEDURE);
13630 END IF;
13631
13632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13633 trace(p_msg => 'application_id = '||p_application_id||
13634 ',amb_context_code = '||p_amb_context_code||
13635 ',event_class_code = '||p_event_class_code||
13636 ',event_type_code = '||p_event_type_code||
13637 ',line_definition_owner_code = '||p_line_definition_owner_code||
13638 ',line_definition_code = '||p_line_definition_code
13639 ,p_module => l_log_module
13640 ,p_level => C_LEVEL_STATEMENT);
13641 END IF;
13642
13643 OPEN c_line_defn;
13644 FETCH c_line_defn INTO x_line_definition_name, x_line_definition_owner;
13645 CLOSE c_line_defn;
13646
13647 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13648 trace(p_msg => 'END of procedure get_line_definition_info'
13649 ,p_module => l_log_module
13650 ,p_level => C_LEVEL_PROCEDURE);
13651 END IF;
13652
13653 EXCEPTION
13654 WHEN xla_exceptions_pkg.application_exception THEN
13655 RAISE;
13656
13657 WHEN OTHERS THEN
13658 xla_exceptions_pkg.raise_message
13659 (p_location => 'xla_line_definitions_pvt.get_line_definition_info');
13660
13661 END get_line_definition_info;
13662
13663
13664
13665 --=============================================================================
13666 --
13667 -- Name: validate_line_definition
13668 -- Description: Validate the line definition
13669 --
13670 --=============================================================================
13671 FUNCTION validate_line_definition
13672 (p_application_id IN NUMBER
13673 ,p_amb_context_code IN VARCHAR2
13674 ,p_event_class_code IN VARCHAR2
13675 ,p_event_type_code IN VARCHAR2
13676 ,p_line_definition_owner_code IN VARCHAR2
13677 ,p_line_definition_code IN VARCHAR2)
13678 RETURN BOOLEAN
13679 IS
13680 l_return BOOLEAN;
13681 l_log_module VARCHAR2(240);
13682 BEGIN
13683 IF g_log_enabled THEN
13684 l_log_module := C_DEFAULT_MODULE||'.validate_line_definition';
13685 END IF;
13686
13687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13688 trace(p_msg => 'BEGIN of procedure validate_line_definition'
13689 ,p_module => l_log_module
13690 ,p_level => C_LEVEL_PROCEDURE);
13691 END IF;
13692
13693 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13694 trace(p_msg => 'application_id = '||p_application_id||
13695 ',amb_context_code = '||p_amb_context_code||
13696 ',event_class_code = '||p_event_class_code||
13697 ',event_type_code = '||p_event_type_code||
13698 ',line_definition_owner_code = '||p_line_definition_owner_code||
13699 ',line_definition_code = '||p_line_definition_code
13700 ,p_module => l_log_module
13701 ,p_level => C_LEVEL_STATEMENT);
13702 END IF;
13703
13704 l_return := TRUE;
13705
13706 -- Delete the error table for the event class
13707 DELETE FROM xla_amb_setup_errors
13708 WHERE application_id = p_application_id
13709 AND amb_context_code = p_amb_context_code
13710 AND event_class_code = p_event_class_code
13711 AND event_type_code = p_event_type_code
13712 AND line_definition_owner_code = p_line_definition_owner_code
13713 AND line_definition_code = p_line_definition_code;
13714
13715 l_return := chk_jld_same_entry
13716 (p_application_id => p_application_id
13717 ,p_amb_context_code => p_amb_context_code
13718 ,p_event_class_code => p_event_class_code
13719 ,p_event_type_code => p_event_type_code
13720 ,p_line_definition_owner_code => p_line_definition_owner_code
13721 ,p_line_definition_code => p_line_definition_code)
13722 AND l_return;
13723
13724 l_return := validate_line_descriptions
13725 (p_application_id => p_application_id
13726 ,p_amb_context_code => p_amb_context_code
13727 ,p_event_class_code => p_event_class_code
13728 ,p_event_type_code => p_event_type_code
13729 ,p_line_definition_owner_code => p_line_definition_owner_code
13730 ,p_line_definition_code => p_line_definition_code)
13731 AND l_return;
13732
13733 l_return := validate_jlt_assgns
13734 (p_application_id => p_application_id
13735 ,p_amb_context_code => p_amb_context_code
13736 ,p_event_class_code => p_event_class_code
13737 ,p_event_type_code => p_event_type_code
13738 ,p_line_definition_owner_code => p_line_definition_owner_code
13739 ,p_line_definition_code => p_line_definition_code)
13740 AND l_return;
13741
13742 l_return := validate_adr_assgns
13743 (p_application_id => p_application_id
13744 ,p_amb_context_code => p_amb_context_code
13745 ,p_event_class_code => p_event_class_code
13746 ,p_event_type_code => p_event_type_code
13747 ,p_line_definition_owner_code => p_line_definition_owner_code
13748 ,p_line_definition_code => p_line_definition_code)
13749 AND l_return;
13750
13751 l_return := validate_line_ac
13752 (p_application_id => p_application_id
13753 ,p_amb_context_code => p_amb_context_code
13754 ,p_event_class_code => p_event_class_code
13755 ,p_event_type_code => p_event_type_code
13756 ,p_line_definition_owner_code => p_line_definition_owner_code
13757 ,p_line_definition_code => p_line_definition_code)
13758 AND l_return;
13759
13760 l_return := validate_mapping_sets
13761 (p_application_id => p_application_id
13762 ,p_amb_context_code => p_amb_context_code
13763 ,p_event_class_code => p_event_class_code
13764 ,p_event_type_code => p_event_type_code
13765 ,p_line_definition_owner_code => p_line_definition_owner_code
13766 ,p_line_definition_code => p_line_definition_code)
13767 AND l_return;
13768
13769 l_return := validate_mpa_header_assgns
13770 (p_application_id => p_application_id
13771 ,p_amb_context_code => p_amb_context_code
13772 ,p_event_class_code => p_event_class_code
13773 ,p_event_type_code => p_event_type_code
13774 ,p_line_definition_owner_code => p_line_definition_owner_code
13775 ,p_line_definition_code => p_line_definition_code)
13776 AND l_return;
13777
13778 l_return := validate_mpa_line_assgns
13779 (p_application_id => p_application_id
13780 ,p_amb_context_code => p_amb_context_code
13781 ,p_event_class_code => p_event_class_code
13782 ,p_event_type_code => p_event_type_code
13783 ,p_line_definition_owner_code => p_line_definition_owner_code
13784 ,p_line_definition_code => p_line_definition_code)
13785 AND l_return;
13786
13787
13788 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13789 trace(p_msg => 'END of procedure validate_line_definition'
13790 ,p_module => l_log_module
13791 ,p_level => C_LEVEL_PROCEDURE);
13792 END IF;
13793
13794 RETURN l_return;
13795 EXCEPTION
13796 WHEN xla_exceptions_pkg.application_exception THEN
13797 RAISE;
13798
13799 WHEN OTHERS THEN
13800 xla_exceptions_pkg.raise_message
13801 (p_location => 'xla_line_definitions_pvt.validate_line_definition');
13802
13803 END validate_line_definition;
13804
13805 --=============================================================================
13806 --
13807 -- Name: validate_jld
13808 -- Description: Validate the line definition
13809 --
13810 --=============================================================================
13811 FUNCTION validate_jld
13812 (p_application_id IN NUMBER
13813 ,p_amb_context_code IN VARCHAR2
13814 ,p_event_class_code IN VARCHAR2
13815 ,p_event_type_code IN VARCHAR2
13816 ,p_line_definition_owner_code IN VARCHAR2
13817 ,p_line_definition_code IN VARCHAR2)
13818 RETURN BOOLEAN
13819 IS
13820 l_return BOOLEAN;
13821 l_log_module VARCHAR2(240);
13822 BEGIN
13823 IF g_log_enabled THEN
13824 l_log_module := C_DEFAULT_MODULE||'.validate_jld';
13825 END IF;
13826
13827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13828 trace(p_msg => 'BEGIN of procedure validate_jld'
13829 ,p_module => l_log_module
13830 ,p_level => C_LEVEL_PROCEDURE);
13831 END IF;
13832
13833 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13834 trace(p_msg => 'application_id = '||p_application_id||
13835 ',amb_context_code = '||p_amb_context_code||
13836 ',event_class_code = '||p_event_class_code||
13837 ',event_type_code = '||p_event_type_code||
13838 ',line_definition_owner_code = '||p_line_definition_owner_code||
13839 ',line_definition_code = '||p_line_definition_code
13840 ,p_module => l_log_module
13841 ,p_level => C_LEVEL_STATEMENT);
13842 END IF;
13843
13844 -- Set environment settings
13845 xla_environment_pkg.refresh;
13846
13847 -- Initialize the error package
13848 xla_amb_setup_err_pkg.initialize;
13849
13850 l_return := validate_line_definition
13851 (p_application_id => p_application_id
13852 ,p_amb_context_code => p_amb_context_code
13853 ,p_event_class_code => p_event_class_code
13854 ,p_event_type_code => p_event_type_code
13855 ,p_line_definition_owner_code => p_line_definition_owner_code
13856 ,p_line_definition_code => p_line_definition_code);
13857
13858 IF (NOT l_return) THEN
13859 xla_amb_setup_err_pkg.insert_errors;
13860 END IF;
13861
13862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13863 trace(p_msg => 'END of procedure validate_jld'
13864 ,p_module => l_log_module
13865 ,p_level => C_LEVEL_PROCEDURE);
13866 END IF;
13867
13868 RETURN l_return;
13869 EXCEPTION
13870 WHEN xla_exceptions_pkg.application_exception THEN
13871 RAISE;
13872
13873 WHEN OTHERS THEN
13874 xla_exceptions_pkg.raise_message
13875 (p_location => 'xla_line_definitions_pvt.validate_jld');
13876
13877 END validate_jld;
13878
13879 --======================================================================
13880 --
13881 -- Name: check_copy_line_definition
13882 -- Description: Checks if the line definition can be copied into a new one
13883 --
13884 --======================================================================
13885 FUNCTION check_copy_line_definition
13886 (p_application_id IN NUMBER
13887 ,p_amb_context_code IN VARCHAR2
13888 ,p_event_class_code IN VARCHAR2
13889 ,p_event_type_code IN VARCHAR2
13890 ,p_old_line_defn_owner_code IN VARCHAR2
13891 ,p_old_line_defn_code IN VARCHAR2
13892 ,p_old_accounting_coa_id IN NUMBER
13893 ,p_new_accounting_coa_id IN NUMBER
13894 ,p_message IN OUT NOCOPY VARCHAR2
13895 ,p_token_1 IN OUT NOCOPY VARCHAR2
13896 ,p_value_1 IN OUT NOCOPY VARCHAR2)
13897 RETURN BOOLEAN
13898 IS
13899 l_log_module VARCHAR2(240);
13900
13901 l_flexfield_segment_code VARCHAR2(30);
13902 l_flexfield_segment_name VARCHAR2(80);
13903 l_return BOOLEAN := TRUE;
13904
13905 CURSOR c_adr
13906 IS
13907 SELECT laa.flexfield_segment_code, seg.flex_value_set_id
13908 FROM xla_line_defn_adr_assgns laa, xla_seg_rules_b seg
13909 WHERE laa.application_id = p_application_id
13910 AND laa.amb_context_code = p_amb_context_code
13911 AND laa.event_class_code = p_event_class_code
13912 AND laa.event_type_code = p_event_type_code
13913 AND laa.line_definition_owner_code = p_old_line_defn_owner_code
13914 AND laa.line_definition_code = p_old_line_defn_code
13915 AND laa.flexfield_segment_code <> 'ALL'
13916 AND laa.segment_rule_appl_id = seg.application_id
13917 AND laa.amb_context_code = seg.amb_context_code
13918 AND laa.segment_rule_code = seg.segment_rule_code
13919 AND laa.segment_rule_type_code = seg.segment_rule_type_code;
13920
13921 l_adr c_adr%rowtype;
13922
13923 CURSOR c_valueset
13924 IS
13925 SELECT 'x'
13926 FROM fnd_id_flex_segments
13927 WHERE application_id = 101
13928 AND id_flex_code = 'GL#'
13929 AND id_flex_num = p_new_accounting_coa_id
13930 AND application_column_name = l_flexfield_segment_code
13931 AND flex_value_set_id = l_adr.flex_value_set_id
13932 ;
13933
13934 l_valueset c_valueset%rowtype;
13935
13936 BEGIN
13937 IF g_log_enabled THEN
13938 l_log_module := C_DEFAULT_MODULE||'.check_copy_line_definition';
13939 END IF;
13940
13941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13942 trace(p_msg => 'BEGIN of procedure check_copy_line_definition'
13943 ,p_module => l_log_module
13944 ,p_level => C_LEVEL_PROCEDURE);
13945 END IF;
13946
13947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13948 trace(p_msg => 'application_id = '||p_application_id||
13949 ',amb_context_code = '||p_amb_context_code||
13950 ',event_class_code = '||p_event_class_code||
13951 ',event_type_code = '||p_event_type_code||
13952 ',old_line_definition_owner_code = '||p_old_line_defn_owner_code||
13953 ',old_line_definition_owner_code = '||p_old_line_defn_owner_code||
13954 ',old_line_defn_code = '||p_old_line_defn_code
13955 ,p_module => l_log_module
13956 ,p_level => C_LEVEL_PROCEDURE);
13957 END IF;
13958
13959 IF p_new_accounting_coa_id is not null and p_old_accounting_coa_id is null THEN
13960
13961 OPEN c_adr;
13962 LOOP
13963 FETCH c_adr
13964 INTO l_adr;
13965 EXIT WHEN c_adr%notfound or l_return = FALSE;
13966
13967 l_flexfield_segment_code := xla_flex_pkg.get_qualifier_segment
13968 (p_application_id => 101
13969 ,p_id_flex_code => 'GL#'
13970 ,p_id_flex_num => p_new_accounting_coa_id
13971 ,p_qualifier_segment => l_adr.flexfield_segment_code);
13972
13973 IF l_flexfield_segment_code is null THEN
13974 l_flexfield_segment_name := xla_flex_pkg.get_qualifier_name
13975 (p_application_id => 101
13976 ,p_id_flex_code => 'GL#'
13977 ,p_qualifier_segment => l_adr.flexfield_segment_code);
13978
13979 p_message := 'XLA_AB_ACCT_COA_NO_QUAL';
13980 p_token_1 := 'QUALIFIER_NAME';
13981 p_value_1 := l_flexfield_segment_name;
13982 l_return := FALSE;
13983
13984 ELSIF l_adr.flex_value_set_id is not null THEN
13985 OPEN c_valueset;
13986 FETCH c_valueset
13987 INTO l_valueset;
13988 IF c_valueset%notfound THEN
13989
13990 l_flexfield_segment_name := xla_flex_pkg.get_qualifier_name
13991 (p_application_id => 101
13992 ,p_id_flex_code => 'GL#'
13993 ,p_qualifier_segment => l_adr.flexfield_segment_code);
13994
13995 p_message := 'XLA_AB_VALUESET_NOT_MATCH';
13996 p_token_1 := 'QUALIFIER_NAME';
13997 p_value_1 := l_flexfield_segment_name;
13998 l_return := FALSE;
13999 END IF;
14000 END IF;
14001 END LOOP;
14002 CLOSE c_adr;
14003 END IF;
14004
14005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14006 trace(p_msg => 'END of procedure check_copy_line_definition'
14007 ,p_module => l_log_module
14008 ,p_level => C_LEVEL_PROCEDURE);
14009 END IF;
14010
14011 RETURN l_return;
14012
14013 EXCEPTION
14014 WHEN xla_exceptions_pkg.application_exception THEN
14015 RAISE;
14016 WHEN OTHERS THEN
14017 xla_exceptions_pkg.raise_message
14018 (p_location => 'xla_line_definitions_pvt.check_copy_line_definition');
14019 END check_copy_line_definition;
14020
14021 --======================================================================
14022 --
14023 -- Name: check_adr_has_loop
14024 -- Description: Returns true if the ADR has an attached ADR which in
14025 -- turn has another ADR attached
14026 --
14027 --======================================================================
14028 FUNCTION check_adr_has_loop
14029 (p_application_id IN NUMBER
14030 ,p_amb_context_code IN VARCHAR2
14031 ,p_event_class_code IN VARCHAR2
14032 ,p_event_type_code IN VARCHAR2
14033 ,p_line_definition_owner_code IN VARCHAR2
14034 ,p_line_definition_code IN VARCHAR2)
14035 RETURN BOOLEAN
14036 IS
14037 l_log_module VARCHAR2(240);
14038
14039 l_return BOOLEAN := TRUE;
14040 l_exist VARCHAR2(1);
14041
14042 CURSOR c_child_adr IS
14043 SELECT distinct xsr.value_segment_rule_appl_id,
14044 xsr.value_segment_rule_type_code, xsr.value_segment_rule_code
14045 FROM xla_line_defn_jlt_assgns xjl
14046 ,xla_line_defn_adr_assgns xad
14047 ,xla_seg_rule_details xsr
14048 WHERE xsr.application_id = xad.application_id
14049 AND xsr.amb_context_code = xad.amb_context_code
14050 AND xsr.segment_rule_type_code = xad.segment_rule_type_code
14051 AND xsr.segment_rule_code = xad.segment_rule_code
14052 AND xsr.value_type_code = 'A'
14053 AND xad.application_id = xjl.application_id
14054 AND xad.amb_context_code = xjl.amb_context_code
14055 AND xad.line_definition_owner_code = xjl.line_definition_owner_code
14056 AND xad.line_definition_code = xjl.line_definition_code
14057 AND xad.event_class_code = xjl.event_class_code
14058 AND xad.event_type_code = xjl.event_type_code
14059 AND xad.accounting_line_type_code = xjl.accounting_line_type_code
14060 AND xad.accounting_line_code = xjl.accounting_line_code
14061 AND xad.segment_rule_code is not null
14062 AND xjl.application_id = p_application_id
14063 AND xjl.amb_context_code = p_amb_context_code
14064 AND xjl.event_class_code = p_event_class_code
14065 AND xjl.event_type_code = p_event_type_code
14066 AND xjl.line_definition_owner_code = p_line_definition_owner_code
14067 AND xjl.line_definition_code = p_line_definition_code
14068 AND xjl.active_flag = 'Y';
14069
14070 l_child_adr c_child_adr%rowtype;
14071
14072 CURSOR c_adr_loop IS
14073 SELECT 'x'
14074 FROM xla_seg_rule_details xsd
14075 WHERE application_id = l_child_adr.value_segment_rule_appl_id
14076 AND amb_context_code = p_amb_context_code
14077 AND segment_rule_type_code = l_child_adr.value_segment_rule_type_code
14078 AND segment_rule_code = l_child_adr.value_segment_rule_code
14079 AND value_type_code = 'A';
14080
14081 BEGIN
14082 IF g_log_enabled THEN
14083 l_log_module := C_DEFAULT_MODULE||'.check_adr_has_loop';
14084 END IF;
14085
14086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14087 trace(p_msg => 'BEGIN of procedure check_adr_has_loop'
14088 ,p_module => l_log_module
14089 ,p_level => C_LEVEL_PROCEDURE);
14090 END IF;
14091
14092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14093 trace(p_msg => 'application_id = '||p_application_id||
14094 ',amb_context_code = '||p_amb_context_code||
14095 ',event_class_code = '||p_event_class_code||
14096 ',event_type_code = '||p_event_type_code||
14097 ',line_definition_owner_code = '||p_line_definition_owner_code||
14098 ',line_definition_code = '||p_line_definition_code
14099 ,p_module => l_log_module
14100 ,p_level => C_LEVEL_STATEMENT);
14101 END IF;
14102
14103 OPEN c_child_adr;
14104 LOOP
14105 FETCH c_child_adr
14106 INTO l_child_adr;
14107 EXIT WHEN c_child_adr%notfound;
14108
14109 OPEN c_adr_loop;
14110 FETCH c_adr_loop
14111 INTO l_exist;
14112 IF c_adr_loop%found THEN
14113
14114 l_return := FALSE;
14115
14116 xla_amb_setup_err_pkg.stack_error
14117 (p_message_name => 'XLA_AB_ADR_HAS_LOOP'
14118 ,p_message_type => 'E'
14119 ,p_message_category => 'SEG_RULE'
14120 ,p_category_sequence => 13
14121 ,p_application_id => p_application_id
14122 ,p_amb_context_code => p_amb_context_code
14123 ,p_event_class_code => p_event_class_code
14124 ,p_event_type_code => p_event_type_code
14125 ,p_line_definition_owner_code => p_line_definition_owner_code
14126 ,p_line_definition_code => p_line_definition_code
14127 ,p_segment_rule_type_code => l_child_adr.value_segment_rule_type_code
14128 ,p_segment_rule_code => l_child_adr.value_segment_rule_code);
14129
14130 END IF;
14131 CLOSE c_adr_loop;
14132 END LOOP;
14133 CLOSE c_child_adr;
14134
14135
14136 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14137 trace(p_msg => 'END of procedure check_adr_has_loop'
14138 ,p_module => l_log_module
14139 ,p_level => C_LEVEL_PROCEDURE);
14140 END IF;
14141
14142 RETURN l_return;
14143
14144 EXCEPTION
14145 WHEN xla_exceptions_pkg.application_exception THEN
14146 RAISE;
14147 WHEN OTHERS THEN
14148 xla_exceptions_pkg.raise_message
14149 (p_location => 'xla_line_definitions_pvt.check_adr_has_loop');
14150 END check_adr_has_loop;
14151
14152
14153 --=============================================================================
14154 --
14155 -- Name: delete_mpa_jlt_details
14156 -- Description: Deletes all details of the mpa line assignment
14157 --
14158 --=============================================================================
14159 PROCEDURE delete_mpa_jlt_details
14160 (p_application_id IN NUMBER
14161 ,p_amb_context_code IN VARCHAR2
14162 ,p_event_class_code IN VARCHAR2
14163 ,p_event_type_code IN VARCHAR2
14164 ,p_line_definition_owner_code IN VARCHAR2
14165 ,p_line_definition_code IN VARCHAR2
14166 ,p_accounting_line_type_code IN VARCHAR2
14167 ,p_accounting_line_code IN VARCHAR2
14168 ,p_mpa_accounting_line_type_co IN VARCHAR2
14169 ,p_mpa_accounting_line_code IN VARCHAR2)
14170 IS
14171 l_log_module VARCHAR2(240);
14172 BEGIN
14173 IF g_log_enabled THEN
14174 l_log_module := C_DEFAULT_MODULE||'.delete_mpa_jlt_details';
14175 END IF;
14176
14177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14178 trace(p_msg => 'BEGIN of procedure delete_mpa_jlt_details'
14179 ,p_module => l_log_module
14180 ,p_level => C_LEVEL_PROCEDURE);
14181 END IF;
14182
14183 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14184 trace(p_msg => 'application_id = '||p_application_id||
14185 ',amb_context_code = '||p_amb_context_code||
14186 ',event_class_code = '||p_event_class_code||
14187 ',event_type_code = '||p_event_type_code||
14188 ',line_definition_owner_code = '||p_line_definition_owner_code||
14189 ',line_definition_code = '||p_line_definition_code||
14190 ',accounting_line_type_code = '||p_accounting_line_type_code||
14191 ',accounting_line_code = '||p_accounting_line_code||
14192 ',mpa_accounting_line_type_co = '||p_mpa_accounting_line_type_co||
14193 ',mpa_accounting_line_code = ' ||p_mpa_accounting_line_code
14194 ,p_module => l_log_module
14195 ,p_level => C_LEVEL_STATEMENT);
14196 END IF;
14197
14198 DELETE
14199 FROM xla_mpa_jlt_adr_assgns
14200 WHERE application_id = p_application_id
14201 AND amb_context_code = p_amb_context_code
14202 AND event_class_code = p_event_class_code
14203 AND event_type_code = p_event_type_code
14204 AND line_definition_owner_code = p_line_definition_owner_code
14205 AND line_definition_code = p_line_definition_code
14206 AND accounting_line_type_code = p_accounting_line_type_code
14207 AND accounting_line_code = p_accounting_line_code
14208 AND mpa_accounting_line_type_code = p_mpa_accounting_line_type_co
14209 AND mpa_accounting_line_code = p_mpa_accounting_line_code;
14210
14211 DELETE
14212 FROM xla_mpa_jlt_ac_assgns
14213 WHERE application_id = p_application_id
14214 AND amb_context_code = p_amb_context_code
14215 AND event_class_code = p_event_class_code
14216 AND event_type_code = p_event_type_code
14217 AND line_definition_owner_code = p_line_definition_owner_code
14218 AND line_definition_code = p_line_definition_code
14219 AND accounting_line_type_code = p_accounting_line_type_code
14220 AND accounting_line_code = p_accounting_line_code
14221 AND mpa_accounting_line_type_code = p_mpa_accounting_line_type_co
14222 AND mpa_accounting_line_code = p_mpa_accounting_line_code;
14223
14224 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14225 trace(p_msg => 'END of procedure delete_mpa_jlt_details'
14226 ,p_module => l_log_module
14227 ,p_level => C_LEVEL_PROCEDURE);
14228 END IF;
14229
14230 EXCEPTION
14231 WHEN xla_exceptions_pkg.application_exception THEN
14232 RAISE;
14233 WHEN OTHERS THEN
14234 xla_exceptions_pkg.raise_message
14235 (p_location => 'xla_line_definitions_pvt.delete_mpa_jlt_details');
14236 END delete_mpa_jlt_details;
14237
14238
14239 --=============================================================================
14240 --
14241 -- Following code is executed when the package body is referenced for the first
14242 -- time
14243 --
14244 --=============================================================================
14245 BEGIN
14246 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14247 g_log_enabled := fnd_log.test
14248 (log_level => g_log_level
14249 ,module => C_DEFAULT_MODULE);
14250
14251 IF NOT g_log_enabled THEN
14252 g_log_level := C_LEVEL_LOG_DISABLED;
14253 END IF;
14254
14255 END xla_line_definitions_pvt;