DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_AAD_MERGE_ANALYSIS_PVT

Source


1 PACKAGE BODY xla_aad_merge_analysis_pvt AS
2 /* $Header: xlaalman.pkb 120.20 2011/05/24 06:46:35 sgullape ship $ */
3 /*===========================================================================+
4 |             Copyright (c) 2001-2002 Oracle Corporation                     |
5 |                       Redwood Shores, CA, USA                              |
6 |                         All rights reserved.                               |
7 +============================================================================+
8 | PACKAGE NAME                                                               |
9 |     xla_aad_merge_analysis_pvt                                             |
10 |                                                                            |
11 | DESCRIPTION                                                                |
12 |    AAD Loader Merge Analysis package                                       |
13 |                                                                            |
14 | HISTORY                                                                    |
15 |     01-MAY-2004 W. Chan     Created                                        |
16 |     13-APR-2005 W. Chan     Added Business Flow Changes                    |
17 |     05-AUG-2005 W. Chan     Added Public Sector Changes                    |
18 |     19-AUG-2005 W. Chan     Added MPA changes                              |
19 |                                                                            |
20 +===========================================================================*/
21 
22 --=============================================================================
23 --           ****************  declaraions  ********************
24 --=============================================================================
25 -------------------------------------------------------------------------------
26 -- declaring global types
27 -------------------------------------------------------------------------------
28 TYPE AssgnIndex  IS TABLE OF VARCHAR2(1)    INDEX BY VARCHAR2(720);
29 
30 -------------------------------------------------------------------------------
31 -- declaring global constants
32 -------------------------------------------------------------------------------
33 C_NUM                    CONSTANT NUMBER      := 9.99E125;
34 C_CHAR                   CONSTANT VARCHAR2(1) := '|'; -- fnd_global.local_chr(12);
35 C_DATE                   CONSTANT DATE        := TO_DATE('1','j');
36 
37 C_MERGE_IMPACT_UPDATED   CONSTANT VARCHAR2(30):= 'UPDATED';
38 C_MERGE_IMPACT_NEW       CONSTANT VARCHAR2(30):= 'NEW';
39 C_MERGE_IMPACT_DELETED   CONSTANT VARCHAR2(30):= 'DELETED';
40 C_MERGE_IMPACT_UNCHANGED CONSTANT VARCHAR2(30):= 'UNCHANGED';
41 
42 C_OWNER_ORACLE           CONSTANT VARCHAR2(1) := 'S';
43 C_OWNER_CUSTOM           CONSTANT VARCHAR2(1) := 'C';
44 
45 ------------------------------------------------------------------------------
46 -- declaring global variables
47 ------------------------------------------------------------------------------
48 g_application_id              NUMBER;
49 g_amb_context_code            VARCHAR2(30);
50 g_staging_context_code        VARCHAR2(30);
51 g_batch_name                  VARCHAR2(240);  --Modified from size 30 to 240 for bug 8463447 by krsankar
52 g_aad_groups                  xla_aad_group_tbl_type;
53 g_user_mode                   VARCHAR2(30);
54 
55 g_assgns            AssgnIndex;
56 g_num_updated_props INTEGER;
57 g_updated_props     xla_amb_updated_prop_tbl_type := xla_amb_updated_prop_tbl_type();
58 g_num_updated_comps INTEGER;
59 g_updated_comps     xla_amb_updated_comp_tbl_type := xla_amb_updated_comp_tbl_type();
60 
61 --=============================================================================
62 --               *********** Local Trace Routine **********
63 --=============================================================================
64 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
65 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
66 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
67 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
68 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
69 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
70 
71 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
72 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_aad_merge_analysis_pvt';
73 
74 g_log_level           NUMBER;
75 g_log_enabled         BOOLEAN;
76 
77 PROCEDURE trace
78   (p_msg                        IN VARCHAR2
79   ,p_module                     IN VARCHAR2
80   ,p_level                      IN NUMBER) IS
81 BEGIN
82   ----------------------------------------------------------------------------
83   -- Following is for FND log.
84   ----------------------------------------------------------------------------
85   IF (p_msg IS NULL AND p_level >= g_log_level) THEN
86     fnd_log.message(p_level, p_module);
87   ELSIF p_level >= g_log_level THEN
88     fnd_log.string(p_level, p_module, p_msg);
89   END IF;
90 EXCEPTION
91   WHEN xla_exceptions_pkg.application_exception THEN
92     RAISE;
93 
94   WHEN OTHERS THEN
95     xla_exceptions_pkg.raise_message
96       (p_location   => 'xla_aad_merge_analysis_pvt.trace');
97 END trace;
98 
99 
100 --=============================================================================
101 --          *********** private procedures and functions **********
102 --=============================================================================
103 
104 --=============================================================================
105 --
106 -- Name: pre_analysis
107 -- Description: This API prepares the environment for merge
108 --
109 --=============================================================================
110 FUNCTION pre_analysis
111 RETURN VARCHAR2
112 IS
113   CURSOR c IS
114     SELECT *
115       FROM xla_appli_amb_contexts
116      WHERE application_id   = g_application_id
117        AND amb_context_code = g_amb_context_code
118     FOR UPDATE OF application_id NOWAIT;
119 
120   l_lock_error    BOOLEAN;
121   l_recinfo       xla_appli_amb_contexts%ROWTYPE;
122   l_retcode       VARCHAR2(30);
123 
124   l_log_module    VARCHAR2(240);
125 BEGIN
126   IF g_log_enabled THEN
127     l_log_module := C_DEFAULT_MODULE||'.pre_analysis';
128   END IF;
129 
130   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131     trace(p_msg    => 'BEGIN of function pre_analysis',
132           p_module => l_log_module,
133           p_level  => C_LEVEL_PROCEDURE);
134   END IF;
135 
136   l_retcode := 'SUCCESS';
137 
138   -- Begin API Logic
139 
140   -- Lock the staging area of the AMB context
141   l_lock_error := TRUE;
142   OPEN c;
143   CLOSE c;
144   l_lock_error := FALSE;
145 
146   IF (l_retcode = 'SUCCESS') THEN
147     l_retcode := xla_aad_loader_util_pvt.lock_area
148                    (p_application_id   => g_application_id
149                    ,p_amb_context_code => g_amb_context_code);
150 
151     IF (l_retcode <> 'SUCCESS') THEN
152       xla_aad_loader_util_pvt.stack_error
153         (p_appli_s_name  => 'XLA'
154         ,p_msg_name      => 'XLA_AAD_MGR_LOCK_FAILED');
155       l_retcode := 'ERROR';
156     END IF;
157   END IF;
158 
159   DELETE FROM xla_amb_updated_comps
160         WHERE application_id   = g_application_id
161           AND amb_context_code = g_amb_context_code;
162 
163   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164     trace(p_msg    => 'END of function pre_analysis - Return value = '||l_retcode,
165           p_module => l_log_module,
166           p_level  => C_LEVEL_PROCEDURE);
167   END IF;
168 
169   RETURN l_retcode;
170 EXCEPTION
171 WHEN OTHERS THEN
172   IF (c%ISOPEN) THEN
173     CLOSE c;
174   END IF;
175 
176   IF (l_lock_error) THEN
177     l_retcode := 'ERROR';
178 
179     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180       trace(p_msg    => 'END of function pre_analysis - Return value = '||l_retcode,
181             p_module => l_log_module,
182             p_level  => C_LEVEL_PROCEDURE);
183     END IF;
184 
185     xla_aad_loader_util_pvt.stack_error
186           (p_appli_s_name  => 'XLA'
187           ,p_msg_name      => 'XLA_AAD_MAN_LOCK_FAILED');
188 
189     RETURN l_retcode;
190   ELSE
191     xla_aad_loader_util_pvt.stack_error
192                (p_appli_s_name    => 'XLA'
193                ,p_msg_name        => 'XLA_COMMON_ERROR'
194                ,p_token_1         => 'LOCATION'
195                ,p_value_1         => 'xla_aad_merge_analysis_pvt.pre_analysis'
196                ,p_token_2         => 'ERROR'
197                ,p_value_2         => 'unhandled exception');
198     RAISE;
199   END IF;
200 
201 END pre_analysis;
202 
203 --=============================================================================
204 --
205 -- Name: validation
206 -- Description: This API validate the AADs and components
207 -- Return codes:
208 --   SUCCESS - completed sucessfully
209 --   ERROR   - completed with error
210 --
211 --=============================================================================
212 FUNCTION validation
213 RETURN VARCHAR2
214 IS
215   l_retcode       VARCHAR2(30);
216   l_log_module    VARCHAR2(240);
217 BEGIN
218   IF g_log_enabled THEN
219     l_log_module := C_DEFAULT_MODULE||'.validation';
220   END IF;
221 
222   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
223     trace(p_msg    => 'BEGIN of function validation',
224           p_module => l_log_module,
225           p_level  => C_LEVEL_PROCEDURE);
226   END IF;
227 
228   l_retcode := 'SUCCESS';
229 
230   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
231     trace(p_msg    => 'END of function validation - Return value = '||l_retcode,
232           p_module => l_log_module,
233           p_level  => C_LEVEL_PROCEDURE);
234   END IF;
235 
236   return l_retcode;
237 EXCEPTION
238 WHEN OTHERS THEN
239   xla_aad_loader_util_pvt.stack_error
240                (p_appli_s_name    => 'XLA'
241                ,p_msg_name        => 'XLA_COMMON_ERROR'
242                ,p_token_1         => 'LOCATION'
243                ,p_value_1         => 'xla_aad_merge_analysis_pvt.validation'
244                ,p_token_2         => 'ERROR'
245                ,p_value_2         => 'Unhandled exception');
246   RAISE;
247 
248 END validation;
249 
250 
251 --=============================================================================
252 --
253 --
254 --
255 --=============================================================================
256 PROCEDURE record_updated_property
257 (p_component_type          VARCHAR2
258 ,p_component_key           VARCHAR2
259 ,p_property                VARCHAR2
260 ,p_old_value               VARCHAR2
261 ,p_new_value               VARCHAR2
262 ,p_lookup_type             VARCHAR2)
263 IS
264   l_prop      xla_amb_updated_prop_rec_type :=
265        xla_amb_updated_prop_rec_type (null, null, null, null, null, null, null
266                                      ,null, null, null, null, null, null);
267 
268   l_log_module             VARCHAR2(240);
269 BEGIN
270   IF g_log_enabled THEN
271     l_log_module := C_DEFAULT_MODULE||'.record_updated_property';
272   END IF;
273 
274   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
275     trace(p_msg    => 'BEGIN of function record_updated_property',
276           p_module => l_log_module,
277           p_level  => C_LEVEL_PROCEDURE);
278     trace(p_msg    => 'p_component_type = '||p_component_type,
279           p_module => l_log_module,
280           p_level  => C_LEVEL_PROCEDURE);
281     trace(p_msg    => 'p_component_key = '||p_component_key,
282           p_module => l_log_module,
283           p_level  => C_LEVEL_PROCEDURE);
284     trace(p_msg    => 'p_property = '||p_property,
285           p_module => l_log_module,
286           p_level  => C_LEVEL_PROCEDURE);
287     trace(p_msg    => 'p_old_value = '||p_old_value,
288           p_module => l_log_module,
289           p_level  => C_LEVEL_PROCEDURE);
290     trace(p_msg    => 'p_new_value = '||p_new_value,
291           p_module => l_log_module,
292           p_level  => C_LEVEL_PROCEDURE);
293     trace(p_msg    => 'p_lookup_type = '||p_lookup_type,
294           p_module => l_log_module,
295           p_level  => C_LEVEL_PROCEDURE);
296   END IF;
297 
298   l_prop.component_type := p_component_type;
299   l_prop.component_key  := p_component_key;
300   l_prop.property       := p_property;
301 
302   IF (p_old_value IS NOT NULL) THEN
303     l_prop.old_value      := p_old_value;
304   END IF;
305 
306   l_prop.new_value      := p_new_value;
307   l_prop.lookup_type    := p_lookup_type;
308 
309   g_num_updated_props := g_num_updated_props+1;
310   g_updated_props.extend;
311   g_updated_props(g_num_updated_props) := l_prop;
312 
313   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314     trace(p_msg    => 'END of function record_updated_property',
315           p_module => l_log_module,
316           p_level  => C_LEVEL_PROCEDURE);
317   END IF;
318 
319 EXCEPTION
320   WHEN xla_exceptions_pkg.application_exception THEN
321     RAISE;
322   WHEN OTHERS THEN
323    xla_exceptions_pkg.raise_message
324       (p_location => l_log_module);
325 END record_updated_property;
326 
327 --=============================================================================
328 --
329 --
330 --
331 --=============================================================================
332 PROCEDURE record_updated_property
333 (p_component_type          VARCHAR2
334 ,p_component_key           VARCHAR2
335 ,p_property                VARCHAR2
336 ,p_old_value               VARCHAR2
337 ,p_new_value               VARCHAR2)
338 IS
339   l_log_module             VARCHAR2(240);
340 BEGIN
341   IF g_log_enabled THEN
342     l_log_module := C_DEFAULT_MODULE||'.record_updated_property';
343   END IF;
344 
345   record_updated_property
346           (p_component_type => p_component_type
347           ,p_component_key  => p_component_key
348           ,p_property       => p_property
349           ,p_old_value      => p_old_value
350           ,p_new_value      => p_new_value
351           ,p_lookup_type    => NULL);
352 
353 EXCEPTION
354   WHEN xla_exceptions_pkg.application_exception THEN
355     RAISE;
356   WHEN OTHERS THEN
357    xla_exceptions_pkg.raise_message
358       (p_location => l_log_module);
359 END record_updated_property;
360 
361 
362 --=============================================================================
363 --
364 --
365 --
366 --=============================================================================
367 PROCEDURE record_updated_value
368 (p_component_type          VARCHAR2
372 ,p_old_source_app_id       INTEGER
369 ,p_component_key           VARCHAR2
370 ,p_property                VARCHAR2
371 ,p_old_value               VARCHAR2
373 ,p_old_source_type_code    VARCHAR2
374 ,p_old_source_code         VARCHAR2
375 ,p_new_value               VARCHAR2
376 ,p_new_source_app_id       INTEGER
377 ,p_new_source_type_code    VARCHAR2
378 ,p_new_source_code         VARCHAR2)
379 IS
380   l_prop      xla_amb_updated_prop_rec_type :=
381        xla_amb_updated_prop_rec_type (null, null, null, null, null, null, null
382                                      ,null, null, null, null, null, null);
383 
384   l_log_module             VARCHAR2(240);
385 BEGIN
386   IF g_log_enabled THEN
387     l_log_module := C_DEFAULT_MODULE||'.record_updated_value';
388   END IF;
389 
390   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
391     trace(p_msg    => 'BEGIN of function record_updated_value',
392           p_module => l_log_module,
393           p_level  => C_LEVEL_PROCEDURE);
394     trace(p_msg    => 'p_component_type = '||p_component_type,
395           p_module => l_log_module,
396           p_level  => C_LEVEL_PROCEDURE);
397     trace(p_msg    => 'p_component_key = '||p_component_key,
398           p_module => l_log_module,
399           p_level  => C_LEVEL_PROCEDURE);
400     trace(p_msg    => 'p_property = '||p_property,
401           p_module => l_log_module,
402           p_level  => C_LEVEL_PROCEDURE);
403     trace(p_msg    => 'p_old_value = '||p_old_value,
404           p_module => l_log_module,
405           p_level  => C_LEVEL_PROCEDURE);
406     trace(p_msg    => 'p_old_source_app_id = '||p_old_source_app_id,
407           p_module => l_log_module,
408           p_level  => C_LEVEL_PROCEDURE);
409     trace(p_msg    => 'p_old_source_type_code = '||p_old_source_type_code,
410           p_module => l_log_module,
411           p_level  => C_LEVEL_PROCEDURE);
412     trace(p_msg    => 'p_old_source_code = '||p_old_source_code,
413           p_module => l_log_module,
414           p_level  => C_LEVEL_PROCEDURE);
415     trace(p_msg    => 'p_new_value = '||p_new_value,
416           p_module => l_log_module,
417           p_level  => C_LEVEL_PROCEDURE);
418     trace(p_msg    => 'p_new_source_app_id = '||p_new_source_app_id,
419           p_module => l_log_module,
420           p_level  => C_LEVEL_PROCEDURE);
421     trace(p_msg    => 'p_new_source_type_code = '||p_new_source_type_code,
422           p_module => l_log_module,
423           p_level  => C_LEVEL_PROCEDURE);
424     trace(p_msg    => 'p_new_source_code = '||p_new_source_code,
425           p_module => l_log_module,
426           p_level  => C_LEVEL_PROCEDURE);
427   END IF;
428 
429   l_prop.component_type       := p_component_type;
430   l_prop.component_key        := p_component_key;
431   l_prop.property             := p_property;
432   l_prop.old_value            := p_old_value;
433   l_prop.old_source_app_id    := p_old_source_app_id;
434   l_prop.old_source_type_code := p_old_source_type_code;
435   l_prop.old_source_code      := p_old_source_code;
436   l_prop.new_value            := p_new_value;
437   l_prop.new_source_app_id    := p_new_source_app_id;
438   l_prop.new_source_type_code := p_new_source_type_code;
439   l_prop.new_source_code      := p_new_source_code;
440 
441   g_num_updated_props := g_num_updated_props+1;
442   g_updated_props.extend;
443   g_updated_props(g_num_updated_props) := l_prop;
444 
445   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
446     trace(p_msg    => 'END of function record_updated_value',
447           p_module => l_log_module,
448           p_level  => C_LEVEL_PROCEDURE);
449   END IF;
450 
451 EXCEPTION
452   WHEN xla_exceptions_pkg.application_exception THEN
453     RAISE;
454   WHEN OTHERS THEN
455    xla_exceptions_pkg.raise_message
456       (p_location => l_log_module);
457 END record_updated_value;
458 
459 
460 --=============================================================================
461 --
462 --
463 --
464 --=============================================================================
465 PROCEDURE record_updated_source
466 (p_component_type          VARCHAR2
467 ,p_component_key           VARCHAR2
468 ,p_property                VARCHAR2
469 ,p_old_source_app_id       INTEGER
470 ,p_old_source_type_code    VARCHAR2
471 ,p_old_source_code         VARCHAR2
472 ,p_new_source_app_id       INTEGER
473 ,p_new_source_type_code    VARCHAR2
474 ,p_new_source_code         VARCHAR2)
475 IS
476   l_log_module             VARCHAR2(240);
477 BEGIN
478   IF g_log_enabled THEN
479     l_log_module := C_DEFAULT_MODULE||'.record_updated_source';
480   END IF;
481 
482   record_updated_value
483             (p_component_type          => p_component_type
484             ,p_component_key           => p_component_key
485             ,p_property                => p_property
486             ,p_old_value               => NULL
487             ,p_old_source_app_id       => p_old_source_app_id
488             ,p_old_source_type_code    => p_old_source_type_code
489             ,p_old_source_code         => p_old_source_code
490             ,p_new_value               => NULL
491             ,p_new_source_app_id       => p_new_source_app_id
492             ,p_new_source_type_code    => p_new_source_type_code
493             ,p_new_source_code         => p_new_source_code);
494 
495 EXCEPTION
496   WHEN xla_exceptions_pkg.application_exception THEN
497     RAISE;
498   WHEN OTHERS THEN
499    xla_exceptions_pkg.raise_message
500       (p_location => l_log_module);
501 END record_updated_source;
502 
503 
504 --=============================================================================
505 --
506 --
507 --
511 ,p_parent_component_key           VARCHAR2
508 --=============================================================================
509 PROCEDURE record_updated_component
510 (p_parent_component_type          VARCHAR2
512 ,p_component_type                 VARCHAR2
513 ,p_component_key                  VARCHAR2
514 ,p_merge_impact                   VARCHAR2
515 ,p_event_class_code               VARCHAR2 DEFAULT NULL
516 ,p_event_type_code                VARCHAR2 DEFAULT NULL
517 ,p_component_appl_id              NUMBER   DEFAULT NULL
518 ,p_component_owner_code           VARCHAR2 DEFAULT NULL
519 ,p_component_code                 VARCHAR2 DEFAULT NULL
520 ,p_parent_component_owner_code    VARCHAR2 DEFAULT NULL
521 ,p_parent_component_code          VARCHAR2 DEFAULT NULL
522 ,p_property                       VARCHAR2 DEFAULT NULL
523 ,p_old_value                      VARCHAR2 DEFAULT NULL
524 ,p_lookup_type                    VARCHAR2 DEFAULT NULL)
525 IS
526   l_comp      xla_amb_updated_comp_rec_type :=
527               xla_amb_updated_comp_rec_type (null, null, null, null, null, null
528                                            , null, null, null, null, null, null
529                                            , null, null, null, null, null, null);
530 
531   l_log_module             VARCHAR2(240);
532 BEGIN
533   IF g_log_enabled THEN
534     l_log_module := C_DEFAULT_MODULE||'.record_updated_component';
535   END IF;
536 
537   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
538     trace(p_msg    => 'BEGIN of function record_updated_component',
539           p_module => l_log_module,
540           p_level  => C_LEVEL_PROCEDURE);
541     trace(p_msg    => 'p_parent_component_type = '||p_parent_component_type,
542           p_module => l_log_module,
543           p_level  => C_LEVEL_PROCEDURE);
544     trace(p_msg    => 'p_parent_component_key = '||p_parent_component_key,
545           p_module => l_log_module,
546           p_level  => C_LEVEL_PROCEDURE);
547     trace(p_msg    => 'p_component_type = '||p_component_type,
548           p_module => l_log_module,
549           p_level  => C_LEVEL_PROCEDURE);
550     trace(p_msg    => 'p_component_key = '||p_component_key,
551           p_module => l_log_module,
552           p_level  => C_LEVEL_PROCEDURE);
553     trace(p_msg    => 'p_merge_impact = '||p_merge_impact,
554           p_module => l_log_module,
555           p_level  => C_LEVEL_PROCEDURE);
556   END IF;
557 
558   l_comp.parent_component_type        := p_parent_component_type;
559   l_comp.parent_component_key         := p_parent_component_key;
560   l_comp.component_type               := p_component_type;
561   l_comp.component_key                := p_component_key;
562   l_comp.merge_impact                 := p_merge_impact;
563   l_comp.event_class_code             := p_event_class_code;
564   l_comp.event_type_code              := p_event_type_code;
565   l_comp.component_appl_id            := p_component_appl_id;
566   l_comp.component_owner_code         := p_component_owner_code;
567   l_comp.component_code               := p_component_code;
568   l_comp.parent_component_owner_code  := p_parent_component_owner_code;
569   l_comp.parent_component_code        := p_parent_component_code;
570 
571   g_num_updated_comps := g_num_updated_comps+1;
572   g_updated_comps.extend;
573   g_updated_comps(g_num_updated_comps) := l_comp;
574 
575   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
576     trace(p_msg    => 'END of function record_updated_component',
577           p_module => l_log_module,
578           p_level  => C_LEVEL_PROCEDURE);
579   END IF;
580 
581 EXCEPTION
582   WHEN xla_exceptions_pkg.application_exception THEN
583     RAISE;
584   WHEN OTHERS THEN
585    xla_exceptions_pkg.raise_message
586       (p_location => l_log_module);
587 END record_updated_component;
588 
589 --=============================================================================
590 --
591 --
592 --
593 --=============================================================================
594 FUNCTION key_exists
595 (p_key           VARCHAR2)
596 RETURN BOOLEAN
597 IS
598   l_log_module             VARCHAR2(240);
599   l_retcode                BOOLEAN;
600 BEGIN
601   IF g_log_enabled THEN
602     l_log_module := C_DEFAULT_MODULE||'.key_exists';
603   END IF;
604 
605   BEGIN
606     IF (g_assgns(p_key) = 1) THEN
607       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
608           trace(p_msg    => 'Check key '||p_key||': exists',
609                 p_module => l_log_module,
610                 p_level  => C_LEVEL_PROCEDURE);
611       END IF;
612     END IF;
613     l_retcode := TRUE;
614   EXCEPTION
615     WHEN NO_DATA_FOUND THEN
616       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
617           trace(p_msg    => 'Check key '||p_key||': not exists',
618                 p_module => l_log_module,
619                 p_level  => C_LEVEL_PROCEDURE);
620       END IF;
621 
622       g_assgns(p_key) := 1;
623       l_retcode := FALSE;
624   END;
625 
626   RETURN l_retcode;
627 EXCEPTION
628   WHEN xla_exceptions_pkg.application_exception THEN
629     RAISE;
630   WHEN OTHERS THEN
631    xla_exceptions_pkg.raise_message
632       (p_location => l_log_module);
633 END key_exists;
634 
635 --=============================================================================
636 --
637 -- Name: record_updated_aad
638 -- Description: Record that an AAD is updated
639 --
640 --=============================================================================
641 PROCEDURE record_updated_aad
642 (p_product_rule_type_code     VARCHAR2
643 ,p_product_rule_code          VARCHAR2
644 ,p_merge_impact               VARCHAR2)
645 IS
646   l_key                    VARCHAR2(240);
650     l_log_module := C_DEFAULT_MODULE||'.record_updated_aad';
647   l_log_module             VARCHAR2(240);
648 BEGIN
649   IF g_log_enabled THEN
651   END IF;
652 
653   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
654     trace(p_msg    => 'BEGIN of function record_updated_aad: '||
655                       'p_product_rule_type_code = '||p_product_rule_type_code||
656                       ', p_product_rule_code = '||p_product_rule_code||
657                       ', p_merge_impact = '||p_merge_impact,
658           p_module => l_log_module,
659           p_level  => C_LEVEL_PROCEDURE);
660   END IF;
661 
662   l_key := p_product_rule_type_code||C_CHAR||
663            p_product_rule_code;
664 
665   IF (NOT key_exists('AAD'||C_CHAR||l_key)) THEN
666     record_updated_component
667             (p_parent_component_type => 'APPLICATION'
668             ,p_parent_component_key  => g_application_id
669             ,p_component_type        => 'AMB_AAD'
670             ,p_component_key         => l_key
671             ,p_merge_impact          => p_merge_impact
672             ,p_component_owner_code  => p_product_rule_type_code
673             ,p_component_code        => p_product_rule_code);
674   END IF;
675 
676   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
677     trace(p_msg    => 'END of function record_updated_aad',
678           p_module => l_log_module,
679           p_level  => C_LEVEL_PROCEDURE);
680   END IF;
681 
682 EXCEPTION
683   WHEN xla_exceptions_pkg.application_exception THEN
684     RAISE;
685   WHEN OTHERS THEN
686    xla_exceptions_pkg.raise_message
687       (p_location => l_log_module);
688 END record_updated_aad;
689 
690 --=============================================================================
691 --
692 -- Name: record_updated_header_assgn
693 -- Description: Record a header assignment is updated
694 --
695 --=============================================================================
696 PROCEDURE record_updated_header_assgn
697 (p_product_rule_type_code     VARCHAR2
698 ,p_product_rule_code          VARCHAR2
699 ,p_event_class_code           VARCHAR2
700 ,p_event_type_code            VARCHAR2
701 ,p_merge_impact               VARCHAR2)
702 IS
703   l_key                    VARCHAR2(240);
704   l_log_module             VARCHAR2(240);
705 BEGIN
706   IF g_log_enabled THEN
707     l_log_module := C_DEFAULT_MODULE||'.record_updated_header_assgn';
708   END IF;
709 
710   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
711     trace(p_msg    => 'BEGIN of function record_updated_header_assgn',
712           p_module => l_log_module,
713           p_level  => C_LEVEL_PROCEDURE);
714   END IF;
715 
716   l_key := p_product_rule_type_code||C_CHAR||
717            p_product_rule_code||C_CHAR||
718            p_event_class_code||C_CHAR||
719            p_event_type_code;
720 
721   IF (NOT key_exists('ET'||C_CHAR||l_key)) THEN
722     record_updated_component
723             (p_parent_component_type => 'AMB_AAD_EVENT_CLASS'
724             ,p_parent_component_key  => p_product_rule_type_code||C_CHAR||
725                                         p_product_rule_code||C_CHAR||
726                                         p_event_class_code
727             ,p_component_type        => 'AMB_AAD_EVENT_TYPE'
728             ,p_component_key         => l_key
729             ,p_merge_impact          => p_merge_impact
730             ,p_event_class_code      => p_event_class_code
731             ,p_event_type_code       => p_event_type_code
732             ,p_component_code        => p_event_type_code);
733 
734     l_key := p_product_rule_type_code||C_CHAR||
735              p_product_rule_code||C_CHAR||
736              p_event_class_code;
737 
738     IF (NOT key_exists('EC'||C_CHAR||l_key)) THEN
739       record_updated_component
740             (p_parent_component_type => 'AMB_AAD'
741             ,p_parent_component_key  => p_product_rule_type_code||C_CHAR||
742                                         p_product_rule_code
743             ,p_component_type        => 'AMB_AAD_EVENT_CLASS'
744             ,p_component_key         => l_key
745             ,p_merge_impact          => C_MERGE_IMPACT_UPDATED
746             ,p_event_class_code      => p_event_class_code
747             ,p_component_code        => p_event_class_code);
748 
749       record_updated_aad
750             (p_product_rule_type_code => p_product_rule_type_code
751             ,p_product_rule_code      => p_product_rule_code
752             ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
753 
754     END IF;
755   END IF;
756 
757   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
758     trace(p_msg    => 'END of function record_updated_header_assgn',
759           p_module => l_log_module,
760           p_level  => C_LEVEL_PROCEDURE);
761   END IF;
762 EXCEPTION
763   WHEN xla_exceptions_pkg.application_exception THEN
764     RAISE;
765   WHEN OTHERS THEN
766    xla_exceptions_pkg.raise_message
767       (p_location => l_log_module);
768 END record_updated_header_assgn;
769 
770 --=============================================================================
771 --
772 --
773 --
774 --=============================================================================
775 PROCEDURE record_updated_jld_assgn
776 (p_product_rule_type_code     VARCHAR2
777 ,p_product_rule_code          VARCHAR2
778 ,p_event_class_code           VARCHAR2
779 ,p_event_type_code            VARCHAR2
780 ,p_line_defn_owner_code       VARCHAR2
781 ,p_line_defn_code             VARCHAR2
782 ,p_merge_impact               VARCHAR2)
783 IS
784   l_parent_key             VARCHAR2(240);
785   l_key                    VARCHAR2(240);
786   l_log_module             VARCHAR2(240);
787 BEGIN
791 
788   IF g_log_enabled THEN
789     l_log_module := C_DEFAULT_MODULE||'.record_updated_jld_assgn';
790   END IF;
792   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
793     trace(p_msg    => 'BEGIN of function record_updated_jld_assgn',
794           p_module => l_log_module,
795           p_level  => C_LEVEL_PROCEDURE);
796   END IF;
797 
798   l_parent_key := p_product_rule_type_code||C_CHAR||
799                   p_product_rule_code||C_CHAR||
800                   p_event_class_code||C_CHAR||
801                   p_event_type_code;
802 
803   l_key := p_event_class_code||C_CHAR||
804            p_event_type_code||C_CHAR||
805            p_line_defn_owner_code||C_CHAR||
806            p_line_defn_code;
807 
808   IF (NOT key_exists('ETJLD'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
809     record_updated_component
810           (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
811           ,p_parent_component_key  => l_parent_key
812           ,p_component_type        => 'AMB_JLD'
813           ,p_component_key         => l_key
814           ,p_merge_impact          => p_merge_impact
815           ,p_event_class_code      => p_event_class_code
816           ,p_event_type_code       => p_event_type_code
817           ,p_component_owner_code  => p_line_defn_owner_code
818           ,p_component_code        => p_line_defn_code);
819 
820     record_updated_header_assgn
821           (p_product_rule_type_code => p_product_rule_type_code
822           ,p_product_rule_code      => p_product_rule_code
823           ,p_event_class_code       => p_event_class_code
824           ,p_event_type_code        => p_event_type_code
825           ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
826   END IF;
827 
828   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
829     trace(p_msg    => 'END of function record_updated_jld_assgn',
830           p_module => l_log_module,
831           p_level  => C_LEVEL_PROCEDURE);
832   END IF;
833 EXCEPTION
834   WHEN xla_exceptions_pkg.application_exception THEN
835     RAISE;
836   WHEN OTHERS THEN
837    xla_exceptions_pkg.raise_message
838       (p_location => l_log_module);
839 END record_updated_jld_assgn;
840 
841 
842 --=============================================================================
843 --
844 -- Name: record_updated_jld
845 -- Description: Determine the components that has assigned the JLD that is
846 --              modified, and record the changes for those components.
847 --
848 --=============================================================================
849 PROCEDURE record_updated_jld
850 (p_event_class_code           VARCHAR2
851 ,p_event_type_code            VARCHAR2
852 ,p_line_definition_owner_code VARCHAR2
853 ,p_line_definition_code       VARCHAR2)
854 IS
855   CURSOR c_assgns IS
856     SELECT w.product_rule_type_code
857          , w.product_rule_code
858       FROM xla_aad_line_defn_assgns w
859          , xla_aad_line_defn_assgns s
860      WHERE s.application_id             = g_application_id
861        AND s.amb_context_code           = g_staging_context_code
862        AND s.product_rule_type_code     = w.product_rule_type_code
863        AND s.product_rule_code          = w.product_rule_code
864        AND s.event_class_code           = w.event_class_code
865        AND s.event_type_code            = w.event_type_code
866        AND s.line_definition_owner_code = w.line_definition_owner_code
867        AND s.line_definition_code       = w.line_definition_code
868        AND w.application_id             = g_application_id
869        AND w.amb_context_code           = g_amb_context_code
870        AND w.event_class_code           = p_event_class_code
871        AND w.event_type_code            = p_event_type_code
872        AND w.line_definition_owner_code = p_line_definition_owner_code
873        AND w.line_definition_code       = p_line_definition_code;
874 
875   l_key                    VARCHAR2(240);
876   l_log_module             VARCHAR2(240);
877 BEGIN
878   IF g_log_enabled THEN
879     l_log_module := C_DEFAULT_MODULE||'.record_updated_jld';
880   END IF;
881 
882   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
883     trace(p_msg    => 'BEGIN of function record_updated_jld: '||
884                       'p_event_class_code = '||p_event_class_code||
885                       ', p_event_type_code = '||p_event_type_code||
886                       ', p_line_definition_owner_code = '||p_line_definition_owner_code||
887                       ', p_line_definition_code = '||p_line_definition_code,
888           p_module => l_log_module,
889           p_level  => C_LEVEL_PROCEDURE);
890   END IF;
891 
892   l_key := p_event_class_code||C_CHAR||
893            p_event_type_code||C_CHAR||
894            p_line_definition_owner_code||C_CHAR||
895            p_line_definition_code;
896 
897   IF (NOT key_exists('JLD'||C_CHAR||l_key)) THEN
898     FOR l_assgn IN c_assgns LOOP
899 
900       record_updated_jld_assgn
901             (p_product_rule_type_code     => l_assgn.product_rule_type_code
902             ,p_product_rule_code          => l_assgn.product_rule_code
903             ,p_event_class_code           => p_event_class_code
904             ,p_event_type_code            => p_event_type_code
905             ,p_line_defn_owner_code       => p_line_definition_owner_code
906             ,p_line_defn_code             => p_line_definition_code
907             ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
908 
909     END LOOP;
910 
911   END IF;
912 
913   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
914     trace(p_msg    => 'END of function record_updated_jld',
915           p_module => l_log_module,
916           p_level  => C_LEVEL_PROCEDURE);
917   END IF;
918 
919 EXCEPTION
920   WHEN xla_exceptions_pkg.application_exception THEN
924       (p_location => l_log_module);
921     RAISE;
922   WHEN OTHERS THEN
923    xla_exceptions_pkg.raise_message
925 END record_updated_jld;
926 
927 --=============================================================================
928 --
929 --
930 --
931 --=============================================================================
932 PROCEDURE record_updated_line_assgn
933 (p_event_class_code           VARCHAR2
934 ,p_event_type_code            VARCHAR2
935 ,p_line_definition_owner_code VARCHAR2
936 ,p_line_definition_code       VARCHAR2
937 ,p_accounting_line_type_code  VARCHAR2
938 ,p_accounting_line_code       VARCHAR2
939 ,p_merge_impact               VARCHAR2)
940 IS
941   l_parent_key             VARCHAR2(240);
942   l_key                    VARCHAR2(240);
943   l_log_module             VARCHAR2(240);
944 BEGIN
945   IF g_log_enabled THEN
946     l_log_module := C_DEFAULT_MODULE||'.record_updated_line_assgn';
947   END IF;
948 
949   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
950     trace(p_msg    => 'BEGIN of function record_updated_line_assgn: '||
951                       'p_event_class_code = '||p_event_class_code||
952                       ', p_event_type_code = '||p_event_type_code||
953                       ', p_line_definition_owner_code = '||p_line_definition_owner_code||
954                       ', p_line_definition_code = '||p_line_definition_code||
955                       ', p_accounting_line_type_code = '||p_accounting_line_type_code||
956                       ', p_accounting_line_code = '||p_accounting_line_code,
957           p_module => l_log_module,
958           p_level  => C_LEVEL_PROCEDURE);
959   END IF;
960 
961   l_parent_key := p_event_class_code||C_CHAR||
962                   p_event_type_code||C_CHAR||
963                   p_line_definition_owner_code||C_CHAR||
964                   p_line_definition_code;
965 
966   l_key := l_parent_key||C_CHAR||
967            p_accounting_line_type_code||C_CHAR||
968            p_accounting_line_code;
969 
970   IF (NOT key_exists('LNA'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
971     record_updated_component
972               (p_parent_component_type => 'AMB_JLD'
973               ,p_parent_component_key  => l_parent_key
974               ,p_component_type        => 'AMB_LINE_ASSIGNMENT'
975               ,p_component_key         => l_key
976               ,p_merge_impact          => p_merge_impact
977               ,p_event_class_code      => p_event_class_code
978               ,p_event_type_code       => NULL
979               ,p_component_owner_code  => p_accounting_line_type_code
980               ,p_component_code        => p_accounting_line_code);
981 
982     record_updated_jld
983              (p_event_class_code           => p_event_class_code
984              ,p_event_type_code            => p_event_type_code
985              ,p_line_definition_owner_code => p_line_definition_owner_code
986              ,p_line_definition_code       => p_line_definition_code);
987 
988   END IF;
989 
990   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
991     trace(p_msg    => 'END of function record_updated_line_assgn',
992           p_module => l_log_module,
993           p_level  => C_LEVEL_PROCEDURE);
994   END IF;
995 
996 EXCEPTION
997   WHEN xla_exceptions_pkg.application_exception THEN
998     RAISE;
999   WHEN OTHERS THEN
1000    xla_exceptions_pkg.raise_message
1001       (p_location => l_log_module);
1002 END record_updated_line_assgn;
1003 
1004 --=============================================================================
1005 --
1006 --
1007 --
1008 --=============================================================================
1009 PROCEDURE record_updated_mpa_assgn
1010 (p_event_class_code           VARCHAR2
1011 ,p_event_type_code            VARCHAR2
1012 ,p_line_definition_owner_code VARCHAR2
1013 ,p_line_definition_code       VARCHAR2
1014 ,p_accounting_line_type_code  VARCHAR2
1015 ,p_accounting_line_code       VARCHAR2
1016 ,p_merge_impact               VARCHAR2)
1017 IS
1018   l_key                    VARCHAR2(240);
1019   l_log_module             VARCHAR2(240);
1020 BEGIN
1021   IF g_log_enabled THEN
1022     l_log_module := C_DEFAULT_MODULE||'.record_updated_mpa_assgn';
1023   END IF;
1024 
1025   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1026     trace(p_msg    => 'BEGIN of function record_updated_mpa_assgn: '||
1027                       'p_event_class_code = '||p_event_class_code||
1028                       ', p_event_type_code = '||p_event_type_code||
1029                       ', p_line_definition_owner_code = '||p_line_definition_owner_code||
1030                       ', p_line_definition_code = '||p_line_definition_code||
1031                       ', p_accounting_line_type_code = '||p_accounting_line_type_code||
1032                       ', p_accounting_line_code = '||p_accounting_line_code,
1033           p_module => l_log_module,
1034           p_level  => C_LEVEL_PROCEDURE);
1035   END IF;
1036 
1037   l_key := p_event_class_code||C_CHAR||
1038            p_event_type_code||C_CHAR||
1039            p_line_definition_owner_code||C_CHAR||
1040            p_line_definition_code||C_CHAR||
1041            p_accounting_line_type_code||C_CHAR||
1042            p_accounting_line_code;
1043 
1044   IF (NOT key_exists('MPAA'||C_CHAR||l_key)) THEN
1045     record_updated_component
1046               (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
1047               ,p_parent_component_key  => l_key
1048               ,p_component_type        => 'AMB_MPA_ASSIGNMENT'
1049               ,p_component_key         => l_key||C_CHAR||'MPA'
1050               ,p_merge_impact          => p_merge_impact
1051               ,p_event_class_code      => NULL
1052               ,p_event_type_code       => NULL
1053               ,p_component_owner_code  => NULL
1057              (p_event_class_code           => p_event_class_code
1054               ,p_component_code        => NULL);
1055 
1056     record_updated_line_assgn
1058              ,p_event_type_code            => p_event_type_code
1059              ,p_line_definition_owner_code => p_line_definition_owner_code
1060              ,p_line_definition_code       => p_line_definition_code
1061              ,p_accounting_line_type_code  => p_accounting_line_type_code
1062              ,p_accounting_line_code       => p_accounting_line_code
1063              ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
1064 
1065   END IF;
1066 
1067   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1068     trace(p_msg    => 'END of function record_updated_mpa_assgn',
1069           p_module => l_log_module,
1070           p_level  => C_LEVEL_PROCEDURE);
1071   END IF;
1072 
1073 EXCEPTION
1074   WHEN xla_exceptions_pkg.application_exception THEN
1075     RAISE;
1076   WHEN OTHERS THEN
1077    xla_exceptions_pkg.raise_message
1078       (p_location => l_log_module);
1079 END record_updated_mpa_assgn;
1080 
1081 --=============================================================================
1082 --
1083 --
1084 --
1085 --=============================================================================
1086 PROCEDURE record_updated_mpa_line_assgn
1087 (p_event_class_code               VARCHAR2
1088 ,p_event_type_code                VARCHAR2
1089 ,p_line_definition_owner_code     VARCHAR2
1090 ,p_line_definition_code           VARCHAR2
1091 ,p_accounting_line_type_code      VARCHAR2
1092 ,p_accounting_line_code           VARCHAR2
1093 ,p_mpa_acct_line_type_code        VARCHAR2
1094 ,p_mpa_acct_line_code             VARCHAR2
1095 ,p_merge_impact                   VARCHAR2)
1096 IS
1097   l_parent_key             VARCHAR2(240);
1098   l_key                    VARCHAR2(240);
1099   l_log_module             VARCHAR2(240);
1100 BEGIN
1101   IF g_log_enabled THEN
1102     l_log_module := C_DEFAULT_MODULE||'.record_updated_mpa_line_assgn';
1103   END IF;
1104 
1105   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1106     trace(p_msg    => 'BEGIN of function record_updated_mpa_line_assgn: '||
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 = '||p_accounting_line_type_code||
1112                       ', p_accounting_line_code = '||p_accounting_line_code||
1113                       ', p_mpa_acct_line_type_code = '||p_mpa_acct_line_type_code||
1114                       ', p_mpa_acct_line_code = '||p_mpa_acct_line_code,
1115           p_module => l_log_module,
1116           p_level  => C_LEVEL_PROCEDURE);
1117   END IF;
1118 
1119   l_parent_key := p_event_class_code||C_CHAR||
1120                   p_event_type_code||C_CHAR||
1121                   p_line_definition_owner_code||C_CHAR||
1122                   p_line_definition_code||C_CHAR||
1123                   p_accounting_line_type_code||C_CHAR||
1124                   p_accounting_line_code||C_CHAR||
1125                   'MPA';
1126 
1127   l_key := l_parent_key||C_CHAR||
1128            p_mpa_acct_line_type_code||C_CHAR||
1129            p_mpa_acct_line_code;
1130 
1131   IF (NOT key_exists('MPALNA'||C_CHAR||l_key)) THEN
1132     record_updated_component
1133               (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
1134               ,p_parent_component_key  => l_parent_key
1135               ,p_component_type        => 'AMB_MPA_LINE_ASSIGNMENT'
1136               ,p_component_key         => l_key
1137               ,p_event_class_code      => p_event_class_code
1138               ,p_component_owner_code  => p_mpa_acct_line_type_code
1139               ,p_component_code        => p_mpa_acct_line_code
1140               ,p_merge_impact          => p_merge_impact);
1141 
1142     record_updated_mpa_assgn
1143              (p_event_class_code           => p_event_class_code
1144              ,p_event_type_code            => p_event_type_code
1145              ,p_line_definition_owner_code => p_line_definition_owner_code
1146              ,p_line_definition_code       => p_line_definition_code
1147              ,p_accounting_line_type_code  => p_accounting_line_type_code
1148              ,p_accounting_line_code       => p_accounting_line_code
1149              ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
1150 
1151   END IF;
1152 
1153   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1154     trace(p_msg    => 'END of function record_updated_mpa_line_assgn',
1155           p_module => l_log_module,
1156           p_level  => C_LEVEL_PROCEDURE);
1157   END IF;
1158 
1159 EXCEPTION
1160   WHEN xla_exceptions_pkg.application_exception THEN
1161     RAISE;
1162   WHEN OTHERS THEN
1163    xla_exceptions_pkg.raise_message
1164       (p_location => l_log_module);
1165 END record_updated_mpa_line_assgn;
1166 
1167 --=============================================================================
1168 --
1169 --
1170 --
1171 --=============================================================================
1172 PROCEDURE record_updated_assignment
1173 (p_parent_component_type          IN VARCHAR2
1174 ,p_product_rule_type_code         IN VARCHAR2
1175 ,p_product_rule_code              IN VARCHAR2
1176 ,p_event_class_code               IN VARCHAR2
1177 ,p_event_type_code                IN VARCHAR2
1178 ,p_line_definition_owner_code     IN VARCHAR2
1179 ,p_line_definition_code           IN VARCHAR2
1180 ,p_accounting_line_type_code      IN VARCHAR2
1181 ,p_accounting_line_code           IN VARCHAR2
1182 ,p_mpa_acct_line_type_code        IN VARCHAR2
1183 ,p_mpa_acct_line_code             IN VARCHAR2
1187   l_log_module             VARCHAR2(240);
1184 ,p_merge_impact                   IN VARCHAR2
1185 ,x_parent_key                     IN OUT NOCOPY VARCHAR2)
1186 IS
1188 BEGIN
1189   IF g_log_enabled THEN
1190     l_log_module := C_DEFAULT_MODULE||'.record_updated_assignment';
1191   END IF;
1192 
1193   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1194     trace(p_msg    => 'BEGIN of function record_updated_assignment',
1195           p_module => l_log_module,
1196           p_level  => C_LEVEL_PROCEDURE);
1197   END IF;
1198 
1199   IF (p_parent_component_type = 'AMB_AAD_EVENT_TYPE') THEN
1200     x_parent_key := p_product_rule_type_code||C_CHAR||
1201                     p_product_rule_code||C_CHAR||
1202                     p_event_class_code||C_CHAR||
1203                     p_event_type_code;
1204 
1205     record_updated_header_assgn
1206             (p_product_rule_type_code => p_product_rule_type_code
1207             ,p_product_rule_code      => p_product_rule_code
1208             ,p_event_class_code       => p_event_class_code
1209             ,p_event_type_code        => p_event_type_code
1210             ,p_merge_impact           => p_merge_impact);
1211 
1212   ELSIF (p_parent_component_type = 'AMB_LINE_ASSIGNMENT') THEN
1213     x_parent_key := p_event_class_code||C_CHAR||
1214                     p_event_type_code||C_CHAR||
1215                     p_line_definition_owner_code||C_CHAR||
1216                     p_line_definition_code||C_CHAR||
1217                     p_accounting_line_type_code||C_CHAR||
1218                     p_accounting_line_code;
1219 
1220     record_updated_line_assgn
1221              (p_event_class_code           => p_event_class_code
1222              ,p_event_type_code            => p_event_type_code
1223              ,p_line_definition_owner_code => p_line_definition_owner_code
1224              ,p_line_definition_code       => p_line_definition_code
1225              ,p_accounting_line_type_code  => p_accounting_line_type_code
1226              ,p_accounting_line_code       => p_accounting_line_code
1227              ,p_merge_impact               => p_merge_impact);
1228 
1229   ELSIF (p_parent_component_type = 'AMB_MPA_ASSIGNMENT') THEN
1230 
1231     x_parent_key := p_event_class_code||C_CHAR||
1232                     p_event_type_code||C_CHAR||
1233                     p_line_definition_owner_code||C_CHAR||
1234                     p_line_definition_code||C_CHAR||
1235                     p_accounting_line_type_code||C_CHAR||
1236                     p_accounting_line_code||C_CHAR||
1237                     'MPA';
1238 
1239     record_updated_mpa_assgn
1240              (p_event_class_code           => p_event_class_code
1241              ,p_event_type_code            => p_event_type_code
1242              ,p_line_definition_owner_code => p_line_definition_owner_code
1243              ,p_line_definition_code       => p_line_definition_code
1244              ,p_accounting_line_type_code  => p_accounting_line_type_code
1245              ,p_accounting_line_code       => p_accounting_line_code
1246              ,p_merge_impact               => p_merge_impact);
1247 
1248   ELSIF (p_parent_component_type = 'AMB_MPA_LINE_ASSIGNMENT') THEN
1249 
1250     x_parent_key := p_event_class_code||C_CHAR||
1251                     p_event_type_code||C_CHAR||
1252                     p_line_definition_owner_code||C_CHAR||
1253                     p_line_definition_code||C_CHAR||
1254                     p_accounting_line_type_code||C_CHAR||
1255                     p_accounting_line_code||C_CHAR||
1256                     'MPA'||C_CHAR||
1257                     p_mpa_acct_line_type_code||C_CHAR||
1258                     p_mpa_acct_line_code;
1259 
1260     record_updated_mpa_line_assgn
1261              (p_event_class_code              => p_event_class_code
1262              ,p_event_type_code               => p_event_type_code
1263              ,p_line_definition_owner_code    => p_line_definition_owner_code
1264              ,p_line_definition_code          => p_line_definition_code
1265              ,p_accounting_line_type_code     => p_accounting_line_type_code
1266              ,p_accounting_line_code          => p_accounting_line_code
1267              ,p_mpa_acct_line_type_code       => p_mpa_acct_line_type_code
1268              ,p_mpa_acct_line_code            => p_mpa_acct_line_code
1269              ,p_merge_impact                  => p_merge_impact);
1270 
1271   END IF;
1272 
1273   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1274     trace(p_msg    => 'END of function record_updated_assignment',
1275           p_module => l_log_module,
1276           p_level  => C_LEVEL_PROCEDURE);
1277   END IF;
1278 
1279 EXCEPTION
1280   WHEN xla_exceptions_pkg.application_exception THEN
1281     RAISE;
1282   WHEN OTHERS THEN
1283    xla_exceptions_pkg.raise_message
1284       (p_location => l_log_module);
1285 END record_updated_assignment;
1286 
1287 
1288 
1289 --=============================================================================
1290 --
1291 --
1292 --
1293 --=============================================================================
1294 PROCEDURE record_deleted_jld
1295 (p_event_class_code           VARCHAR2
1296 ,p_event_type_code            VARCHAR2
1297 ,p_line_definition_owner_code VARCHAR2
1298 ,p_line_definition_code       VARCHAR2)
1299 IS
1300   CURSOR c_assgns IS
1301     SELECT w.product_rule_type_code
1302          , w.product_rule_code
1303       FROM xla_aad_line_defn_assgns w
1304            LEFT OUTER JOIN xla_aad_line_defn_assgns s
1305            ON  s.amb_context_code               = g_staging_context_code
1306            AND s.application_id                 = g_application_id
1307            AND s.product_rule_type_code         = w.product_rule_type_code
1308            AND s.product_rule_code              = w.product_rule_code
1309            AND s.event_class_code               = w.event_class_code
1313      WHERE w.amb_context_code            = g_amb_context_code
1310            AND s.event_type_code                = w.event_type_code
1311            AND s.line_definition_owner_code     = w.line_definition_owner_code
1312            AND s.line_definition_code           = w.line_definition_code
1314        AND w.application_id              = g_application_id
1315        AND w.event_class_code            = p_event_class_code
1316        AND w.event_type_code             = p_event_type_code
1317        AND w.line_definition_owner_code  = p_line_definition_owner_code
1318        AND w.line_definition_code        = p_line_definition_code
1319        AND (w.event_type_code           = C_OWNER_CUSTOM OR
1320             s.line_definition_owner_code IS NOT NULL);
1321 
1322   l_key                    VARCHAR2(240);
1323   l_log_module             VARCHAR2(240);
1324 BEGIN
1325   IF g_log_enabled THEN
1326     l_log_module := C_DEFAULT_MODULE||'.record_deleted_jld';
1327   END IF;
1328 
1329   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1330     trace(p_msg    => 'BEGIN of function record_deleted_jld: '||
1331                       'p_event_class_code = '||p_event_class_code||
1332                       ', p_event_type_code = '||p_event_type_code||
1333                       ', p_line_definition_owner_code = '||p_line_definition_owner_code||
1334                       ', p_line_definition_code = '||p_line_definition_code,
1335           p_module => l_log_module,
1336           p_level  => C_LEVEL_PROCEDURE);
1337   END IF;
1338 
1339   l_key := p_event_class_code||C_CHAR||
1340            p_event_type_code||C_CHAR||
1341            p_line_definition_owner_code||C_CHAR||
1342            p_line_definition_code;
1343 
1344   IF (NOT key_exists('JLD'||C_CHAR||l_key)) THEN
1345     FOR l_assgn IN c_assgns LOOP
1346 
1347       record_updated_jld_assgn
1348             (p_product_rule_type_code     => l_assgn.product_rule_type_code
1349             ,p_product_rule_code          => l_assgn.product_rule_code
1350             ,p_event_class_code           => p_event_class_code
1351             ,p_event_type_code            => p_event_type_code
1352             ,p_line_defn_owner_code       => p_line_definition_owner_code
1353             ,p_line_defn_code             => p_line_definition_code
1354             ,p_merge_impact               => C_MERGE_IMPACT_DELETED);
1355 
1356     END LOOP;
1357   END IF;
1358 
1359   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1360     trace(p_msg    => 'END of function record_deleted_jld',
1361           p_module => l_log_module,
1362           p_level  => C_LEVEL_PROCEDURE);
1363   END IF;
1364 
1365 EXCEPTION
1366   WHEN xla_exceptions_pkg.application_exception THEN
1367     RAISE;
1368   WHEN OTHERS THEN
1369    xla_exceptions_pkg.raise_message
1370       (p_location => l_log_module);
1371 END record_deleted_jld;
1372 
1373 
1374 
1375 --=============================================================================
1376 --
1377 --
1378 --
1379 --=============================================================================
1380 PROCEDURE record_updated_jlt
1381 (p_event_class_code          VARCHAR2
1382 ,p_accounting_line_type_code VARCHAR2
1383 ,p_accounting_line_code      VARCHAR2)
1384 IS
1385     CURSOR c_assgns IS
1386     SELECT 'AMB_LINE_ASSIGNMENT' parent_component_type
1387          , w.event_class_code
1388          , w.event_type_code
1389          , w.line_definition_owner_code
1390          , w.line_definition_code
1391          , w.accounting_line_type_code
1392          , w.accounting_line_code
1393          , NULL mpa_accounting_line_type_code
1394          , NULL mpa_accounting_line_code
1395       FROM xla_line_defn_jlt_assgns w
1396          , xla_line_defn_jlt_assgns s
1397      WHERE s.application_id              = g_application_id
1398        AND s.amb_context_code            = g_staging_context_code
1399        AND s.event_class_code            = w.event_class_code
1400        AND s.event_type_code             = w.event_type_code
1401        AND s.line_definition_owner_code  = w.line_definition_owner_code
1402        AND s.line_definition_code        = w.line_definition_code
1403        AND s.accounting_line_type_code   = w.accounting_line_type_code
1404        AND s.accounting_line_code        = w.accounting_line_code
1405        AND w.application_id              = g_application_id
1406        AND w.amb_context_code            = g_amb_context_code
1407        AND w.event_class_code            = p_event_class_code
1408        AND w.accounting_line_type_code   = p_accounting_line_type_code
1409        AND w.accounting_line_code        = p_accounting_line_code
1410      UNION
1411     SELECT 'AMB_MPA_LINE_ASSIGNMENT'
1412          , w.event_class_code
1413          , w.event_type_code
1414          , w.line_definition_owner_code
1415          , w.line_definition_code
1416          , w.accounting_line_type_code
1417          , w.accounting_line_code
1418          , w.mpa_accounting_line_type_code
1419          , w.mpa_accounting_line_code
1420       FROM xla_mpa_jlt_assgns w
1421          , xla_mpa_jlt_assgns s
1422      WHERE s.application_id                = g_application_id
1423        AND s.amb_context_code              = g_staging_context_code
1424        AND s.event_class_code              = w.event_class_code
1425        AND s.event_type_code               = w.event_type_code
1426        AND s.line_definition_owner_code    = w.line_definition_owner_code
1427        AND s.line_definition_code          = w.line_definition_code
1428        AND s.accounting_line_type_code     = w.accounting_line_type_code
1429        AND s.accounting_line_code          = w.accounting_line_code
1430        AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
1431        AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
1432        AND w.application_id                = g_application_id
1433        AND w.amb_context_code              = g_amb_context_code
1437 
1434        AND w.event_class_code              = p_event_class_code
1435        AND w.mpa_accounting_line_type_code = p_accounting_line_type_code
1436        AND w.mpa_accounting_line_code      = p_accounting_line_code;
1438   l_parent_key             VARCHAR2(240);
1439   l_key                    VARCHAR2(240);
1440   l_log_module             VARCHAR2(240);
1441 BEGIN
1442   IF g_log_enabled THEN
1443     l_log_module := C_DEFAULT_MODULE||'.record_updated_jlt';
1444   END IF;
1445 
1446   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1447     trace(p_msg    => 'BEGIN of function record_updated_jlt: '||
1448                       'p_event_class_code = '||p_event_class_code||
1449                       ', p_accounting_line_type_code = '||p_accounting_line_type_code||
1450                       ', p_accounting_line_code = '||p_accounting_line_code,
1451           p_module => l_log_module,
1452           p_level  => C_LEVEL_PROCEDURE);
1453   END IF;
1454 
1455   l_key := p_event_class_code||C_CHAR||
1456            p_accounting_line_type_code||C_CHAR||
1457            p_accounting_line_code;
1458 
1459   IF (NOT key_exists('JLT'||C_CHAR||l_key)) THEN
1460     FOR l_assgn IN c_assgns LOOP
1461 
1462       record_updated_assignment
1463          (p_parent_component_type          => l_assgn.parent_component_type
1464          ,p_product_rule_type_code         => NULL
1465          ,p_product_rule_code              => NULL
1466          ,p_event_class_code               => l_assgn.event_class_code
1467          ,p_event_type_code                => l_assgn.event_type_code
1468          ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
1469          ,p_line_definition_code           => l_assgn.line_definition_code
1470          ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
1471          ,p_accounting_line_code           => l_assgn.accounting_line_code
1472          ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
1473          ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
1474          ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED
1475          ,x_parent_key                     => l_parent_key);
1476 
1477       record_updated_component
1478               (p_parent_component_type => l_assgn.parent_component_type
1479               ,p_parent_component_key  => l_parent_key
1480               ,p_component_type        => 'AMB_JLT'
1481               ,p_component_key         => l_key
1482               ,p_merge_impact          => C_MERGE_IMPACT_UPDATED
1483               ,p_event_class_code      => p_event_class_code
1484               ,p_component_owner_code  => p_accounting_line_type_code
1485               ,p_component_code        => p_accounting_line_code);
1486 
1487     END LOOP;
1488   END IF;
1489 
1490   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1491     trace(p_msg    => 'END of function record_updated_jlt',
1492           p_module => l_log_module,
1493           p_level  => C_LEVEL_PROCEDURE);
1494   END IF;
1495 
1496 EXCEPTION
1497   WHEN xla_exceptions_pkg.application_exception THEN
1498     RAISE;
1499   WHEN OTHERS THEN
1500    xla_exceptions_pkg.raise_message
1501       (p_location => l_log_module);
1502 END record_updated_jlt;
1503 
1504 --=============================================================================
1505 --
1506 --
1507 --
1508 --=============================================================================
1509 PROCEDURE record_updated_jlt_acct_attr
1510 (p_event_class_code          VARCHAR2
1511 ,p_accounting_line_type_code VARCHAR2
1512 ,p_accounting_line_code      VARCHAR2
1513 ,p_accounting_attribute_code VARCHAR2
1514 ,p_merge_impact              VARCHAR2)
1515 IS
1516   l_parent_key             VARCHAR2(240);
1517   l_key                    VARCHAR2(240);
1518   l_log_module             VARCHAR2(240);
1519 BEGIN
1520   IF g_log_enabled THEN
1521     l_log_module := C_DEFAULT_MODULE||'.record_updated_jlt_acct_attr';
1522   END IF;
1523 
1524   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1525     trace(p_msg    => 'BEGIN of function record_updated_jlt_acct_attr: '||
1526                       'p_event_class_code = '||p_event_class_code||
1527                       ', p_accounting_line_type_code = '||p_accounting_line_type_code||
1528                       ', p_accounting_line_code = '||p_accounting_line_code||
1529                       ', p_accounting_attribute_code = '||p_accounting_attribute_code,
1530           p_module => l_log_module,
1531           p_level  => C_LEVEL_PROCEDURE);
1532   END IF;
1533 
1534   l_parent_key := p_event_class_code||C_CHAR||
1535                   p_accounting_line_type_code||C_CHAR||
1536                   p_accounting_line_code;
1537 
1538   l_key := p_accounting_attribute_code;
1539 
1540   IF (NOT key_exists('JAA'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
1541     record_updated_jlt
1542           (p_event_class_code          => p_event_class_code
1543           ,p_accounting_line_type_code => p_accounting_line_type_code
1544           ,p_accounting_line_code      => p_accounting_line_code);
1545 
1546     record_updated_component
1547           (p_parent_component_type => 'AMB_JLT'
1548           ,p_parent_component_key  => l_parent_key
1549           ,p_component_type        => 'AMB_JLT_ACCT_ATTR'
1550           ,p_component_key         => l_key
1551           ,p_merge_impact          => p_merge_impact
1552           ,p_component_code        => p_accounting_attribute_code);
1553   END IF;
1554 
1555   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1556     trace(p_msg    => 'END of function record_updated_jlt_acct_attr',
1557           p_module => l_log_module,
1558           p_level  => C_LEVEL_PROCEDURE);
1559   END IF;
1560 
1561 EXCEPTION
1562   WHEN xla_exceptions_pkg.application_exception THEN
1563     RAISE;
1564   WHEN OTHERS THEN
1565    xla_exceptions_pkg.raise_message
1569 
1566       (p_location => l_log_module);
1567 END record_updated_jlt_acct_attr;
1568 
1570 --=============================================================================
1571 --
1572 --
1573 --
1574 --=============================================================================
1575 PROCEDURE record_deleted_jlt
1576 (p_event_class_code          VARCHAR2
1577 ,p_accounting_line_type_code VARCHAR2
1578 ,p_accounting_line_code      VARCHAR2)
1579 IS
1580   CURSOR c_assgns IS
1581     SELECT 'AMB_LINE_ASSIGNMENT' parent_component_type
1582          , w.event_class_code
1583          , w.event_type_code
1584          , w.line_definition_owner_code
1585          , w.line_definition_code
1586          , w.accounting_line_type_code
1587          , w.accounting_line_code
1588          , NULL mpa_accounting_line_type_code
1589          , NULL mpa_accounting_line_code
1590       FROM xla_line_defn_jlt_assgns w
1591            LEFT OUTER JOIN xla_line_defn_jlt_assgns   s
1592            ON  s.amb_context_code            = g_staging_context_code
1593            AND s.application_id              = g_application_id
1594            AND s.event_class_code            = w.event_class_code
1595            AND s.event_type_code             = w.event_type_code
1596            AND s.line_definition_owner_code  = w.line_definition_owner_code
1597            AND s.line_definition_code        = w.line_definition_code
1598            AND s.accounting_line_type_code   = w.accounting_line_type_code
1599            AND s.accounting_line_code        = w.accounting_line_code
1600      WHERE w.application_id              = g_application_id
1601        AND w.amb_context_code            = g_amb_context_code
1602        AND w.event_class_code            = p_event_class_code
1603        AND w.accounting_line_type_code   = p_accounting_line_type_code
1604        AND w.accounting_line_code        = p_accounting_line_code
1605        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
1606             s.line_definition_owner_code IS NOT NULL)
1607      UNION
1608     SELECT 'AMB_MPA_LINE_ASSIGNMENT'
1609          , w.event_class_code
1610          , w.event_type_code
1611          , w.line_definition_owner_code
1612          , w.line_definition_code
1613          , w.accounting_line_type_code
1614          , w.accounting_line_code
1615          , w.mpa_accounting_line_type_code
1616          , w.mpa_accounting_line_code
1617       FROM xla_mpa_jlt_assgns w
1618            LEFT OUTER JOIN xla_mpa_jlt_assgns s
1619            ON  s.amb_context_code              = g_staging_context_code
1620            AND s.application_id                = g_application_id
1621            AND s.event_class_code              = w.event_class_code
1622            AND s.event_type_code               = w.event_type_code
1623            AND s.line_definition_owner_code    = w.line_definition_owner_code
1624            AND s.line_definition_code          = w.line_definition_code
1625            AND s.accounting_line_type_code     = w.accounting_line_type_code
1626            AND s.accounting_line_code          = w.accounting_line_code
1627            AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
1628            AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
1629      WHERE w.application_id                = g_application_id
1630        AND w.amb_context_code              = g_amb_context_code
1631        AND w.event_class_code              = p_event_class_code
1632        AND w.mpa_accounting_line_type_code = p_accounting_line_type_code
1633        AND w.mpa_accounting_line_code      = p_accounting_line_code
1634        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
1635             s.line_definition_owner_code IS NOT NULL);
1636 
1637   l_parent_key             VARCHAR2(240);
1638   l_key                    VARCHAR2(240);
1639   l_log_module             VARCHAR2(240);
1640 BEGIN
1641   IF g_log_enabled THEN
1642     l_log_module := C_DEFAULT_MODULE||'.record_deleted_jlt';
1643   END IF;
1644 
1645   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1646     trace(p_msg    => 'BEGIN of function record_deleted_jlt: '||
1647                       'p_event_class_code = '||p_event_class_code||
1648                       ', p_accounting_line_type_code = '||p_accounting_line_type_code||
1649                       ', p_accounting_line_code = '||p_accounting_line_code,
1650           p_module => l_log_module,
1651           p_level  => C_LEVEL_PROCEDURE);
1652   END IF;
1653 
1654   l_key := p_event_class_code||C_CHAR||
1655            p_accounting_line_type_code||C_CHAR||
1656            p_accounting_line_code;
1657 
1658   IF (NOT key_exists('JLT'||C_CHAR||l_key)) THEN
1659     FOR l_assgn IN c_assgns LOOP
1660 
1661       record_updated_assignment
1662          (p_parent_component_type          => l_assgn.parent_component_type
1663          ,p_product_rule_type_code         => NULL
1664          ,p_product_rule_code              => NULL
1665          ,p_event_class_code               => l_assgn.event_class_code
1666          ,p_event_type_code                => l_assgn.event_type_code
1667          ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
1668          ,p_line_definition_code           => l_assgn.line_definition_code
1669          ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
1670          ,p_accounting_line_code           => l_assgn.accounting_line_code
1671          ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
1672          ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
1673          ,p_merge_impact                   => C_MERGE_IMPACT_DELETED
1674          ,x_parent_key                     => l_parent_key);
1675 
1676     END LOOP;
1677   END IF;
1678 
1679   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1680     trace(p_msg    => 'END of function record_deleted_jlt',
1681           p_module => l_log_module,
1682           p_level  => C_LEVEL_PROCEDURE);
1683   END IF;
1684 
1685 EXCEPTION
1689    xla_exceptions_pkg.raise_message
1686   WHEN xla_exceptions_pkg.application_exception THEN
1687     RAISE;
1688   WHEN OTHERS THEN
1690       (p_location => l_log_module);
1691 END record_deleted_jlt;
1692 
1693 --=============================================================================
1694 --
1695 --
1696 --
1697 --=============================================================================
1698 PROCEDURE record_updated_adr_assgn
1699 (p_parent_component_type      VARCHAR2
1700 ,p_event_class_code           VARCHAR2
1701 ,p_event_type_code            VARCHAR2
1702 ,p_line_definition_owner_code VARCHAR2
1703 ,p_line_definition_code       VARCHAR2
1704 ,p_accounting_line_type_code  VARCHAR2
1705 ,p_accounting_line_code       VARCHAR2
1706 ,p_mpa_acct_line_type_code    VARCHAR2
1707 ,p_mpa_acct_line_code         VARCHAR2
1708 ,p_flexfield_segment_code     VARCHAR2
1709 ,p_side_code                  VARCHAR2
1710 ,p_segment_rule_appl_id       INTEGER
1711 ,p_segment_rule_type_code     VARCHAR2
1712 ,p_segment_rule_code          VARCHAR2
1713 ,p_accounting_coa_id          INTEGER
1714 ,p_merge_impact               VARCHAR2)
1715 IS
1716   l_key                    VARCHAR2(240);
1717   l_adr_key                VARCHAR2(240);
1718   l_parent_key             VARCHAR2(240);
1719   l_parent_component_type2 VARCHAR2(30);
1720   l_log_module             VARCHAR2(240);
1721 BEGIN
1722   IF g_log_enabled THEN
1723     l_log_module := C_DEFAULT_MODULE||'.record_updated_adr_assgn';
1724   END IF;
1725 
1726   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1727     trace(p_msg    => 'BEGIN of function record_updated_adr_assgn: '||
1728                       'p_segment_rule_type_code = '||p_segment_rule_type_code||
1729                       ', p_segment_rule_code = '||p_segment_rule_code,
1730           p_module => l_log_module,
1731           p_level  => C_LEVEL_PROCEDURE);
1732   END IF;
1733 
1734   l_adr_key := p_segment_rule_appl_id||C_CHAR||
1735                p_segment_rule_type_code||C_CHAR||
1736                p_segment_rule_code;
1737 
1738   IF (p_parent_component_type = 'AMB_ADR_ASSGN') THEN
1739     l_parent_component_type2 := 'AMB_LINE_ASSIGNMENT';
1740   ELSIF (p_parent_component_type = 'AMB_MPA_ADR_ASSGN') THEN
1741     l_parent_component_type2 := 'AMB_MPA_LINE_ASSIGNMENT';
1742   END IF;
1743 
1744   record_updated_assignment
1745             (p_parent_component_type          => l_parent_component_type2
1746             ,p_product_rule_type_code         => NULL
1747             ,p_product_rule_code              => NULL
1748             ,p_event_class_code               => p_event_class_code
1749             ,p_event_type_code                => p_event_type_code
1750             ,p_line_definition_owner_code     => p_line_definition_owner_code
1751             ,p_line_definition_code           => p_line_definition_code
1752             ,p_accounting_line_type_code      => p_accounting_line_type_code
1753             ,p_accounting_line_code           => p_accounting_line_code
1754             ,p_mpa_acct_line_type_code        => p_mpa_acct_line_type_code
1755             ,p_mpa_acct_line_code             => p_mpa_acct_line_code
1756             ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED
1757             ,x_parent_key                     => l_parent_key);
1758 
1759   IF (p_parent_component_type = 'AMB_ADR_ASSGN') THEN
1760 
1761     l_key := l_parent_key||C_CHAR||
1762              p_flexfield_segment_code||C_CHAR||
1763              p_side_code;
1764 
1765   ELSIF (p_parent_component_type = 'AMB_MPA_ADR_ASSGN') THEN
1766 
1767     l_key := l_parent_key||C_CHAR||
1768              p_flexfield_segment_code;
1769 
1770   END IF;
1771 
1772   record_updated_component
1773               (p_parent_component_type => l_parent_component_type2
1774               ,p_parent_component_key  => l_parent_key
1775               ,p_component_type        => p_parent_component_type
1776               ,p_component_key         => l_key
1777               ,p_merge_impact          => C_MERGE_IMPACT_UPDATED
1778               ,p_event_class_code      => NULL
1779               ,p_event_type_code       => NULL
1780               ,p_component_owner_code  => TO_CHAR(p_accounting_coa_id)
1781               ,p_component_code        => p_flexfield_segment_code);
1782 
1783   record_updated_component
1784               (p_parent_component_type => p_parent_component_type
1785               ,p_parent_component_key  => l_key
1786               ,p_component_type        => 'AMB_ADR'
1787               ,p_component_key         => l_adr_key
1788               ,p_merge_impact          => p_merge_impact
1789               ,p_event_class_code      => NULL
1790               ,p_event_type_code       => NULL
1791               ,p_component_appl_id     => p_segment_rule_appl_id
1792               ,p_component_owner_code  => p_segment_rule_type_code
1793               ,p_component_code        => p_segment_rule_code);
1794 
1795   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1796     trace(p_msg    => 'END of function record_updated_adr_assgn',
1797           p_module => l_log_module,
1798           p_level  => C_LEVEL_PROCEDURE);
1799   END IF;
1800 
1801 EXCEPTION
1802   WHEN xla_exceptions_pkg.application_exception THEN
1803     RAISE;
1804   WHEN OTHERS THEN
1805    xla_exceptions_pkg.raise_message
1806       (p_location => l_log_module);
1807 END record_updated_adr_assgn;
1808 
1809 
1810 --=============================================================================
1811 --
1812 --
1813 --
1814 --=============================================================================
1815 PROCEDURE record_updated_adr
1816 (p_segment_rule_appl_id   INTEGER
1817 ,p_segment_rule_type_code VARCHAR2
1818 ,p_segment_rule_code      VARCHAR2)
1819 IS
1820   CURSOR c_assgns IS
1821     SELECT 'AMB_ADR_ASSGN' parent_component_type
1825          , w.line_definition_code
1822          , w.event_class_code
1823          , w.event_type_code
1824          , w.line_definition_owner_code
1826          , w.accounting_line_type_code
1827          , w.accounting_line_code
1828          , NULL mpa_accounting_line_type_code
1829          , NULL mpa_accounting_line_code
1830          , w.flexfield_segment_code
1831          , w.side_code
1832          , l.accounting_coa_id
1833       FROM xla_line_defn_adr_assgns w
1834          , xla_line_defn_adr_assgns s
1835          , xla_line_definitions_b l
1836      WHERE s.application_id              = g_application_id
1837        AND s.amb_context_code            = g_staging_context_code
1838        AND s.event_class_code            = w.event_class_code
1839        AND s.event_type_code             = w.event_type_code
1840        AND s.line_definition_owner_code  = w.line_definition_owner_code
1841        AND s.line_definition_code        = w.line_definition_code
1842        AND s.flexfield_segment_code      = w.flexfield_segment_code
1843        AND s.side_code                   = w.side_code
1844        AND s.segment_rule_type_code      = w.segment_rule_type_code
1845        AND s.segment_rule_code           = w.segment_rule_code
1846        AND l.application_id              = g_application_id
1847        AND l.amb_context_code            = g_staging_context_code
1848        AND l.event_class_code            = w.event_class_code
1849        AND l.event_type_code             = w.event_type_code
1850        AND l.line_definition_owner_code  = w.line_definition_owner_code
1851        AND l.line_definition_code        = w.line_definition_code
1852        AND w.application_id              = g_application_id
1853        AND w.amb_context_code            = g_amb_context_code
1854        AND w.segment_rule_type_code      = p_segment_rule_type_code
1855        AND w.segment_rule_code           = p_segment_rule_code
1856      UNION
1857     SELECT 'AMB_MPA_ADR_ASSGN' parent_component_type
1858          , w.event_class_code
1859          , w.event_type_code
1860          , w.line_definition_owner_code
1861          , w.line_definition_code
1862          , w.accounting_line_type_code
1863          , w.accounting_line_code
1864          , w.mpa_accounting_line_type_code
1865          , w.mpa_accounting_line_code
1866          , w.flexfield_segment_code
1867          , NULL
1868          , l.accounting_coa_id
1869       FROM xla_mpa_jlt_adr_assgns w
1870          , xla_mpa_jlt_adr_assgns s
1871          , xla_mpa_jlt_assgns     j
1872          , xla_line_definitions_b l
1873      WHERE s.application_id                = g_application_id
1874        AND s.amb_context_code              = g_staging_context_code
1875        AND s.event_class_code              = w.event_class_code
1876        AND s.event_type_code               = w.event_type_code
1877        AND s.line_definition_owner_code    = w.line_definition_owner_code
1878        AND s.line_definition_code          = w.line_definition_code
1879        AND s.accounting_line_type_code     = w.accounting_line_type_code
1880        AND s.accounting_line_code          = w.accounting_line_code
1881        AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
1882        AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
1883        AND s.flexfield_segment_code        = w.flexfield_segment_code
1884        AND s.segment_rule_type_code        = w.segment_rule_type_code
1885        AND s.segment_rule_code             = w.segment_rule_code
1886        AND j.application_id                = g_application_id
1887        AND j.amb_context_code              = g_staging_context_code
1888        AND j.event_class_code              = w.event_class_code
1889        AND j.event_type_code               = w.event_type_code
1890        AND j.line_definition_owner_code    = w.line_definition_owner_code
1891        AND j.line_definition_code          = w.line_definition_code
1892        AND j.accounting_line_type_code     = w.accounting_line_type_code
1893        AND j.accounting_line_code          = w.accounting_line_code
1894        AND l.application_id                = g_application_id
1895        AND l.amb_context_code              = g_staging_context_code
1896        AND l.event_class_code              = w.event_class_code
1897        AND l.event_type_code               = w.event_type_code
1898        AND l.line_definition_owner_code    = w.line_definition_owner_code
1899        AND l.line_definition_code          = w.line_definition_code
1900        AND w.application_id                = g_application_id
1901        AND w.amb_context_code              = g_amb_context_code
1902        AND w.segment_rule_type_code        = p_segment_rule_type_code
1903        AND w.segment_rule_code             = p_segment_rule_code;
1904 
1905   l_key                    VARCHAR2(240);
1906   l_log_module             VARCHAR2(240);
1907 BEGIN
1908   IF g_log_enabled THEN
1909     l_log_module := C_DEFAULT_MODULE||'.record_updated_adr';
1910   END IF;
1911 
1912   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1913     trace(p_msg    => 'BEGIN of function record_updated_adr: '||
1914                       'p_segment_rule_type_code = '||p_segment_rule_type_code||
1915                       ', p_segment_rule_code = '||p_segment_rule_code,
1916           p_module => l_log_module,
1917           p_level  => C_LEVEL_PROCEDURE);
1918   END IF;
1919 
1920   l_key := p_segment_rule_appl_id||C_CHAR||
1921            p_segment_rule_type_code||C_CHAR||
1922            p_segment_rule_code;
1923 
1924   IF (NOT key_exists('ADR'||C_CHAR||l_key)) THEN
1925 
1926     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1927       trace(p_msg    => 'BEGIN LOOP: key = '||l_key,
1928             p_module => l_log_module,
1929             p_level  => C_LEVEL_PROCEDURE);
1930     END IF;
1931 
1932     FOR l_assgn IN c_assgns LOOP
1933 
1934       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1935         trace(p_msg    => 'LOOP: mpa_accounting_line_code = '||l_assgn.mpa_accounting_line_code,
1939 
1936               p_module => l_log_module,
1937               p_level  => C_LEVEL_PROCEDURE);
1938       END IF;
1940       record_updated_adr_assgn
1941             (p_parent_component_type          => l_assgn.parent_component_type
1942             ,p_event_class_code               => l_assgn.event_class_code
1943             ,p_event_type_code                => l_assgn.event_type_code
1944             ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
1945             ,p_line_definition_code           => l_assgn.line_definition_code
1946             ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
1947             ,p_accounting_line_code           => l_assgn.accounting_line_code
1948             ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
1949             ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
1950             ,p_flexfield_segment_code         => l_assgn.flexfield_segment_code
1951             ,p_side_code                      => l_assgn.side_code
1952             ,p_segment_rule_appl_id           => p_segment_rule_appl_id
1953             ,p_segment_rule_type_code         => p_segment_rule_type_code
1954             ,p_segment_rule_code              => p_segment_rule_code
1955             ,p_accounting_coa_id              => l_assgn.accounting_coa_id
1956             ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED);
1957 
1958     END LOOP;
1959 
1960     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1961       trace(p_msg    => 'END LOOP: key = '||l_key,
1962             p_module => l_log_module,
1963             p_level  => C_LEVEL_PROCEDURE);
1964     END IF;
1965 
1966   END IF;
1967 
1968   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1969     trace(p_msg    => 'END of function record_updated_adr',
1970           p_module => l_log_module,
1971           p_level  => C_LEVEL_PROCEDURE);
1972   END IF;
1973 
1974 EXCEPTION
1975   WHEN xla_exceptions_pkg.application_exception THEN
1976     RAISE;
1977   WHEN OTHERS THEN
1978    xla_exceptions_pkg.raise_message
1979       (p_location => l_log_module);
1980 END record_updated_adr;
1981 
1982 --=============================================================================
1983 --
1984 --
1985 --
1986 --=============================================================================
1987 PROCEDURE record_deleted_adr
1988 (p_segment_rule_appl_id   INTEGER
1989 ,p_segment_rule_type_code VARCHAR2
1990 ,p_segment_rule_code      VARCHAR2)
1991 IS
1992   CURSOR c_assgns IS
1993     SELECT 'AMB_ADR_ASSGN' parent_component_type
1994          , w.event_class_code
1995          , w.event_type_code
1996          , w.line_definition_owner_code
1997          , w.line_definition_code
1998          , w.accounting_line_type_code
1999          , w.accounting_line_code
2000          , NULL mpa_accounting_line_type_code
2001          , NULL mpa_accounting_line_code
2002          , w.flexfield_segment_code
2003          , w.side_code
2004          , l.accounting_coa_id
2005       FROM xla_line_defn_adr_assgns w
2006            JOIN xla_line_definitions_b l
2007            ON  l.amb_context_code            = g_amb_context_code
2008            AND l.application_id              = g_application_id
2009            AND l.event_class_code            = w.event_class_code
2010            AND l.event_type_code             = w.event_type_code
2011            AND l.line_definition_owner_code  = w.line_definition_owner_code
2012            AND l.line_definition_code        = w.line_definition_code
2013            LEFT OUTER JOIN xla_line_defn_adr_assgns s
2014            ON  s.amb_context_code            = g_staging_context_code
2015            AND s.application_id              = g_application_id
2016            AND s.event_class_code            = w.event_class_code
2017            AND s.event_type_code             = w.event_type_code
2018            AND s.line_definition_owner_code  = w.line_definition_owner_code
2019            AND s.line_definition_code        = w.line_definition_code
2020            AND s.accounting_line_type_code   = w.accounting_line_type_code
2021            AND s.accounting_line_code        = w.accounting_line_code
2022            AND s.flexfield_segment_code      = w.flexfield_segment_code
2023            AND s.side_code                   = w.side_code
2024      WHERE w.application_id              = g_application_id
2025        AND w.amb_context_code            = g_amb_context_code
2026        AND w.segment_rule_type_code      = p_segment_rule_type_code
2027        AND w.segment_rule_code           = p_segment_rule_code
2028        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
2029             s.line_definition_owner_code IS NOT NULL)
2030      UNION
2031     SELECT 'AMB_MPA_ADR_ASSGN'
2032          , w.event_class_code
2033          , w.event_type_code
2034          , w.line_definition_owner_code
2035          , w.line_definition_code
2036          , w.accounting_line_type_code
2037          , w.accounting_line_code
2038          , w.mpa_accounting_line_type_code
2039          , w.mpa_accounting_line_code
2040          , w.flexfield_segment_code
2041          , NULL
2042          , l.accounting_coa_id
2043       FROM xla_mpa_jlt_adr_assgns w
2044            JOIN xla_line_definitions_b l
2045            ON  l.amb_context_code            = g_amb_context_code
2046            AND l.application_id              = g_application_id
2047            AND l.event_class_code            = w.event_class_code
2048            AND l.event_type_code             = w.event_type_code
2049            AND l.line_definition_owner_code  = w.line_definition_owner_code
2050            AND l.line_definition_code        = w.line_definition_code
2051            JOIN xla_mpa_jlt_assgns j
2052            ON  j.amb_context_code              = g_amb_context_code
2053            AND j.application_id                = g_application_id
2054            AND j.event_class_code              = w.event_class_code
2058            AND j.accounting_line_type_code     = w.accounting_line_type_code
2055            AND j.event_type_code               = w.event_type_code
2056            AND j.line_definition_owner_code    = w.line_definition_owner_code
2057            AND j.line_definition_code          = w.line_definition_code
2059            AND j.accounting_line_code          = w.accounting_line_code
2060            AND j.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
2061            AND j.mpa_accounting_line_code      = w.mpa_accounting_line_code
2062            LEFT OUTER JOIN xla_mpa_jlt_adr_assgns s
2063            ON  s.amb_context_code              = g_staging_context_code
2064            AND s.application_id                = g_application_id
2065            AND s.event_class_code              = w.event_class_code
2066            AND s.event_type_code               = w.event_type_code
2067            AND s.line_definition_owner_code    = w.line_definition_owner_code
2068            AND s.line_definition_code          = w.line_definition_code
2069            AND s.accounting_line_type_code     = w.accounting_line_type_code
2070            AND s.accounting_line_code          = w.accounting_line_code
2071            AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
2072            AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
2073            AND s.flexfield_segment_code        = w.flexfield_segment_code
2074      WHERE w.application_id              = g_application_id
2075        AND w.amb_context_code            = g_amb_context_code
2076        AND w.segment_rule_type_code      = p_segment_rule_type_code
2077        AND w.segment_rule_code           = p_segment_rule_code
2078        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
2079             s.line_definition_owner_code IS NOT NULL);
2080 
2081   l_key                    VARCHAR2(240);
2082   l_log_module             VARCHAR2(240);
2083 BEGIN
2084   IF g_log_enabled THEN
2085     l_log_module := C_DEFAULT_MODULE||'.record_deleted_adr';
2086   END IF;
2087 
2088   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2089     trace(p_msg    => 'BEGIN of function record_deleted_adr: '||
2090                       'p_segment_rule_type_code = '||p_segment_rule_type_code||
2091                       ', p_segment_rule_code = '||p_segment_rule_code,
2092           p_module => l_log_module,
2093           p_level  => C_LEVEL_PROCEDURE);
2094   END IF;
2095 
2096   l_key := p_segment_rule_appl_id||C_CHAR||
2097            p_segment_rule_type_code||C_CHAR||
2098            p_segment_rule_code;
2099 
2100   IF (NOT key_exists('ADR'||C_CHAR||l_key)) THEN
2101     FOR l_assgn IN c_assgns LOOP
2102 
2103       record_updated_adr_assgn
2104             (p_parent_component_type          => l_assgn.parent_component_type
2105             ,p_event_class_code               => l_assgn.event_class_code
2106             ,p_event_type_code                => l_assgn.event_type_code
2107             ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
2108             ,p_line_definition_code           => l_assgn.line_definition_code
2109             ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
2110             ,p_accounting_line_code           => l_assgn.accounting_line_code
2111             ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
2112             ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
2113             ,p_flexfield_segment_code         => l_assgn.flexfield_segment_code
2114             ,p_side_code                      => l_assgn.side_code
2115             ,p_segment_rule_appl_id           => p_segment_rule_appl_id
2116             ,p_segment_rule_type_code         => p_segment_rule_type_code
2117             ,p_segment_rule_code              => p_segment_rule_code
2118             ,p_accounting_coa_id              => l_assgn.accounting_coa_id
2119             ,p_merge_impact                   => C_MERGE_IMPACT_DELETED);
2120 
2121     END LOOP;
2122 
2123   END IF;
2124 
2125   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2126     trace(p_msg    => 'END of function record_deleted_adr',
2127           p_module => l_log_module,
2128           p_level  => C_LEVEL_PROCEDURE);
2129   END IF;
2130 
2131 EXCEPTION
2132   WHEN xla_exceptions_pkg.application_exception THEN
2133     RAISE;
2134   WHEN OTHERS THEN
2135    xla_exceptions_pkg.raise_message
2136       (p_location => l_log_module);
2137 END record_deleted_adr;
2138 
2139 --=============================================================================
2140 --
2141 --
2142 --
2143 --=============================================================================
2144 PROCEDURE record_updated_adr_detail
2145 (p_segment_rule_appl_id   INTEGER
2146 ,p_segment_rule_type_code VARCHAR2
2147 ,p_segment_rule_code      VARCHAR2
2148 ,p_user_sequence          INTEGER
2149 ,p_merge_impact           VARCHAR2)
2150 IS
2151   l_key                    VARCHAR2(240);
2152   l_log_module             VARCHAR2(240);
2153 BEGIN
2154   IF g_log_enabled THEN
2155     l_log_module := C_DEFAULT_MODULE||'.record_updated_adr_detail';
2156   END IF;
2157 
2158   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2159     trace(p_msg    => 'BEGIN of function record_updated_adr_detail: '||
2160                       'p_segment_rule_type_code = '||p_segment_rule_type_code||
2161                       ', p_segment_rule_code = '||p_segment_rule_code||
2162                       ', p_user_sequence = '||p_user_sequence,
2163           p_module => l_log_module,
2164           p_level  => C_LEVEL_PROCEDURE);
2165   END IF;
2166 
2167   l_key := p_segment_rule_appl_id||C_CHAR||
2168            p_segment_rule_type_code||C_CHAR||
2169            p_segment_rule_code||C_CHAR||
2170            p_user_sequence;
2171 
2172   IF (NOT key_exists('ADRD'||C_CHAR||l_key)) THEN
2173 
2174     record_updated_component
2175               (p_parent_component_type => 'AMB_ADR'
2179               ,p_component_type        => 'AMB_ADR_DETAIL'
2176               ,p_parent_component_key  => p_segment_rule_appl_id||C_CHAR||
2177                                           p_segment_rule_type_code||C_CHAR||
2178                                           p_segment_rule_code
2180               ,p_component_key         => l_key
2181               ,p_merge_impact          => p_merge_impact
2182               ,p_event_class_code      => NULL
2183               ,p_event_type_code       => NULL
2184               ,p_component_owner_code  => NULL
2185               ,p_component_code        => p_user_sequence);
2186 
2187     record_updated_adr
2188             (p_segment_rule_appl_id   => p_segment_rule_appl_id
2189             ,p_segment_rule_type_code => p_segment_rule_type_code
2190             ,p_segment_rule_code      => p_segment_rule_code);
2191   END IF;
2192 
2193   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2194     trace(p_msg    => 'END of function record_updated_adr_detail',
2195           p_module => l_log_module,
2196           p_level  => C_LEVEL_PROCEDURE);
2197   END IF;
2198 
2199 EXCEPTION
2200   WHEN xla_exceptions_pkg.application_exception THEN
2201     RAISE;
2202   WHEN OTHERS THEN
2203    xla_exceptions_pkg.raise_message
2204       (p_location => l_log_module);
2205 END record_updated_adr_detail;
2206 
2207 --=============================================================================
2208 --
2209 --
2210 --
2211 --=============================================================================
2212 PROCEDURE record_updated_ms
2213 (p_mapping_set_code       VARCHAR2
2214 ,p_merge_impact           VARCHAR2)
2215 IS
2216   CURSOR c_assgns IS
2217     SELECT application_id segment_rule_appl_id
2218          , segment_rule_type_code
2219          , segment_rule_code
2220          , user_sequence
2221       FROM xla_seg_rule_details s
2222      WHERE application_id         = g_application_id
2223        AND amb_context_code       = g_amb_context_code
2224        AND value_mapping_set_code = p_mapping_set_code;
2225 
2226   l_parent_key             VARCHAR2(240);
2227   l_key                    VARCHAR2(240);
2228   l_log_module             VARCHAR2(240);
2229 BEGIN
2230   IF g_log_enabled THEN
2231     l_log_module := C_DEFAULT_MODULE||'.record_updated_ms';
2232   END IF;
2233 
2234   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2235     trace(p_msg    => 'BEGIN of function record_updated_ms: '||
2236                       ', p_mapping_set_code = '||p_mapping_set_code,
2237           p_module => l_log_module,
2238           p_level  => C_LEVEL_PROCEDURE);
2239   END IF;
2240 
2241   l_key := p_mapping_set_code;
2242 
2243   IF (NOT key_exists('MS'||C_CHAR||l_key)) THEN
2244     FOR l_assgn IN c_assgns LOOP
2245 
2246       l_parent_key := l_assgn.segment_rule_type_code||C_CHAR||
2247                       l_assgn.segment_rule_code||C_CHAR||
2248                       l_assgn.user_sequence;
2249 
2250       IF (NOT key_exists('ADRMS'||C_CHAR||l_key)) THEN
2251         record_updated_component
2252               (p_parent_component_type => 'AMB_ADR_DETAIL'
2253               ,p_parent_component_key  => l_parent_key
2254               ,p_component_type        => 'AMB_MS'
2255               ,p_component_key         => l_key
2256               ,p_merge_impact          => p_merge_impact
2257               ,p_event_class_code      => NULL
2258               ,p_event_type_code       => NULL
2259               ,p_component_owner_code  => NULL
2260               ,p_component_code        => p_mapping_set_code);
2261 
2262         record_updated_adr_detail
2263             (p_segment_rule_appl_id   => l_assgn.segment_rule_appl_id
2264             ,p_segment_rule_type_code => l_assgn.segment_rule_type_code
2265             ,p_segment_rule_code      => l_assgn.segment_rule_code
2266             ,p_user_sequence          => l_assgn.user_sequence
2267             ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
2268 
2269       END IF;
2270     END LOOP;
2271 
2272   END IF;
2273 
2274   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2275     trace(p_msg    => 'END of function record_updated_ms',
2276           p_module => l_log_module,
2277           p_level  => C_LEVEL_PROCEDURE);
2278   END IF;
2279 
2280 EXCEPTION
2281   WHEN xla_exceptions_pkg.application_exception THEN
2282     RAISE;
2283   WHEN OTHERS THEN
2284    xla_exceptions_pkg.raise_message
2285       (p_location => l_log_module);
2286 END record_updated_ms;
2287 
2288 --=============================================================================
2289 --
2290 --
2291 --
2292 --=============================================================================
2293 PROCEDURE record_updated_ms_value
2294 (p_mapping_set_code           VARCHAR2
2295 ,p_flexfield_assign_mode_code VARCHAR2
2296 ,p_value_set_id               INTEGER
2297 ,p_view_application_id        INTEGER
2298 ,p_lookup_type                VARCHAR2
2299 ,p_value_constant             VARCHAR2
2300 ,p_effective_date_from        DATE
2301 ,p_effective_date_to          DATE
2302 ,p_enabled_flag               VARCHAR2
2303 ,p_input_value_type_code      VARCHAR2
2304 ,p_input_value_constant       VARCHAR2
2305 ,p_merge_impact               VARCHAR2)
2306 IS
2307   l_key                    VARCHAR2(720);
2308   l_log_module             VARCHAR2(240);
2309 BEGIN
2310   IF g_log_enabled THEN
2311     l_log_module := C_DEFAULT_MODULE||'.record_updated_ms_value';
2312   END IF;
2313 
2314   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2315     trace(p_msg    => 'BEGIN of function record_updated_ms_value: '||
2316                       'p_mapping_set_code = '||p_mapping_set_code||
2317                       ', p_input_value_type_code = '||p_input_value_type_code||
2321                       ', p_effective_date_to = '||p_effective_date_to||
2318                       ', p_input_value_constant = '||p_input_value_constant||
2319                       ', p_value_constant = '||p_value_constant||
2320                       ', p_effective_date_from = '||p_effective_date_from||
2322                       ', p_enabled_flag = '||p_enabled_flag,
2323           p_module => l_log_module,
2324           p_level  => C_LEVEL_PROCEDURE);
2325   END IF;
2326 
2327   l_key := p_mapping_set_code||C_CHAR||
2328            p_input_value_type_code||C_CHAR||
2329            p_input_value_constant||C_CHAR||
2330            p_value_constant||C_CHAR||
2331            TO_CHAR(p_effective_date_from,'J')||C_CHAR||
2332            TO_CHAR(p_effective_date_to,'J')||C_CHAR||
2333            p_enabled_flag;
2334 
2335   record_updated_property
2336           (p_component_type => 'AMB_MS_VALUE'
2337           ,p_component_key  => l_key
2338           ,p_property       => 'INPUT_VALUE_TYPE'
2339           ,p_old_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2340                                     THEN p_input_value_type_code ELSE NULL END
2341           ,p_new_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2342                                     THEN p_input_value_type_code ELSE NULL END);
2343 
2344   IF (p_input_value_constant IS NOT NULL) THEN
2345     record_updated_value
2346             (p_component_type          => 'AMB_MS_VALUE'
2347             ,p_component_key           => l_key
2348             ,p_property                => 'INPUT_VALUE'
2349             ,p_old_value               => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2350                                           THEN p_input_value_constant ELSE NULL END
2351             ,p_old_source_app_id       => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2352                                           THEN p_value_set_id ELSE NULL END
2353             ,p_old_source_type_code    => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2354                                           THEN p_view_application_id ELSE NULL END
2355             ,p_old_source_code         => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2356                                           THEN p_lookup_type ELSE NULL END
2357             ,p_new_value               => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2358                                           THEN p_input_value_constant ELSE NULL END
2359             ,p_new_source_app_id       => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2360                                           THEN p_value_set_id ELSE NULL END
2361             ,p_new_source_type_code    => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2362                                           THEN p_view_application_id ELSE NULL END
2363             ,p_new_source_code         => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2364                                           THEN p_lookup_type ELSE NULL END);
2365   END IF;
2366 
2367   IF (p_flexfield_assign_mode_code = 'S') THEN
2368     record_updated_property
2369           (p_component_type => 'AMB_MS_VALUE'
2370           ,p_component_key  => l_key
2371           ,p_property       => 'OUTPUT_VALUE'
2372           ,p_old_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2373                                     THEN p_value_constant ELSE NULL END
2374           ,p_new_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2375                                     THEN p_value_constant ELSE NULL END);
2376   END IF;
2377 
2378   record_updated_property
2379           (p_component_type => 'AMB_MS_VALUE'
2380           ,p_component_key  => l_key
2381           ,p_property       => 'EFFECTIVE_DATE_FROM'
2382           ,p_old_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2383                                     THEN p_effective_date_from ELSE NULL END
2384           ,p_new_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2385                                     THEN p_effective_date_from ELSE NULL END);
2386 
2387   record_updated_property
2388           (p_component_type => 'AMB_MS_VALUE'
2389           ,p_component_key  => l_key
2390           ,p_property       => 'EFFECTIVE_DATE_TO'
2391           ,p_old_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2392                                     THEN p_effective_date_to ELSE NULL END
2393           ,p_new_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2394                                     THEN p_effective_date_to ELSE NULL END);
2395 
2396   record_updated_property
2397           (p_component_type => 'AMB_MS_VALUE'
2398           ,p_component_key  => l_key
2399           ,p_property       => 'ENABLED'
2400           ,p_old_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_DELETED
2401                                     THEN p_enabled_flag ELSE NULL END
2402           ,p_new_value      => CASE WHEN p_merge_impact = C_MERGE_IMPACT_NEW
2403                                     THEN p_enabled_flag ELSE NULL END
2404           ,p_lookup_type    => 'XLA_YES_NO');
2405 
2406   IF (NOT key_exists('MSV'||C_CHAR||l_key)) THEN
2407     record_updated_component
2408           (p_parent_component_type => 'AMB_MS'
2409           ,p_parent_component_key  => p_mapping_set_code
2410           ,p_component_type        => 'AMB_MS_VALUE'
2411           ,p_component_key         => l_key
2412           ,p_merge_impact          => p_merge_impact
2413           ,p_event_class_code      => NULL
2414           ,p_event_type_code       => NULL
2415           ,p_component_owner_code  => NULL
2416           ,p_component_code        => NULL);
2417   END IF;
2418 
2419   record_updated_ms
2420             (p_mapping_set_code => p_mapping_set_code
2421             ,p_merge_impact     => C_MERGE_IMPACT_UPDATED);
2422 
2423   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2424     trace(p_msg    => 'END of function record_updated_ms_value',
2425           p_module => l_log_module,
2426           p_level  => C_LEVEL_PROCEDURE);
2427   END IF;
2431     RAISE;
2428 
2429 EXCEPTION
2430   WHEN xla_exceptions_pkg.application_exception THEN
2432   WHEN OTHERS THEN
2433    xla_exceptions_pkg.raise_message
2434       (p_location => l_log_module);
2435 END record_updated_ms_value;
2436 
2437 --=============================================================================
2438 --
2439 --
2440 --
2441 --=============================================================================
2442 PROCEDURE record_updated_desc
2443 (p_description_type_code       VARCHAR2
2444 ,p_description_code            VARCHAR2)
2445 IS
2446   CURSOR c_assgns IS
2447     SELECT 'AMB_AAD_EVENT_TYPE' parent_component_type
2448          , w.product_rule_type_code
2449          , w.product_rule_code
2450          , w.event_class_code
2451          , w.event_type_code
2452          , NULL line_definition_owner_code
2453          , NULL line_definition_code
2454          , NULL accounting_line_type_code
2455          , NULL accounting_line_code
2456          , NULL mpa_accounting_line_type_code
2457          , NULL mpa_accounting_line_code
2458       FROM xla_prod_acct_headers w
2459          , xla_prod_acct_headers s
2460      WHERE s.application_id         = g_application_id
2461        AND s.amb_context_code       = g_staging_context_code
2462        AND s.product_rule_type_code = w.product_rule_type_code
2463        AND s.product_rule_code      = w.product_rule_code
2464        AND s.event_class_code       = w.event_class_code
2465        AND s.event_type_code        = w.event_type_code
2466        AND s.description_type_code  = w.description_type_code
2467        AND s.description_code       = w.description_code
2468        AND w.application_id         = g_application_id
2469        AND w.amb_context_code       = g_amb_context_code
2470        AND w.description_type_code  = p_description_type_code
2471        AND w.description_code       = p_description_code
2472    UNION
2473     SELECT 'AMB_LINE_ASSIGNMENT'
2474          , NULL
2475          , NULL
2476          , w.event_class_code
2477          , w.event_type_code
2478          , w.line_definition_owner_code
2479          , w.line_definition_code
2480          , w.accounting_line_type_code
2481          , w.accounting_line_code
2482          , NULL
2483          , NULL
2484       FROM xla_line_defn_jlt_assgns w
2485          , xla_line_defn_jlt_assgns s
2486      WHERE s.application_id              = g_application_id
2487        AND s.amb_context_code            = g_staging_context_code
2488        AND s.event_class_code            = w.event_class_code
2489        AND s.event_type_code             = w.event_type_code
2490        AND s.line_definition_owner_code  = w.line_definition_owner_code
2491        AND s.line_definition_code        = w.line_definition_code
2492        AND s.accounting_line_type_code   = w.accounting_line_type_code
2493        AND s.accounting_line_code        = w.accounting_line_code
2494        AND s.description_type_code       = w.description_type_code
2495        AND s.description_code            = w.description_code
2496        AND w.application_id              = g_application_id
2497        AND w.amb_context_code            = g_amb_context_code
2498        AND w.description_type_code       = p_description_type_code
2499        AND w.description_code            = p_description_code
2500    UNION
2501     SELECT 'AMB_MPA_ASSIGNMENT'
2502          , NULL
2503          , NULL
2504          , w.event_class_code
2505          , w.event_type_code
2506          , w.line_definition_owner_code
2507          , w.line_definition_code
2508          , w.accounting_line_type_code
2509          , w.accounting_line_code
2510          , NULL
2511          , NULL
2512       FROM xla_line_defn_jlt_assgns w
2513          , xla_line_defn_jlt_assgns s
2514      WHERE s.application_id              = g_application_id
2515        AND s.amb_context_code            = g_staging_context_code
2516        AND s.event_class_code            = w.event_class_code
2517        AND s.event_type_code             = w.event_type_code
2518        AND s.line_definition_owner_code  = w.line_definition_owner_code
2519        AND s.line_definition_code        = w.line_definition_code
2520        AND s.accounting_line_type_code   = w.accounting_line_type_code
2521        AND s.accounting_line_code        = w.accounting_line_code
2522        AND s.mpa_header_desc_type_code   = w.mpa_header_desc_type_code
2523        AND s.mpa_header_desc_code        = w.mpa_header_desc_code
2524        AND w.application_id              = g_application_id
2525        AND w.amb_context_code            = g_amb_context_code
2526        AND w.mpa_header_desc_type_code   = p_description_type_code
2527        AND w.mpa_header_desc_code        = p_description_code
2528    UNION
2529     SELECT 'AMB_MPA_LINE_ASSIGNMENT'
2530          , NULL
2531          , NULL
2532          , w.event_class_code
2533          , w.event_type_code
2534          , w.line_definition_owner_code
2535          , w.line_definition_code
2536          , w.accounting_line_type_code
2537          , w.accounting_line_code
2538          , w.mpa_accounting_line_type_code
2539          , w.mpa_accounting_line_code
2540       FROM xla_mpa_jlt_assgns w
2541          , xla_mpa_jlt_assgns s
2542      WHERE s.application_id                = g_application_id
2543        AND s.amb_context_code              = g_staging_context_code
2544        AND s.event_class_code              = w.event_class_code
2545        AND s.event_type_code               = w.event_type_code
2546        AND s.line_definition_owner_code    = w.line_definition_owner_code
2547        AND s.line_definition_code          = w.line_definition_code
2548        AND s.accounting_line_type_code     = w.accounting_line_type_code
2549        AND s.accounting_line_code          = w.accounting_line_code
2550        AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
2551        AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
2555        AND w.amb_context_code              = g_amb_context_code
2552        AND s.description_type_code         = w.description_type_code
2553        AND s.description_code              = w.description_code
2554        AND w.application_id                = g_application_id
2556        AND w.description_type_code         = p_description_type_code
2557        AND w.description_code              = p_description_code;
2558 
2559   l_parent_key             VARCHAR2(240);
2560   l_key                    VARCHAR2(240);
2561   l_log_module             VARCHAR2(240);
2562 BEGIN
2563   IF g_log_enabled THEN
2564     l_log_module := C_DEFAULT_MODULE||'.record_updated_desc';
2565   END IF;
2566 
2567   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2568     trace(p_msg    => 'BEGIN of function record_updated_desc: '||
2569                       ', p_description_type_code = '||p_description_type_code||
2570                       ', p_description_code = '||p_description_code,
2571           p_module => l_log_module,
2572           p_level  => C_LEVEL_PROCEDURE);
2573   END IF;
2574 
2575   l_key := p_description_type_code||C_CHAR||
2576            p_description_code;
2577 
2578   IF (NOT key_exists('DESC'||C_CHAR||l_key)) THEN
2579     FOR l_assgn IN c_assgns LOOP
2580 
2581       record_updated_assignment
2582          (p_parent_component_type          => l_assgn.parent_component_type
2583          ,p_product_rule_type_code         => l_assgn.product_rule_type_code
2584          ,p_product_rule_code              => l_assgn.product_rule_code
2585          ,p_event_class_code               => l_assgn.event_class_code
2586          ,p_event_type_code                => l_assgn.event_type_code
2587          ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
2588          ,p_line_definition_code           => l_assgn.line_definition_code
2589          ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
2590          ,p_accounting_line_code           => l_assgn.accounting_line_code
2591          ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
2592          ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
2593          ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED
2594          ,x_parent_key                     => l_parent_key);
2595 
2596       record_updated_component
2597               (p_parent_component_type => l_assgn.parent_component_type
2598               ,p_parent_component_key  => l_parent_key
2599               ,p_component_type        => 'AMB_DESCRIPTION'
2600               ,p_component_key         => l_key
2601               ,p_merge_impact          => C_MERGE_IMPACT_UPDATED
2602               ,p_component_owner_code  => p_description_type_code
2603               ,p_component_code        => p_description_code);
2604 
2605     END LOOP;
2606   END IF;
2607 
2608   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2609     trace(p_msg    => 'END of function record_updated_desc',
2610           p_module => l_log_module,
2611           p_level  => C_LEVEL_PROCEDURE);
2612   END IF;
2613 
2614 EXCEPTION
2615   WHEN xla_exceptions_pkg.application_exception THEN
2616     RAISE;
2617   WHEN OTHERS THEN
2618    xla_exceptions_pkg.raise_message
2619       (p_location => l_log_module);
2620 END record_updated_desc;
2621 
2622 --=============================================================================
2623 --
2624 --
2625 --
2626 --=============================================================================
2627 PROCEDURE record_deleted_desc
2628 (p_description_type_code       VARCHAR2
2629 ,p_description_code            VARCHAR2)
2630 IS
2631   CURSOR c_assgns IS
2632     SELECT 'AMB_AAD_EVENT_TYPE' parent_component_type
2633          , w.product_rule_type_code
2634          , w.product_rule_code
2635          , w.event_class_code
2636          , w.event_type_code
2637          , NULL line_definition_owner_code
2638          , NULL line_definition_code
2639          , NULL accounting_line_type_code
2640          , NULL accounting_line_code
2641          , NULL mpa_accounting_line_type_code
2642          , NULL mpa_accounting_line_code
2643       FROM xla_prod_acct_headers w
2644            LEFT OUTER JOIN xla_prod_acct_headers s
2645            ON  s.amb_context_code               = g_staging_context_code
2646            AND s.application_id                 = g_application_id
2647            AND s.product_rule_type_code         = w.product_rule_type_code
2648            AND s.product_rule_code              = w.product_rule_code
2649            AND s.event_class_code               = w.event_class_code
2650            AND s.event_type_code                = w.event_type_code
2651      WHERE w.application_id         = g_application_id
2652        AND w.amb_context_code       = g_amb_context_code
2653        AND w.description_type_code  = p_description_type_code
2654        AND w.description_code       = p_description_code
2655        AND (w.product_rule_type_code = C_OWNER_CUSTOM OR
2656             s.product_rule_type_code IS NOT NULL)
2657     UNION
2658     SELECT 'AMB_LINE_ASSIGNMENT'
2659          , NULL
2660          , NULL
2661          , w.event_class_code
2662          , w.event_type_code
2663          , w.line_definition_owner_code
2664          , w.line_definition_code
2665          , w.accounting_line_type_code
2666          , w.accounting_line_code
2667          , NULL
2668          , NULL
2669       FROM xla_line_defn_jlt_assgns w
2670            LEFT OUTER JOIN xla_line_defn_jlt_assgns   s
2671            ON  s.amb_context_code            = g_staging_context_code
2672            AND s.application_id              = g_application_id
2673            AND s.event_class_code            = w.event_class_code
2674            AND s.event_type_code             = w.event_type_code
2675            AND s.line_definition_owner_code  = w.line_definition_owner_code
2676            AND s.line_definition_code        = w.line_definition_code
2680        AND w.amb_context_code       = g_amb_context_code
2677            AND s.accounting_line_type_code   = w.accounting_line_type_code
2678            AND s.accounting_line_code        = w.accounting_line_code
2679      WHERE w.application_id         = g_application_id
2681        AND w.description_type_code  = p_description_type_code
2682        AND w.description_code       = p_description_code
2683        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
2684             s.line_definition_owner_code IS NOT NULL)
2685      UNION
2686     SELECT 'AMB_MPA_ASSIGNMENT'
2687          , NULL
2688          , NULL
2689          , w.event_class_code
2690          , w.event_type_code
2691          , w.line_definition_owner_code
2692          , w.line_definition_code
2693          , w.accounting_line_type_code
2694          , w.accounting_line_code
2695          , NULL
2696          , NULL
2697       FROM xla_line_defn_jlt_assgns w
2698            LEFT OUTER JOIN xla_line_defn_jlt_assgns   s
2699            ON  s.amb_context_code            = g_staging_context_code
2700            AND s.application_id              = g_application_id
2701            AND s.event_class_code            = w.event_class_code
2702            AND s.event_type_code             = w.event_type_code
2703            AND s.line_definition_owner_code  = w.line_definition_owner_code
2704            AND s.line_definition_code        = w.line_definition_code
2705            AND s.accounting_line_type_code   = w.accounting_line_type_code
2706            AND s.accounting_line_code        = w.accounting_line_code
2707      WHERE w.application_id             = g_application_id
2708        AND w.amb_context_code           = g_amb_context_code
2709        AND w.mpa_header_desc_type_code  = p_description_type_code
2710        AND w.mpa_header_desc_code       = p_description_code
2711        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
2712             s.line_definition_owner_code IS NOT NULL)
2713      UNION
2714     SELECT 'AMB_MPA_LINE_ASSIGNMENT'
2715          , NULL
2716          , NULL
2717          , w.event_class_code
2718          , w.event_type_code
2719          , w.line_definition_owner_code
2720          , w.line_definition_code
2721          , w.accounting_line_type_code
2722          , w.accounting_line_code
2723          , w.mpa_accounting_line_type_code
2724          , w.mpa_accounting_line_code
2725       FROM xla_mpa_jlt_assgns w
2726            LEFT OUTER JOIN xla_mpa_jlt_assgns s
2727            ON  s.amb_context_code              = g_staging_context_code
2728            AND s.application_id                = g_application_id
2729            AND s.event_class_code              = w.event_class_code
2730            AND s.event_type_code               = w.event_type_code
2731            AND s.line_definition_owner_code    = w.line_definition_owner_code
2732            AND s.line_definition_code          = w.line_definition_code
2733            AND s.accounting_line_type_code     = w.accounting_line_type_code
2734            AND s.accounting_line_code          = w.accounting_line_code
2735            AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
2736            AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
2737      WHERE w.application_id         = g_application_id
2738        AND w.amb_context_code       = g_amb_context_code
2739        AND w.description_type_code  = p_description_type_code
2740        AND w.description_code       = p_description_code
2741        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
2742             s.line_definition_owner_code IS NOT NULL);
2743 
2744   l_parent_key             VARCHAR2(240);
2745   l_key                    VARCHAR2(240);
2746   l_log_module             VARCHAR2(240);
2747 BEGIN
2748   IF g_log_enabled THEN
2749     l_log_module := C_DEFAULT_MODULE||'.record_deleted_desc';
2750   END IF;
2751 
2752   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2753     trace(p_msg    => 'BEGIN of function record_deleted_desc: '||
2754                       ', p_description_type_code = '||p_description_type_code||
2755                       ', p_description_code = '||p_description_code,
2756           p_module => l_log_module,
2757           p_level  => C_LEVEL_PROCEDURE);
2758   END IF;
2759 
2760   l_key := p_description_type_code||C_CHAR||
2761            p_description_code;
2762 
2763   IF (NOT key_exists('DESC'||C_CHAR||l_key)) THEN
2764     FOR l_assgn IN c_assgns LOOP
2765 
2766       record_updated_assignment
2767          (p_parent_component_type          => l_assgn.parent_component_type
2768          ,p_product_rule_type_code         => l_assgn.product_rule_type_code
2769          ,p_product_rule_code              => l_assgn.product_rule_code
2770          ,p_event_class_code               => l_assgn.event_class_code
2771          ,p_event_type_code                => l_assgn.event_type_code
2772          ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
2773          ,p_line_definition_code           => l_assgn.line_definition_code
2774          ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
2775          ,p_accounting_line_code           => l_assgn.accounting_line_code
2776          ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
2777          ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
2778          ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED
2779          ,x_parent_key                     => l_parent_key);
2780 
2781       record_updated_component
2782               (p_parent_component_type => l_assgn.parent_component_type
2783               ,p_parent_component_key  => l_parent_key
2784               ,p_component_type        => 'AMB_DESCRIPTION'
2785               ,p_component_key         => l_key
2786               ,p_merge_impact          => C_MERGE_IMPACT_DELETED
2787               ,p_event_class_code      => NULL
2788               ,p_event_type_code       => NULL
2789               ,p_component_owner_code  => p_description_type_code
2793 
2790               ,p_component_code        => p_description_code);
2791 
2792     END LOOP;
2794   END IF;
2795 
2796   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2797     trace(p_msg    => 'END of function record_deleted_desc',
2798           p_module => l_log_module,
2799           p_level  => C_LEVEL_PROCEDURE);
2800   END IF;
2801 
2802 EXCEPTION
2803   WHEN xla_exceptions_pkg.application_exception THEN
2804     RAISE;
2805   WHEN OTHERS THEN
2806    xla_exceptions_pkg.raise_message
2807       (p_location => l_log_module);
2808 END record_deleted_desc;
2809 
2810 --=============================================================================
2811 --
2812 --
2813 --
2814 --=============================================================================
2815 PROCEDURE record_updated_desc_priority
2816 (p_description_type_code       VARCHAR2
2817 ,p_description_code            VARCHAR2
2818 ,p_user_sequence               VARCHAR2
2819 ,p_merge_impact                VARCHAR2)
2820 IS
2821   l_key                    VARCHAR2(240);
2822   l_log_module             VARCHAR2(240);
2823 BEGIN
2824   IF g_log_enabled THEN
2825     l_log_module := C_DEFAULT_MODULE||'.record_updated_desc_priority';
2826   END IF;
2827 
2828   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2829     trace(p_msg    => 'BEGIN of function record_updated_desc_priority: '||
2830                       ', p_description_type_code = '||p_description_type_code||
2831                       ', p_description_code = '||p_description_code||
2832                       ', p_user_sequence = '||p_user_sequence,
2833           p_module => l_log_module,
2834           p_level  => C_LEVEL_PROCEDURE);
2835   END IF;
2836 
2837   l_key := p_description_type_code||C_CHAR||
2838            p_description_code||C_CHAR||
2839            p_user_sequence;
2840 
2841   IF (NOT key_exists('DESCP'||C_CHAR||l_key)) THEN
2842     record_updated_component
2843               (p_parent_component_type        => 'AMB_DESCRIPTION'
2844               ,p_parent_component_key         => p_description_type_code||C_CHAR||
2845                                                  p_description_code
2846               ,p_component_type               => 'AMB_DESC_PRIO'
2847               ,p_component_key                => l_key
2848               ,p_merge_impact                 => p_merge_impact
2849               ,p_event_class_code             => NULL
2850               ,p_event_type_code              => NULL
2851               ,p_component_code               => p_user_sequence
2852               ,p_parent_component_owner_code  => p_description_type_code
2853               ,p_parent_component_code        => p_description_code);
2854 
2855     record_updated_desc
2856               (p_description_type_code => p_description_type_code
2857               ,p_description_code      => p_description_code);
2858 
2859   END IF;
2860 
2861   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2862     trace(p_msg    => 'END of function record_updated_desc_priority',
2863           p_module => l_log_module,
2864           p_level  => C_LEVEL_PROCEDURE);
2865   END IF;
2866 
2867 EXCEPTION
2868   WHEN xla_exceptions_pkg.application_exception THEN
2869     RAISE;
2870   WHEN OTHERS THEN
2871    xla_exceptions_pkg.raise_message
2872       (p_location => l_log_module);
2873 END record_updated_desc_priority;
2874 
2875 --=============================================================================
2876 --
2877 -- Name: record_updated_ac
2878 -- Description: Determine all the components that references the AC that is
2879 --              modified, and record that the component is updated.
2880 --
2881 --=============================================================================
2882 PROCEDURE record_updated_ac
2883 (p_ac_type_code       VARCHAR2
2884 ,p_ac_code            VARCHAR2
2885 ,p_merge_impact       VARCHAR2)
2886 IS
2887   CURSOR c_assgns IS
2888     SELECT 'AMB_AAD_EVENT_TYPE' parent_component_type
2889          , w.product_rule_type_code
2890          , w.product_rule_code
2891          , w.event_class_code
2892          , w.event_type_code
2893          , NULL line_definition_owner_code
2894          , NULL line_definition_code
2895          , NULL accounting_line_type_code
2896          , NULL accounting_line_code
2897          , NULL mpa_accounting_line_type_code
2898          , NULL mpa_accounting_line_code
2899       FROM xla_aad_header_ac_assgns w
2900          , xla_prod_acct_headers b
2901      WHERE b.amb_context_code               = g_staging_context_code
2902        AND b.application_id                 = g_application_id
2903        AND b.product_rule_type_code         = w.product_rule_type_code
2904        AND b.product_rule_code              = w.product_rule_code
2905        AND b.event_class_code               = w.event_class_code
2906        AND b.event_type_code                = w.event_type_code
2907        AND w.amb_context_code               = g_amb_context_code
2908        AND w.analytical_criterion_type_code = p_ac_type_code
2909        AND w.analytical_criterion_code      = p_ac_code
2910      UNION
2911     SELECT 'AMB_LINE_ASSIGNMENT'
2912          , NULL
2913          , NULL
2914          , w.event_class_code
2915          , w.event_type_code
2916          , w.line_definition_owner_code
2917          , w.line_definition_code
2918          , w.accounting_line_type_code
2919          , w.accounting_line_code
2920          , NULL
2921          , NULL
2922       FROM xla_line_defn_ac_assgns w
2923          , xla_line_defn_jlt_assgns b
2924      WHERE b.amb_context_code               = g_staging_context_code
2925        AND b.application_id                 = g_application_id
2926        AND b.event_class_code               = w.event_class_code
2927        AND b.event_type_code                = w.event_type_code
2931        AND b.accounting_line_code           = w.accounting_line_code
2928        AND b.line_definition_owner_code     = w.line_definition_owner_code
2929        AND b.line_definition_code           = w.line_definition_code
2930        AND b.accounting_line_type_code      = w.accounting_line_type_code
2932        AND w.amb_context_code               = g_amb_context_code
2933        AND w.analytical_criterion_type_code = p_ac_type_code
2934        AND w.analytical_criterion_code      = p_ac_code
2935      UNION
2936     SELECT 'AMB_MPA_ASSIGNMENT'
2937          , NULL
2938          , NULL
2939          , w.event_class_code
2940          , w.event_type_code
2941          , w.line_definition_owner_code
2942          , w.line_definition_code
2943          , w.accounting_line_type_code
2944          , w.accounting_line_code
2945          , NULL
2946          , NULL
2947       FROM xla_mpa_header_ac_assgns w
2948          , xla_line_defn_jlt_assgns b
2949      WHERE b.amb_context_code               = g_staging_context_code
2950        AND b.application_id                 = g_application_id
2951        AND b.event_class_code               = w.event_class_code
2952        AND b.event_type_code                = w.event_type_code
2953        AND b.line_definition_owner_code     = w.line_definition_owner_code
2954        AND b.line_definition_code           = w.line_definition_code
2955        AND b.accounting_line_type_code      = w.accounting_line_type_code
2956        AND b.accounting_line_code           = w.accounting_line_code
2957        AND w.amb_context_code               = g_amb_context_code
2958        AND w.analytical_criterion_type_code = p_ac_type_code
2959        AND w.analytical_criterion_code      = p_ac_code
2960      UNION
2961     SELECT 'AMB_MPA_LINE_ASSIGNMENT'
2962          , NULL
2963          , NULL
2964          , w.event_class_code
2965          , w.event_type_code
2966          , w.line_definition_owner_code
2967          , w.line_definition_code
2968          , w.accounting_line_type_code
2969          , w.accounting_line_code
2970          , w.mpa_accounting_line_type_code
2971          , w.mpa_accounting_line_code
2972       FROM xla_mpa_jlt_ac_assgns w
2973          , xla_mpa_jlt_assgns    b
2974      WHERE b.amb_context_code               = g_staging_context_code
2975        AND b.application_id                 = g_application_id
2976        AND b.event_class_code               = w.event_class_code
2977        AND b.event_type_code                = w.event_type_code
2978        AND b.line_definition_owner_code     = w.line_definition_owner_code
2979        AND b.line_definition_code           = w.line_definition_code
2980        AND b.accounting_line_type_code      = w.accounting_line_type_code
2981        AND b.accounting_line_code           = w.accounting_line_code
2982        AND b.mpa_accounting_line_type_code  = w.mpa_accounting_line_type_code
2983        AND b.mpa_accounting_line_code       = w.mpa_accounting_line_code
2984        AND w.amb_context_code               = g_amb_context_code
2985        AND w.analytical_criterion_type_code = p_ac_type_code
2986        AND w.analytical_criterion_code      = p_ac_code;
2987 
2988   l_parent_key             VARCHAR2(240);
2989   l_key                    VARCHAR2(240);
2990   l_log_module             VARCHAR2(240);
2991 BEGIN
2992   IF g_log_enabled THEN
2993     l_log_module := C_DEFAULT_MODULE||'.record_updated_ac';
2994   END IF;
2995 
2996   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2997     trace(p_msg    => 'BEGIN of function record_updated_ac: '||
2998                       ', p_ac_type_code = '||p_ac_type_code||
2999                       ', p_ac_code = '||p_ac_code,
3000           p_module => l_log_module,
3001           p_level  => C_LEVEL_PROCEDURE);
3002   END IF;
3003 
3004   l_key := p_ac_type_code||C_CHAR||
3005            p_ac_code;
3006 
3007   IF (NOT key_exists('AC'||C_CHAR||l_key)) THEN
3008     FOR l_assgn IN c_assgns LOOP
3009 
3010       record_updated_assignment
3011          (p_parent_component_type          => l_assgn.parent_component_type
3012          ,p_product_rule_type_code         => l_assgn.product_rule_type_code
3013          ,p_product_rule_code              => l_assgn.product_rule_code
3014          ,p_event_class_code               => l_assgn.event_class_code
3015          ,p_event_type_code                => l_assgn.event_type_code
3016          ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
3017          ,p_line_definition_code           => l_assgn.line_definition_code
3018          ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
3019          ,p_accounting_line_code           => l_assgn.accounting_line_code
3020          ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
3021          ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
3022          ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED
3023          ,x_parent_key                     => l_parent_key);
3024 
3025       record_updated_component
3026               (p_parent_component_type => l_assgn.parent_component_type
3027               ,p_parent_component_key  => l_parent_key
3028               ,p_component_type        => 'AMB_AC'
3029               ,p_component_key         => l_key
3030               ,p_merge_impact          => p_merge_impact
3031               ,p_event_class_code      => NULL
3032               ,p_event_type_code       => NULL
3033               ,p_component_owner_code  => p_ac_type_code
3034               ,p_component_code        => p_ac_code);
3035 
3036     END LOOP;
3037   END IF;
3038 
3039   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3040     trace(p_msg    => 'END of function record_updated_ac',
3041           p_module => l_log_module,
3042           p_level  => C_LEVEL_PROCEDURE);
3043   END IF;
3044 
3045 EXCEPTION
3046   WHEN xla_exceptions_pkg.application_exception THEN
3047     RAISE;
3048   WHEN OTHERS THEN
3049    xla_exceptions_pkg.raise_message
3053 --=============================================================================
3050       (p_location => l_log_module);
3051 END record_updated_ac;
3052 
3054 --
3055 -- Name: record_deleted_ac
3056 -- Description: For the deleted ORACLE AC, determine if it is referenced by any
3057 --              CUSTOM component.  If so, report the component updated.
3058 --
3059 --=============================================================================
3060 PROCEDURE record_deleted_ac
3061 (p_ac_type_code       VARCHAR2
3062 ,p_ac_code            VARCHAR2)
3063 IS
3064   --
3065   -- Marked the AC is deleted from the assignment if
3066   -- 1. The AC is assigned to any CUSTOM component in the working context OR
3067   -- 2. The AC assignment exists in the staging context
3068   --
3069   CURSOR c_assgns IS
3070     SELECT 'AMB_AAD_EVENT_TYPE' parent_component_type
3071          , w.product_rule_type_code
3072          , w.product_rule_code
3073          , w.event_class_code
3074          , w.event_type_code
3075          , NULL line_definition_owner_code
3076          , NULL line_definition_code
3077          , NULL accounting_line_type_code
3078          , NULL accounting_line_code
3079          , NULL mpa_accounting_line_type_code
3080          , NULL mpa_accounting_line_code
3081       FROM xla_aad_header_ac_assgns w
3082            LEFT OUTER JOIN xla_prod_acct_headers s
3083            ON  s.amb_context_code               = g_staging_context_code
3084            AND s.application_id                 = g_application_id
3085            AND s.product_rule_type_code         = w.product_rule_type_code
3086            AND s.product_rule_code              = w.product_rule_code
3087            AND s.event_class_code               = w.event_class_code
3088            AND s.event_type_code                = w.event_type_code
3089      WHERE w.amb_context_code               = g_amb_context_code
3090        AND w.analytical_criterion_type_code = p_ac_type_code
3091        AND w.analytical_criterion_code      = p_ac_code
3092        AND (w.product_rule_type_code = C_OWNER_CUSTOM OR
3093             s.product_rule_type_code IS NOT NULL)
3094      UNION
3095     SELECT 'AMB_LINE_ASSIGNMENT'
3096          , NULL
3097          , NULL
3098          , w.event_class_code
3099          , w.event_type_code
3100          , w.line_definition_owner_code
3101          , w.line_definition_code
3102          , w.accounting_line_type_code
3103          , w.accounting_line_code
3104          , NULL
3105          , NULL
3106       FROM xla_line_defn_ac_assgns w
3107            LEFT OUTER JOIN xla_line_defn_jlt_assgns s
3108            ON  s.amb_context_code           = g_staging_context_code
3109            AND s.event_class_code           = w.event_class_code
3110            AND s.event_type_code            = w.event_type_code
3111            AND s.line_definition_owner_code = w.line_definition_owner_code
3112            AND s.line_definition_code       = w.line_definition_code
3113            AND s.accounting_line_type_code  = w.accounting_line_type_code
3114            AND s.accounting_line_code       = w.accounting_line_code
3115      WHERE w.amb_context_code               = g_amb_context_code
3116        AND w.analytical_criterion_type_code = p_ac_type_code
3117        AND w.analytical_criterion_code      = p_ac_code
3118        AND (w.accounting_line_type_code = C_OWNER_CUSTOM OR
3119             s.accounting_line_type_code IS NOT NULL)
3120      UNION
3121     SELECT 'AMB_MPA_ASSIGNMENT'
3122          , NULL
3123          , NULL
3124          , w.event_class_code
3125          , w.event_type_code
3126          , w.line_definition_owner_code
3127          , w.line_definition_code
3128          , w.accounting_line_type_code
3129          , w.accounting_line_code
3130          , NULL
3131          , NULL
3132       FROM xla_mpa_header_ac_assgns w
3133            LEFT OUTER JOIN xla_line_defn_jlt_assgns s
3134            ON  s.amb_context_code           = g_staging_context_code
3135            AND s.event_class_code           = w.event_class_code
3136            AND s.event_type_code            = w.event_type_code
3137            AND s.line_definition_owner_code = w.line_definition_owner_code
3138            AND s.line_definition_code       = w.line_definition_code
3139            AND s.accounting_line_type_code  = w.accounting_line_type_code
3140            AND s.accounting_line_code       = w.accounting_line_code
3141      WHERE w.amb_context_code               = g_amb_context_code
3142        AND w.analytical_criterion_type_code = p_ac_type_code
3143        AND w.analytical_criterion_code      = p_ac_code
3144        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
3145             s.line_definition_owner_code IS NOT NULL)
3146      UNION
3147     SELECT 'AMB_MPA_LINE_ASSIGNMENT'
3148          , NULL
3149          , NULL
3150          , w.event_class_code
3151          , w.event_type_code
3152          , w.line_definition_owner_code
3153          , w.line_definition_code
3154          , w.accounting_line_type_code
3155          , w.accounting_line_code
3156          , w.mpa_accounting_line_type_code
3157          , w.mpa_accounting_line_code
3158       FROM xla_mpa_jlt_ac_assgns w
3159            LEFT OUTER JOIN xla_mpa_jlt_assgns s
3160            ON  s.amb_context_code              = g_staging_context_code
3161            AND s.event_class_code              = w.event_class_code
3162            AND s.event_type_code               = w.event_type_code
3163            AND s.line_definition_owner_code    = w.line_definition_owner_code
3164            AND s.line_definition_code          = w.line_definition_code
3165            AND s.accounting_line_type_code     = w.accounting_line_type_code
3166            AND s.accounting_line_code          = w.accounting_line_code
3167            AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
3168            AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
3169      WHERE w.amb_context_code               = g_amb_context_code
3173             s.line_definition_owner_code IS NOT NULL);
3170        AND w.analytical_criterion_type_code = p_ac_type_code
3171        AND w.analytical_criterion_code      = p_ac_code
3172        AND (w.line_definition_owner_code = C_OWNER_CUSTOM OR
3174 
3175   l_parent_key             VARCHAR2(240);
3176   l_key                    VARCHAR2(240);
3177   l_log_module             VARCHAR2(240);
3178 BEGIN
3179   IF g_log_enabled THEN
3180     l_log_module := C_DEFAULT_MODULE||'.record_deleted_ac';
3181   END IF;
3182 
3183   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3184     trace(p_msg    => 'BEGIN of function record_deleted_ac: '||
3185                       ', p_ac_type_code = '||p_ac_type_code||
3186                       ', p_ac_code = '||p_ac_code,
3187           p_module => l_log_module,
3188           p_level  => C_LEVEL_PROCEDURE);
3189   END IF;
3190 
3191   l_key := p_ac_type_code||C_CHAR||
3192            p_ac_code;
3193 
3194   IF (NOT key_exists('AC'||C_CHAR||l_key)) THEN
3195     FOR l_assgn IN c_assgns LOOP
3196 
3197       record_updated_assignment
3198          (p_parent_component_type          => l_assgn.parent_component_type
3199          ,p_product_rule_type_code         => l_assgn.product_rule_type_code
3200          ,p_product_rule_code              => l_assgn.product_rule_code
3201          ,p_event_class_code               => l_assgn.event_class_code
3202          ,p_event_type_code                => l_assgn.event_type_code
3203          ,p_line_definition_owner_code     => l_assgn.line_definition_owner_code
3204          ,p_line_definition_code           => l_assgn.line_definition_code
3205          ,p_accounting_line_type_code      => l_assgn.accounting_line_type_code
3206          ,p_accounting_line_code           => l_assgn.accounting_line_code
3207          ,p_mpa_acct_line_type_code        => l_assgn.mpa_accounting_line_type_code
3208          ,p_mpa_acct_line_code             => l_assgn.mpa_accounting_line_code
3209          ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED
3210          ,x_parent_key                     => l_parent_key);
3211 
3212       record_updated_component
3213               (p_parent_component_type => l_assgn.parent_component_type
3214               ,p_parent_component_key  => l_parent_key
3215               ,p_component_type        => 'AMB_AC'
3216               ,p_component_key         => l_key
3217               ,p_merge_impact          => C_MERGE_IMPACT_DELETED
3218               ,p_component_owner_code  => p_ac_type_code
3219               ,p_component_code        => p_ac_code);
3220 
3221     END LOOP;
3222 
3223   END IF;
3224 
3225   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3226     trace(p_msg    => 'END of function record_deleted_ac',
3227           p_module => l_log_module,
3228           p_level  => C_LEVEL_PROCEDURE);
3229   END IF;
3230 
3231 EXCEPTION
3232   WHEN xla_exceptions_pkg.application_exception THEN
3233     RAISE;
3234   WHEN OTHERS THEN
3235    xla_exceptions_pkg.raise_message
3236       (p_location => l_log_module);
3237 END record_deleted_ac;
3238 
3239 --=============================================================================
3240 --
3241 --
3242 --
3243 --=============================================================================
3244 PROCEDURE record_updated_ac_detail
3245 (p_ac_type_code       VARCHAR2
3246 ,p_ac_code            VARCHAR2
3247 ,p_ac_detail_code     VARCHAR2
3248 ,p_merge_impact       VARCHAR2)
3249 IS
3250   l_key                    VARCHAR2(240);
3251   l_log_module             VARCHAR2(240);
3252 BEGIN
3253   IF g_log_enabled THEN
3254     l_log_module := C_DEFAULT_MODULE||'.record_updated_ac_detail';
3255   END IF;
3256 
3257   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3258     trace(p_msg    => 'BEGIN of function record_updated_ac_detail: '||
3259                       ', p_ac_type_code = '||p_ac_type_code||
3260                       ', p_ac_code = '||p_ac_code||
3261                       ', p_ac_detail_code = '||p_ac_detail_code,
3262           p_module => l_log_module,
3263           p_level  => C_LEVEL_PROCEDURE);
3264   END IF;
3265 
3266   l_key := p_ac_type_code||C_CHAR||
3267            p_ac_code||C_CHAR||
3268            p_ac_detail_code;
3269 
3270   IF (NOT key_exists('ACD'||C_CHAR||l_key)) THEN
3271 
3272     record_updated_component
3273               (p_parent_component_type        => 'AMB_AC'
3274               ,p_parent_component_key         => p_ac_type_code||C_CHAR||
3275                                                  p_ac_code
3276               ,p_component_type               => 'AMB_AC_DETAIL'
3277               ,p_component_key                => l_key
3278               ,p_merge_impact                 => p_merge_impact
3279               ,p_event_class_code             => NULL
3280               ,p_event_type_code              => NULL
3281               ,p_component_owner_code         => NULL
3282               ,p_component_code               => p_ac_detail_code
3283               ,p_parent_component_owner_code  => p_ac_type_code
3284               ,p_parent_component_code        => p_ac_code);
3285 
3286     record_updated_ac
3287               (p_ac_type_code          => p_ac_type_code
3288               ,p_ac_code               => p_ac_code
3289               ,p_merge_impact          => C_MERGE_IMPACT_UPDATED);
3290 
3291   END IF;
3292 
3293   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3294     trace(p_msg    => 'END of function record_updated_ac_detail',
3295           p_module => l_log_module,
3296           p_level  => C_LEVEL_PROCEDURE);
3297   END IF;
3298 
3299 EXCEPTION
3300   WHEN xla_exceptions_pkg.application_exception THEN
3301     RAISE;
3302   WHEN OTHERS THEN
3303    xla_exceptions_pkg.raise_message
3304       (p_location => l_log_module);
3305 END record_updated_ac_detail;
3306 
3310 -- Description: This API update the product rule in global aad group arry with
3307 --=============================================================================
3308 --
3309 -- Name: update_group_number
3311 --              the group number
3312 -- Return Code:
3313 --   TRUE: group number is updated
3314 --   FALSE: group number is not updated
3315 --
3316 --=============================================================================
3317 FUNCTION update_group_number
3318 (p_product_rule_type_code  VARCHAR2
3319 ,p_product_rule_code       VARCHAR2
3320 ,p_group_number            INTEGER)
3321 RETURN BOOLEAN
3322 IS
3323   l_retcode       BOOLEAN;
3324   l_log_module    VARCHAR2(240);
3325 BEGIN
3326   IF g_log_enabled THEN
3327     l_log_module := C_DEFAULT_MODULE||'.update_group_number';
3328   END IF;
3329 
3330   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3331     trace(p_msg    => 'BEGIN of function update_group_number: '||
3332                       p_product_rule_type_code||','||
3333                       p_product_rule_code||','||
3334                       p_group_number,
3335           p_module => l_log_module,
3336           p_level  => C_LEVEL_PROCEDURE);
3337   END IF;
3338 
3339   l_retcode := FALSE;
3340 
3341   FOR i IN 1 .. g_aad_groups.COUNT LOOP
3342     IF (g_aad_groups(i).product_rule_type_code = p_product_rule_type_code AND
3343         g_aad_groups(i).product_rule_code = p_product_rule_code) THEN
3344       IF (g_aad_groups(i).group_num <> p_group_number) THEN
3345         g_aad_groups(i).group_num := p_group_number;
3346         l_retcode := TRUE;
3347       END IF;
3348       EXIT;
3349     END IF;
3350   END LOOP;
3351 
3352   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3353     trace(p_msg    => 'END of function update_group_number',
3354           p_module => l_log_module,
3355           p_level  => C_LEVEL_PROCEDURE);
3356   END IF;
3357 
3358   return l_retcode;
3359 EXCEPTION
3360 WHEN xla_exceptions_pkg.application_exception THEN
3361   RAISE;
3362 
3363 WHEN OTHERS THEN
3364   xla_exceptions_pkg.raise_message
3365       (p_location => 'xla_aad_merge_analysis_pvt.update_group_number');
3366 
3367 END update_group_number;
3368 
3369 
3370 --=============================================================================
3371 --
3372 -- Name: compare_components
3373 -- Description:
3374 --
3375 --=============================================================================
3376 PROCEDURE compare_components
3377 IS
3378   l_log_module          VARCHAR2(240);
3379 BEGIN
3380   IF g_log_enabled THEN
3381     l_log_module := C_DEFAULT_MODULE||'.compare_components';
3382   END IF;
3383 
3384   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3385     trace(p_msg    => 'BEGIN of function compare_components',
3386           p_module => l_log_module,
3387           p_level  => C_LEVEL_PROCEDURE);
3388   END IF;
3389 
3390   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3391     trace(p_msg    => 'END of function compare_components',
3392           p_module => l_log_module,
3393           p_level  => C_LEVEL_PROCEDURE);
3394   END IF;
3395 
3396 EXCEPTION
3397   WHEN xla_exceptions_pkg.application_exception THEN
3398     RAISE;
3399   WHEN OTHERS THEN
3400    xla_exceptions_pkg.raise_message
3401       (p_location => l_log_module);
3402 END compare_components;
3403 
3404 
3405 --=============================================================================
3406 --
3407 -- Name: analyze_deleted_oracle_aads
3408 -- Description:
3409 --
3410 --=============================================================================
3411 PROCEDURE analyze_deleted_oracle_aads
3412 IS
3413   CURSOR c_comp IS
3414     SELECT w.product_rule_type_code
3415          , w.product_rule_code
3416       FROM xla_product_rules_b w
3417      WHERE w.application_id         = g_application_id
3418        AND w.amb_context_code       = g_amb_context_code
3419        AND w.product_rule_type_code = C_OWNER_ORACLE
3420        AND NOT EXISTS (
3421            SELECT 1
3422              FROM xla_product_rules_b s
3423             WHERE s.application_id         = g_application_id
3424               AND s.amb_context_code       = g_staging_context_code
3425               AND s.product_rule_type_code = w.product_rule_type_code
3426               AND s.product_rule_code      = w.product_rule_code);
3427 
3428   l_log_module          VARCHAR2(240);
3429 BEGIN
3430   IF g_log_enabled THEN
3431     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_aads';
3432   END IF;
3433 
3434   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3435     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_aads',
3436           p_module => l_log_module,
3437           p_level  => C_LEVEL_PROCEDURE);
3438   END IF;
3439 
3440   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3441     trace(p_msg    => 'BEGIN LOOP: deleted oracle aads',
3442           p_module => l_log_module,
3443           p_level  => C_LEVEL_PROCEDURE);
3444   END IF;
3445 
3446   FOR l_comp IN c_comp LOOP
3447     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3448       trace(p_msg    => 'LOOP: deleted oracle aad '||
3449                         '- product_rule_type_code = '||l_comp.product_rule_type_code||
3450                         ', product_rule_code = '||l_comp.product_rule_code,
3451             p_module => l_log_module,
3452             p_level  => C_LEVEL_PROCEDURE);
3453     END IF;
3454 
3455     record_updated_aad
3456           (p_product_rule_type_code => l_comp.product_rule_type_code
3457           ,p_product_rule_code      => l_comp.product_rule_code
3458           ,p_merge_impact           => C_MERGE_IMPACT_DELETED);
3459   END LOOP;
3460 
3461   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3465   END IF;
3462     trace(p_msg    => 'END LOOP: deleted oracle aads',
3463           p_module => l_log_module,
3464           p_level  => C_LEVEL_PROCEDURE);
3466 
3467   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3468     trace(p_msg    => 'END of function analyze_deleted_oracle_aads',
3469           p_module => l_log_module,
3470           p_level  => C_LEVEL_PROCEDURE);
3471   END IF;
3472 
3473 EXCEPTION
3474   WHEN xla_exceptions_pkg.application_exception THEN
3475     RAISE;
3476   WHEN OTHERS THEN
3477    xla_exceptions_pkg.raise_message
3478       (p_location => l_log_module);
3479 END analyze_deleted_oracle_aads;
3480 
3481 --=============================================================================
3482 --
3483 -- Name: analyze_deleted_oracle_ems
3484 -- Description:
3485 --
3486 --=============================================================================
3487 PROCEDURE analyze_deleted_oracle_ems
3488 IS
3489   CURSOR c_comp IS
3490     SELECT w.product_rule_type_code
3491          , w.product_rule_code
3492          , w.event_class_code
3493          , w.event_type_code
3494       FROM xla_prod_acct_headers w
3495          , xla_product_rules_b b
3496      WHERE b.application_id         = g_application_id
3497        AND b.amb_context_code       = g_staging_context_code
3498        AND b.product_rule_type_code = w.product_rule_type_code
3499        AND b.product_rule_code      = w.product_rule_code
3500        AND w.application_id         = g_application_id
3501        AND w.amb_context_code       = g_amb_context_code
3502        AND w.product_rule_type_code = C_OWNER_ORACLE
3503        AND NOT EXISTS (
3504            SELECT 1
3505              FROM xla_prod_acct_headers s
3506             WHERE s.application_id         = g_application_id
3507               AND s.amb_context_code       = g_staging_context_code
3508               AND s.product_rule_type_code = w.product_rule_type_code
3509               AND s.product_rule_code      = w.product_rule_code
3510               AND s.event_class_code       = w.event_class_code
3511               AND s.event_type_code        = w.event_type_code);
3512 
3513   l_log_module          VARCHAR2(240);
3514 BEGIN
3515   IF g_log_enabled THEN
3516     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_ems';
3517   END IF;
3518 
3519   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3520     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_ems',
3521           p_module => l_log_module,
3522           p_level  => C_LEVEL_PROCEDURE);
3523   END IF;
3524 
3525   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3526     trace(p_msg    => 'BEGIN LOOP: deleted oracle event types',
3527           p_module => l_log_module,
3528           p_level  => C_LEVEL_PROCEDURE);
3529   END IF;
3530 
3531   FOR l_comp IN c_comp LOOP
3532     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3533       trace(p_msg    => 'LOOP: deleted oracle event type '||
3534                         '- product_rule_type_code = '||l_comp.product_rule_type_code||
3535                         ', product_rule_code = '||l_comp.product_rule_code||
3536                         ', event_class_code = '||l_comp.event_class_code||
3537                         ', event_type_code = '||l_comp.event_type_code,
3538             p_module => l_log_module,
3539             p_level  => C_LEVEL_PROCEDURE);
3540     END IF;
3541 
3542     record_updated_header_assgn
3543           (p_product_rule_type_code => l_comp.product_rule_type_code
3544           ,p_product_rule_code      => l_comp.product_rule_code
3545           ,p_event_class_code       => l_comp.event_class_code
3546           ,p_event_type_code        => l_comp.event_type_code
3547           ,p_merge_impact           => C_MERGE_IMPACT_DELETED);
3548   END LOOP;
3549 
3550   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3551     trace(p_msg    => 'END LOOP: deleted oracle event types',
3552           p_module => l_log_module,
3553           p_level  => C_LEVEL_PROCEDURE);
3554   END IF;
3555 
3556   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3557     trace(p_msg    => 'END of function analyze_deleted_oracle_ems',
3558           p_module => l_log_module,
3559           p_level  => C_LEVEL_PROCEDURE);
3560   END IF;
3561 
3562 EXCEPTION
3563   WHEN xla_exceptions_pkg.application_exception THEN
3564     RAISE;
3565   WHEN OTHERS THEN
3566    xla_exceptions_pkg.raise_message
3567       (p_location => l_log_module);
3568 END analyze_deleted_oracle_ems;
3569 
3570 --=============================================================================
3571 --
3572 -- Name: analyze_deleted_oracle_adrs
3573 -- Description:
3574 --
3575 --=============================================================================
3576 PROCEDURE analyze_deleted_oracle_adrs
3577 IS
3578   CURSOR c_comp IS
3579     SELECT w.application_id segment_rule_appl_id
3580           ,w.segment_rule_type_code
3581          , w.segment_rule_code
3582       FROM xla_seg_rules_b w
3583      WHERE w.application_id        = g_application_id
3584        AND w.amb_context_code      = g_amb_context_code
3585        AND w.segment_rule_type_code = C_OWNER_ORACLE
3586        AND NOT EXISTS (
3587            SELECT 1
3588              FROM xla_seg_rules_b s
3589             WHERE s.application_id         = g_application_id
3590               AND s.amb_context_code       = g_staging_context_code
3591               AND s.segment_rule_type_code = w.segment_rule_type_code
3592               AND s.segment_rule_code      = w.segment_rule_code);
3593 
3594   CURSOR c_comp_dtl IS
3595     SELECT w.application_id segment_rule_appl_id
3596           ,w.segment_rule_type_code
3597           ,w.segment_rule_code
3598           ,w.user_sequence
3599           ,C_MERGE_IMPACT_DELETED
3600       FROM xla_seg_rule_details w
3601          , xla_seg_rules_b b
3605        AND b.segment_rule_code      = w.segment_rule_code
3602      WHERE b.application_id         = g_application_id
3603        AND b.amb_context_code       = g_staging_context_code
3604        AND b.segment_rule_type_code = w.segment_rule_type_code
3606        AND w.application_id         = g_application_id
3607        AND w.amb_context_code       = g_amb_context_code
3608        AND w.segment_rule_type_code = C_OWNER_ORACLE
3609        AND NOT EXISTS
3610            (SELECT 1
3611               FROM xla_seg_rule_details s
3612              WHERE s.application_id         = g_application_id
3613                AND s.amb_context_code       = g_staging_context_code
3614                AND s.segment_rule_type_code = w.segment_rule_type_code
3615                AND s.segment_rule_code      = w.segment_rule_code
3616                AND s.user_sequence          = w.user_sequence);
3617 
3618   l_log_module          VARCHAR2(240);
3619 BEGIN
3620   IF g_log_enabled THEN
3621     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_adrs';
3622   END IF;
3623 
3624   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3625     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_adrs',
3626           p_module => l_log_module,
3627           p_level  => C_LEVEL_PROCEDURE);
3628   END IF;
3629 
3630   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3631     trace(p_msg    => 'BEGIN LOOP: deleted oracle adrs',
3632           p_module => l_log_module,
3633           p_level  => C_LEVEL_PROCEDURE);
3634   END IF;
3635 
3636   FOR l_comp IN c_comp LOOP
3637     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3638       trace(p_msg    => 'LOOP: deleted oracle adr '||
3639                         '- segment_rule_type_code = '||l_comp.segment_rule_type_code||
3640                         ', segment_rule_code = '||l_comp.segment_rule_code,
3641             p_module => l_log_module,
3642             p_level  => C_LEVEL_PROCEDURE);
3643     END IF;
3644 
3645     record_deleted_adr
3646           (p_segment_rule_appl_id   => l_comp.segment_rule_appl_id
3647           ,p_segment_rule_type_code => l_comp.segment_rule_type_code
3648           ,p_segment_rule_code      => l_comp.segment_rule_code);
3649   END LOOP;
3650 
3651   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3652     trace(p_msg    => 'END LOOP: deleted oracle adrs',
3653           p_module => l_log_module,
3654           p_level  => C_LEVEL_PROCEDURE);
3655   END IF;
3656 
3657   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3658     trace(p_msg    => 'BEGIN LOOP: deleted oracle adr details',
3659           p_module => l_log_module,
3660           p_level  => C_LEVEL_PROCEDURE);
3661   END IF;
3662 
3663   FOR l_comp IN c_comp_dtl LOOP
3664     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3665       trace(p_msg    => 'LOOP: deleted oracle adr detail '||
3666                         '- segment_rule_type_code = '||l_comp.segment_rule_type_code||
3667                         ', segment_rule_code = '||l_comp.segment_rule_code||
3668                         ', user_sequence = '||l_comp.user_sequence,
3669             p_module => l_log_module,
3670             p_level  => C_LEVEL_PROCEDURE);
3671     END IF;
3672 
3673     record_updated_adr_detail
3674           (p_segment_rule_appl_id   => l_comp.segment_rule_appl_id
3675           ,p_segment_rule_type_code => l_comp.segment_rule_type_code
3676           ,p_segment_rule_code      => l_comp.segment_rule_code
3677           ,p_user_sequence          => l_comp.user_sequence
3678           ,p_merge_impact           => C_MERGE_IMPACT_DELETED);
3679   END LOOP;
3680 
3681   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3682     trace(p_msg    => 'END LOOP: deleted oracle adr details',
3683           p_module => l_log_module,
3684           p_level  => C_LEVEL_PROCEDURE);
3685   END IF;
3686 
3687   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3688     trace(p_msg    => 'END of function analyze_deleted_oracle_adrs',
3689           p_module => l_log_module,
3690           p_level  => C_LEVEL_PROCEDURE);
3691   END IF;
3692 
3693 EXCEPTION
3694   WHEN xla_exceptions_pkg.application_exception THEN
3695     RAISE;
3696   WHEN OTHERS THEN
3697    xla_exceptions_pkg.raise_message
3698       (p_location => l_log_module);
3699 END analyze_deleted_oracle_adrs;
3700 
3701 --=============================================================================
3702 --
3703 -- Name: analyze_deleted_oracle_acs
3704 -- Description:
3705 --
3706 --=============================================================================
3707 PROCEDURE analyze_deleted_oracle_acs
3708 IS
3709   CURSOR c_comp IS
3710     SELECT w.analytical_criterion_type_code
3711          , w.analytical_criterion_code
3712       FROM xla_analytical_hdrs_b w
3713      WHERE w.application_id        = g_application_id
3714        AND w.amb_context_code      = g_amb_context_code
3715        AND w.analytical_criterion_type_code = C_OWNER_ORACLE
3716        AND NOT EXISTS (
3717            SELECT 1
3718              FROM xla_analytical_hdrs_b s
3719             WHERE s.application_id                 = g_application_id
3720               AND s.amb_context_code               = g_staging_context_code
3721               AND s.analytical_criterion_type_code = w.analytical_criterion_type_code
3722               AND s.analytical_criterion_code      = w.analytical_criterion_code);
3723 
3724   CURSOR c_comp_dtl IS
3725     SELECT w.analytical_criterion_type_code
3726           ,w.analytical_criterion_code
3727           ,w.analytical_detail_code
3728       FROM xla_analytical_dtls_b w
3729          , xla_analytical_hdrs_b b
3730      WHERE b.amb_context_code               = g_staging_context_code
3731        AND b.application_id                 = g_application_id
3732        AND b.analytical_criterion_type_code = w.analytical_criterion_type_code
3733        AND b.analytical_criterion_code      = w.analytical_criterion_code
3737            (SELECT 1
3734        AND w.amb_context_code               = g_amb_context_code
3735        AND w.analytical_criterion_type_code = C_OWNER_ORACLE
3736        AND NOT EXISTS
3738               FROM xla_analytical_dtls_b s
3739              WHERE s.amb_context_code               = g_staging_context_code
3740                AND s.analytical_criterion_type_code = w.analytical_criterion_type_code
3741                AND s.analytical_criterion_code      = w.analytical_criterion_code
3742                AND s.analytical_detail_code         = w.analytical_detail_code);
3743 
3744   l_log_module          VARCHAR2(240);
3745 BEGIN
3746   IF g_log_enabled THEN
3747     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_acs';
3748   END IF;
3749 
3750   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3751     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_acs',
3752           p_module => l_log_module,
3753           p_level  => C_LEVEL_PROCEDURE);
3754   END IF;
3755 
3756   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3757     trace(p_msg    => 'BEGIN LOOP: deleted oracle ac ',
3758           p_module => l_log_module,
3759           p_level  => C_LEVEL_PROCEDURE);
3760   END IF;
3761 
3762   FOR l_comp IN c_comp LOOP
3763     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3764       trace(p_msg    => 'LOOP: deleted oracle ac '||
3765                         '- analytical_criterion_type_code = '||l_comp.analytical_criterion_type_code||
3766                         ', analytical_criterion_code = '||l_comp.analytical_criterion_code,
3767             p_module => l_log_module,
3768             p_level  => C_LEVEL_PROCEDURE);
3769     END IF;
3770 
3771     record_deleted_ac
3772           (p_ac_type_code => l_comp.analytical_criterion_type_code
3773           ,p_ac_code      => l_comp.analytical_criterion_code);
3774   END LOOP;
3775 
3776   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3777     trace(p_msg    => 'END LOOP: deleted oracle ac ',
3778           p_module => l_log_module,
3779           p_level  => C_LEVEL_PROCEDURE);
3780   END IF;
3781 
3782   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3783     trace(p_msg    => 'BEGIN LOOP: deleted oracle ac details',
3784           p_module => l_log_module,
3785           p_level  => C_LEVEL_PROCEDURE);
3786   END IF;
3787 
3788   FOR l_comp IN c_comp_dtl LOOP
3789     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3790       trace(p_msg    => 'LOOP: deleted oracle ac detail '||
3791                         '- analytical_criterion_type_code = '||l_comp.analytical_criterion_type_code||
3792                         ', analytical_criterion_code = '||l_comp.analytical_criterion_code||
3793                         ', analytical_detail_code = '||l_comp.analytical_detail_code,
3794             p_module => l_log_module,
3795             p_level  => C_LEVEL_PROCEDURE);
3796     END IF;
3797 
3798     record_updated_ac_detail
3799           (p_ac_type_code   => l_comp.analytical_criterion_type_code
3800           ,p_ac_code        => l_comp.analytical_criterion_code
3801           ,p_ac_detail_code => l_comp.analytical_detail_code
3802           ,p_merge_impact   => C_MERGE_IMPACT_DELETED);
3803   END LOOP;
3804 
3805   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3806     trace(p_msg    => 'END LOOP: deleted oracle ac details',
3807           p_module => l_log_module,
3808           p_level  => C_LEVEL_PROCEDURE);
3809   END IF;
3810 
3811   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3812     trace(p_msg    => 'END of function analyze_deleted_oracle_acs',
3813           p_module => l_log_module,
3814           p_level  => C_LEVEL_PROCEDURE);
3815   END IF;
3816 
3817 EXCEPTION
3818   WHEN xla_exceptions_pkg.application_exception THEN
3819     RAISE;
3820   WHEN OTHERS THEN
3821    xla_exceptions_pkg.raise_message
3822       (p_location => l_log_module);
3823 END analyze_deleted_oracle_acs;
3824 
3825 --=============================================================================
3826 --
3827 -- Name: analyze_deleted_oracle_descs
3828 -- Description:
3829 --
3830 --=============================================================================
3831 PROCEDURE analyze_deleted_oracle_descs
3832 IS
3833   CURSOR c_comp IS
3834     SELECT w.description_type_code
3835          , w.description_code
3836       FROM xla_descriptions_b w
3837      WHERE w.application_id        = g_application_id
3838        AND w.amb_context_code      = g_amb_context_code
3839        AND w.description_type_code = C_OWNER_ORACLE
3840        AND NOT EXISTS (
3841            SELECT 1
3842              FROM xla_descriptions_b s
3843             WHERE s.application_id        = g_application_id
3844               AND s.amb_context_code      = g_staging_context_code
3845               AND s.description_type_code = w.description_type_code
3846               AND s.description_code      = w.description_code);
3847 
3848   l_log_module          VARCHAR2(240);
3849 BEGIN
3850   IF g_log_enabled THEN
3851     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_descs';
3852   END IF;
3853 
3854   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3855     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_descs',
3856           p_module => l_log_module,
3857           p_level  => C_LEVEL_PROCEDURE);
3858   END IF;
3859 
3860   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3861     trace(p_msg    => 'BEGIN LOOP: deleted oracle descriptions',
3862           p_module => l_log_module,
3863           p_level  => C_LEVEL_PROCEDURE);
3864   END IF;
3865 
3866   FOR l_comp IN c_comp LOOP
3867     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3868       trace(p_msg    => 'LOOP: deleted oracle ac '||
3869                         '- description_type_code = '||l_comp.description_type_code||
3870                         ', description_code = '||l_comp.description_code,
3871             p_module => l_log_module,
3875     record_deleted_desc
3872             p_level  => C_LEVEL_PROCEDURE);
3873     END IF;
3874 
3876           (p_description_type_code => l_comp.description_type_code
3877           ,p_description_code      => l_comp.description_code);
3878   END LOOP;
3879 
3880   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3881     trace(p_msg    => 'END LOOP: deleted oracle descriptions',
3882           p_module => l_log_module,
3883           p_level  => C_LEVEL_PROCEDURE);
3884   END IF;
3885 
3886   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3887     trace(p_msg    => 'END of function analyze_deleted_oracle_descs',
3888           p_module => l_log_module,
3889           p_level  => C_LEVEL_PROCEDURE);
3890   END IF;
3891 
3892 EXCEPTION
3893   WHEN xla_exceptions_pkg.application_exception THEN
3894     RAISE;
3895   WHEN OTHERS THEN
3896    xla_exceptions_pkg.raise_message
3897       (p_location => l_log_module);
3898 END analyze_deleted_oracle_descs;
3899 
3900 --=============================================================================
3901 --
3902 -- Name: analyze_deleted_oracle_jlts
3903 -- Description:
3904 --
3905 --=============================================================================
3906 PROCEDURE analyze_deleted_oracle_jlts
3907 IS
3908   CURSOR c_comp IS
3909     SELECT w.event_class_code
3910          , w.accounting_line_type_code
3911          , w.accounting_line_code
3912       FROM xla_acct_line_types_b w
3913      WHERE w.application_id            = g_application_id
3914        AND w.amb_context_code          = g_amb_context_code
3915        AND w.accounting_line_type_code = C_OWNER_ORACLE
3916        AND NOT EXISTS (
3917            SELECT 1
3918              FROM xla_acct_line_types_b s
3919             WHERE s.application_id            = g_application_id
3920               AND s.amb_context_code          = g_staging_context_code
3921               AND s.event_class_code          = w.event_class_code
3922               AND s.accounting_line_type_code = w.accounting_line_type_code
3923               AND s.accounting_line_code      = w.accounting_line_code);
3924 
3925   CURSOR c_comp_dtl IS
3926     SELECT w.event_class_code
3927          , w.accounting_line_type_code
3928           ,w.accounting_line_code
3929           ,w.accounting_attribute_code
3930       FROM xla_jlt_acct_attrs w
3931          , xla_acct_line_types_b b
3932      WHERE b.amb_context_code          = g_staging_context_code
3933        AND b.application_id            = g_application_id
3934        AND b.accounting_line_type_code = w.accounting_line_type_code
3935        AND b.accounting_line_code      = w.accounting_line_code
3936        AND w.amb_context_code          = g_amb_context_code
3937        AND w.application_id            = g_application_id
3938        AND w.accounting_line_type_code = C_OWNER_ORACLE
3939        AND NOT EXISTS
3940            (SELECT 1
3941               FROM xla_jlt_acct_attrs s
3942              WHERE s.amb_context_code          = g_staging_context_code
3943                AND s.application_id            = g_application_id
3944                AND s.accounting_line_type_code = w.accounting_line_type_code
3945                AND s.accounting_line_code      = w.accounting_line_code
3946                AND s.accounting_attribute_code = w.accounting_attribute_code);
3947 
3948   l_log_module          VARCHAR2(240);
3949 BEGIN
3950   IF g_log_enabled THEN
3951     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_jlts';
3952   END IF;
3953 
3954   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3955     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_jlts',
3956           p_module => l_log_module,
3957           p_level  => C_LEVEL_PROCEDURE);
3958   END IF;
3959 
3960   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3961     trace(p_msg    => 'BEGIN LOOP: deleted oracle jlts',
3962           p_module => l_log_module,
3963           p_level  => C_LEVEL_PROCEDURE);
3964   END IF;
3965 
3966   FOR l_comp IN c_comp LOOP
3967     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3968       trace(p_msg    => 'LOOP: deleted oracle jlt '||
3969                         '- event_class_code = '||l_comp.event_class_code||
3970                         ', accounting_line_type_code = '||l_comp.accounting_line_type_code||
3971                         ', accounting_line_code = '||l_comp.accounting_line_code,
3972             p_module => l_log_module,
3973             p_level  => C_LEVEL_PROCEDURE);
3974     END IF;
3975 
3976     record_deleted_jlt
3977           (p_event_class_code          => l_comp.event_class_code
3978           ,p_accounting_line_type_code => l_comp.accounting_line_type_code
3979           ,p_accounting_line_code      => l_comp.accounting_line_code);
3980   END LOOP;
3981 
3982   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3983     trace(p_msg    => 'END LOOP: deleted oracle jlts',
3984           p_module => l_log_module,
3985           p_level  => C_LEVEL_PROCEDURE);
3986   END IF;
3987 
3988   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3989     trace(p_msg    => 'BEGIN LOOP: deleted oracle jlt details',
3990           p_module => l_log_module,
3991           p_level  => C_LEVEL_PROCEDURE);
3992   END IF;
3993 
3994   FOR l_comp IN c_comp_dtl LOOP
3995     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3996       trace(p_msg    => 'LOOP: deleted oracle jlt '||
3997                         '- event_class_code = '||l_comp.event_class_code||
3998                         ', accounting_line_type_code = '||l_comp.accounting_line_type_code||
3999                         ', accounting_line_code = '||l_comp.accounting_line_code||
4000                         ', accounting_attribute_code = '||l_comp.accounting_attribute_code,
4001             p_module => l_log_module,
4002             p_level  => C_LEVEL_PROCEDURE);
4003     END IF;
4004 
4005     record_updated_jlt_acct_attr
4009           ,p_accounting_attribute_code => l_comp.accounting_attribute_code
4006           (p_event_class_code          => l_comp.event_class_code
4007           ,p_accounting_line_type_code => l_comp.accounting_line_type_code
4008           ,p_accounting_line_code      => l_comp.accounting_line_code
4010           ,p_merge_impact              => C_MERGE_IMPACT_DELETED);
4011   END LOOP;
4012 
4013   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4014     trace(p_msg    => 'END LOOP: deleted oracle jlt details',
4015           p_module => l_log_module,
4016           p_level  => C_LEVEL_PROCEDURE);
4017   END IF;
4018 
4019   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4020     trace(p_msg    => 'END of function analyze_deleted_oracle_jlts',
4021           p_module => l_log_module,
4022           p_level  => C_LEVEL_PROCEDURE);
4023   END IF;
4024 
4025 EXCEPTION
4026   WHEN xla_exceptions_pkg.application_exception THEN
4027     RAISE;
4028   WHEN OTHERS THEN
4029    xla_exceptions_pkg.raise_message
4030       (p_location => l_log_module);
4031 END analyze_deleted_oracle_jlts;
4032 
4033 --=============================================================================
4034 --
4035 -- Name: analyze_deleted_oracle_jlds
4036 -- Description:
4037 --
4038 --=============================================================================
4039 PROCEDURE analyze_deleted_oracle_jlds
4040 IS
4041   CURSOR c_comp IS
4042     SELECT w.event_class_code
4043          , w.event_type_code
4044          , w.line_definition_owner_code
4045          , w.line_definition_code
4046       FROM xla_line_definitions_b w
4047      WHERE w.application_id             = g_application_id
4048        AND w.amb_context_code           = g_amb_context_code
4049        AND w.line_definition_owner_code = C_OWNER_ORACLE
4050        AND NOT EXISTS (
4051            SELECT 1
4052              FROM xla_line_definitions_b s
4053             WHERE s.application_id             = g_application_id
4054               AND s.amb_context_code           = g_staging_context_code
4055               AND s.event_class_code           = w.event_class_code
4056               AND s.event_type_code            = w.event_type_code
4057               AND s.line_definition_owner_code = w.line_definition_owner_code
4058               AND s.line_definition_code       = w.line_definition_code);
4059 
4060   CURSOR c_assgn IS
4061     SELECT w.product_rule_type_code
4062          , w.product_rule_code
4063          , w.event_class_code
4064          , w.event_type_code
4065          , w.line_definition_owner_code
4066          , w.line_definition_code
4067       FROM xla_aad_line_defn_assgns w
4068          , xla_prod_acct_headers    b
4069      WHERE b.amb_context_code           = g_staging_context_code
4070        AND b.application_id             = g_application_id
4071        AND b.product_rule_type_code     = w.product_rule_type_code
4072        AND b.product_rule_code          = w.product_rule_code
4073        AND b.event_class_code           = w.event_class_code
4074        AND b.event_type_code            = w.event_type_code
4075        AND w.amb_context_code           = g_amb_context_code
4076        AND w.application_id             = g_application_id
4077        AND w.line_definition_owner_code = C_OWNER_ORACLE
4078        AND NOT EXISTS
4079            (SELECT 1
4080               FROM xla_aad_line_defn_assgns s
4081              WHERE s.amb_context_code           = g_staging_context_code
4082                AND s.application_id             = g_application_id
4083                AND s.product_rule_type_code     = w.product_rule_type_code
4084                AND s.product_rule_code          = w.product_rule_code
4085                AND s.event_class_code           = w.event_class_code
4086                AND s.event_type_code            = w.event_type_code
4087                AND s.line_definition_owner_code = w.line_definition_owner_code
4088                AND s.line_definition_code       = w.line_definition_code);
4089 
4090   l_log_module          VARCHAR2(240);
4091 BEGIN
4092   IF g_log_enabled THEN
4093     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_jlds';
4094   END IF;
4095 
4096   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4097     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_jlds',
4098           p_module => l_log_module,
4099           p_level  => C_LEVEL_PROCEDURE);
4100   END IF;
4101 
4102   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4103     trace(p_msg    => 'BEGIN LOOP: deleted oracle jlds',
4104           p_module => l_log_module,
4105           p_level  => C_LEVEL_PROCEDURE);
4106   END IF;
4107 
4108   FOR l_comp IN c_comp LOOP
4109     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4110       trace(p_msg    => 'LOOP: deleted oracle jld '||
4111                         '- event_class_code = '||l_comp.event_class_code||
4112                         ', event_type_code = '||l_comp.event_type_code||
4113                         ', line_definition_owner_code = '||l_comp.line_definition_owner_code||
4114                         ', line_definition_code = '||l_comp.line_definition_code,
4115             p_module => l_log_module,
4116             p_level  => C_LEVEL_PROCEDURE);
4117     END IF;
4118 
4119     record_deleted_jld
4120           (p_event_class_code           => l_comp.event_class_code
4121           ,p_event_type_code            => l_comp.event_type_code
4122           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
4123           ,p_line_definition_code       => l_comp.line_definition_code);
4124   END LOOP;
4125 
4126   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4127     trace(p_msg    => 'END LOOP: deleted oracle jlds',
4128           p_module => l_log_module,
4129           p_level  => C_LEVEL_PROCEDURE);
4130   END IF;
4131 
4132   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4133     trace(p_msg    => 'BEGIN LOOP: deleted oracle jld assgns',
4137 
4134           p_module => l_log_module,
4135           p_level  => C_LEVEL_PROCEDURE);
4136   END IF;
4138   FOR l_comp IN c_assgn LOOP
4139     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4140       trace(p_msg    => 'LOOP: deleted oracle jld assgns '||
4141                         '- product_rule_type_code = '||l_comp.product_rule_type_code||
4142                         ', product_rule_code = '||l_comp.product_rule_code||
4143                         ', event_class_code = '||l_comp.event_class_code||
4144                         ', event_type_code = '||l_comp.event_type_code||
4145                         ', line_definition_owner_code = '||l_comp.line_definition_owner_code||
4146                         ', line_definition_code = '||l_comp.line_definition_code,
4147             p_module => l_log_module,
4148             p_level  => C_LEVEL_PROCEDURE);
4149     END IF;
4150 
4151     record_updated_jld_assgn
4152           (p_product_rule_type_code     => l_comp.product_rule_type_code
4153           ,p_product_rule_code          => l_comp.product_rule_code
4154           ,p_event_class_code           => l_comp.event_class_code
4155           ,p_event_type_code            => l_comp.event_type_code
4156           ,p_line_defn_owner_code       => l_comp.line_definition_owner_code
4157           ,p_line_defn_code             => l_comp.line_definition_code
4158           ,p_merge_impact               => C_MERGE_IMPACT_DELETED);
4159   END LOOP;
4160 
4161   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4162     trace(p_msg    => 'END LOOP: deleted oracle jld assgns',
4163           p_module => l_log_module,
4164           p_level  => C_LEVEL_PROCEDURE);
4165   END IF;
4166 
4167   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4168     trace(p_msg    => 'END of function analyze_deleted_oracle_jlds',
4169           p_module => l_log_module,
4170           p_level  => C_LEVEL_PROCEDURE);
4171   END IF;
4172 
4173 EXCEPTION
4174   WHEN xla_exceptions_pkg.application_exception THEN
4175     RAISE;
4176   WHEN OTHERS THEN
4177    xla_exceptions_pkg.raise_message
4178       (p_location => l_log_module);
4179 END analyze_deleted_oracle_jlds;
4180 
4181 
4182 --=============================================================================
4183 --
4184 -- Name: analyze_deleted_oracle_comps
4185 -- Description:
4186 --
4187 --=============================================================================
4188 PROCEDURE analyze_deleted_oracle_comps
4189 IS
4190   l_log_module          VARCHAR2(240);
4191 BEGIN
4192   IF g_log_enabled THEN
4193     l_log_module := C_DEFAULT_MODULE||'.analyze_deleted_oracle_comps';
4194   END IF;
4195 
4196   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4197     trace(p_msg    => 'BEGIN of function analyze_deleted_oracle_comps',
4198           p_module => l_log_module,
4199           p_level  => C_LEVEL_PROCEDURE);
4200   END IF;
4201 
4202   analyze_deleted_oracle_acs;
4203   analyze_deleted_oracle_adrs;
4204   analyze_deleted_oracle_descs;
4205   analyze_deleted_oracle_jlts;
4206   analyze_deleted_oracle_jlds;
4207   analyze_deleted_oracle_ems;
4208   analyze_deleted_oracle_aads;
4209 
4210   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4211     trace(p_msg    => 'END of function analyze_deleted_oracle_comps',
4212           p_module => l_log_module,
4213           p_level  => C_LEVEL_PROCEDURE);
4214   END IF;
4215 
4216 EXCEPTION
4217   WHEN xla_exceptions_pkg.application_exception THEN
4218     RAISE;
4219   WHEN OTHERS THEN
4220    xla_exceptions_pkg.raise_message
4221       (p_location => l_log_module);
4222 END analyze_deleted_oracle_comps;
4223 
4224 
4225 --=============================================================================
4226 --
4227 -- Name: compare_mapping_sets
4228 -- Description:
4229 --
4230 --=============================================================================
4231 PROCEDURE compare_mapping_sets
4232 IS
4233   CURSOR c_comp IS
4234     SELECT ts.mapping_set_code
4235           ,ts.name                        s_name
4236           ,tw.name                        w_name
4237           ,ts.description                 s_description
4238           ,tw.description                 w_description
4239           ,bs.accounting_coa_id           s_accounting_coa_id
4240           ,bw.accounting_coa_id           w_accounting_coa_id
4241           ,bs.value_set_id                s_value_set_id
4242           ,bw.value_set_id                w_value_set_id
4243           ,bs.enabled_flag                s_enabled_flag
4244           ,bw.enabled_flag                w_enabled_flag
4245           ,bs.flexfield_assign_mode_code  s_flexfield_assign_mode_code
4246           ,bw.flexfield_assign_mode_code  w_flexfield_assign_mode_code
4247           ,bs.flexfield_segment_code      s_flexfield_segment_code
4248           ,bw.flexfield_segment_code      w_flexfield_segment_code
4249           ,bs.view_application_id         s_view_application_id
4250           ,bw.view_application_id         w_view_application_id
4251           ,bs.lookup_type                 s_lookup_type
4252           ,bw.lookup_type                 w_lookup_type
4253       FROM xla_mapping_sets_b bs
4254            JOIN xla_mapping_sets_tl ts
4255            ON  ts.amb_context_code      = bs.amb_context_code
4256            AND ts.mapping_set_code      = bs.mapping_set_code
4257            AND ts.language              = USERENV('LANG')
4258            JOIN xla_mapping_sets_b bw
4259            ON  bw.amb_context_code      = g_amb_context_code
4260            AND bw.mapping_set_code      = bs.mapping_set_code
4261            JOIN xla_mapping_sets_tl tw
4262            ON  tw.amb_context_code      = bw.amb_context_code
4263            AND tw.mapping_set_code      = bw.mapping_set_code
4264            AND tw.language              = USERENV('LANG')
4265      WHERE bs.amb_context_code          = g_staging_context_code
4269             NVL(bs.accounting_coa_id,C_NUM)   <> NVL(bw.accounting_coa_id,C_NUM)   OR
4266        AND (ts.name                           <> tw.name                           OR
4267             NVL(ts.description,C_CHAR)        <> NVL(tw.description,C_CHAR)        OR
4268             NVL(bs.value_set_id,C_NUM)        <> NVL(bw.value_set_id,C_NUM)        OR
4270             bs.flexfield_assign_mode_code     <> bw.flexfield_assign_mode_code     OR
4271             NVL(bs.flexfield_segment_code,C_CHAR) <> NVL(bw.flexfield_segment_code,C_CHAR)     OR
4272             NVL(bs.view_application_id,C_NUM) <> NVL(bw.view_application_id,C_NUM) OR
4273             NVL(bs.lookup_type,C_CHAR)        <> NVL(bw.lookup_type,C_CHAR)        OR
4274             bs.enabled_flag                   <> bw.enabled_flag);
4275 
4276   l_key                 VARCHAR2(240);
4277   l_log_module          VARCHAR2(240);
4278 BEGIN
4279   IF g_log_enabled THEN
4280     l_log_module := C_DEFAULT_MODULE||'.compare_mapping_sets';
4281   END IF;
4282 
4283   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4284     trace(p_msg    => 'BEGIN of function compare_mapping_sets',
4285           p_module => l_log_module,
4286           p_level  => C_LEVEL_PROCEDURE);
4287   END IF;
4288 
4289   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4290     trace(p_msg    => 'BEGIN LOOP: updated mapping sets',
4291           p_module => l_log_module,
4292           p_level  => C_LEVEL_PROCEDURE);
4293   END IF;
4294 
4295   FOR l_comp in c_comp LOOP
4296 
4297     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4298       trace(p_msg    => 'LOOP: updated ms '||
4299                         '- mapping_set_code = '||l_comp.mapping_set_code,
4300             p_module => l_log_module,
4301             p_level  => C_LEVEL_PROCEDURE);
4302     END IF;
4303 
4304     l_key := l_comp.mapping_set_code;
4305 
4306     IF (l_comp.s_name <> l_comp.w_name) THEN
4307       record_updated_property
4308           (p_component_type          => 'AMB_MS'
4309           ,p_component_key           => l_key
4310           ,p_property                => 'NAME'
4311           ,p_old_value               => l_comp.w_name
4312           ,p_new_value               => l_comp.s_name);
4313     END IF;
4314 
4315     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
4316       record_updated_property
4317           (p_component_type          => 'AMB_MS'
4318           ,p_component_key           => l_key
4319           ,p_property                => 'DESCRIPTION'
4320           ,p_old_value               => l_comp.w_description
4321           ,p_new_value               => l_comp.s_description);
4322     END IF;
4323 
4324     IF (NVL(l_comp.s_accounting_coa_id,C_NUM) <> NVL(l_comp.w_accounting_coa_id,C_NUM)) THEN
4325       record_updated_property
4326           (p_component_type          => 'AMB_MS'
4327           ,p_component_key           => l_key
4328           ,p_property                => 'ACCOUNTING_COA'
4329           ,p_old_value               => l_comp.w_accounting_coa_id
4330           ,p_new_value               => l_comp.s_accounting_coa_id);
4331     END IF;
4332 
4333     IF (NVL(l_comp.s_value_set_id,C_NUM) <> NVL(l_comp.w_value_set_id,C_NUM)) THEN
4334       record_updated_property
4335           (p_component_type          => 'AMB_MS'
4336           ,p_component_key           => l_key
4337           ,p_property                => 'VALUE_SET'
4338           ,p_old_value               => l_comp.w_value_set_id
4339           ,p_new_value               => l_comp.s_value_set_id);
4340     END IF;
4341 
4342     IF (l_comp.s_flexfield_assign_mode_code <> l_comp.w_flexfield_assign_mode_code) THEN
4343       record_updated_property
4344           (p_component_type          => 'AMB_MS'
4345           ,p_component_key           => l_key
4346           ,p_property                => 'FLEXFIELD_ASSIGN_MODE'
4347           ,p_old_value               => l_comp.w_flexfield_assign_mode_code
4348           ,p_new_value               => l_comp.s_flexfield_assign_mode_code
4349           ,p_lookup_type             => 'XLA_ASSIGN_FLEX_MODE');
4350     END IF;
4351 
4352     IF (NVL(l_comp.s_flexfield_segment_code,C_CHAR) <> NVL(l_comp.w_flexfield_segment_code,C_CHAR)) THEN
4353       record_updated_property
4354           (p_component_type          => 'AMB_MS'
4355           ,p_component_key           => l_key
4356           ,p_property                => 'FLEXFIELD_SEGMENT'
4357           ,p_old_value               => l_comp.w_flexfield_segment_code
4358           ,p_new_value               => l_comp.s_flexfield_segment_code);
4359     END IF;
4360 
4361     IF (NVL(l_comp.s_view_application_id,C_NUM) <> NVL(l_comp.w_view_application_id,C_NUM)) THEN
4362       record_updated_property
4363           (p_component_type          => 'AMB_MS'
4364           ,p_component_key           => l_key
4365           ,p_property                => 'VIEW_APPLICATION'
4366           ,p_old_value               => l_comp.w_view_application_id
4367           ,p_new_value               => l_comp.s_view_application_id);
4368     END IF;
4369 
4370     IF (NVL(l_comp.s_lookup_type,C_CHAR) <> NVL(l_comp.w_lookup_type,C_CHAR)) THEN
4371       record_updated_property
4372           (p_component_type          => 'AMB_MS'
4373           ,p_component_key           => l_key
4374           ,p_property                => 'LOOKUP_TYPE'
4375           ,p_old_value               => l_comp.w_lookup_type
4376           ,p_new_value               => l_comp.s_lookup_type);
4377     END IF;
4378 
4379     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
4380       record_updated_property
4381           (p_component_type          => 'AMB_MS'
4382           ,p_component_key           => l_key
4383           ,p_property                => 'ENABLED'
4384           ,p_old_value               => l_comp.w_enabled_flag
4385           ,p_new_value               => l_comp.s_enabled_flag
4386           ,p_lookup_type             => 'XLA_YES_NO');
4387     END IF;
4391           ,p_merge_impact     => C_MERGE_IMPACT_UPDATED);
4388 
4389     record_updated_ms
4390           (p_mapping_set_code => l_comp.mapping_set_code
4392 
4393   END LOOP;
4394 
4395   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4396     trace(p_msg    => 'END LOOP: updated mapping sets',
4397           p_module => l_log_module,
4398           p_level  => C_LEVEL_PROCEDURE);
4399   END IF;
4400 
4401   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4402     trace(p_msg    => 'END of function compare_mapping_sets',
4403           p_module => l_log_module,
4404           p_level  => C_LEVEL_PROCEDURE);
4405   END IF;
4406 
4407 EXCEPTION
4408   WHEN xla_exceptions_pkg.application_exception THEN
4409     RAISE;
4410   WHEN OTHERS THEN
4411    xla_exceptions_pkg.raise_message
4412       (p_location => l_log_module);
4413 END compare_mapping_sets;
4414 
4415 --=============================================================================
4416 --
4417 -- Name: compare_mapping_set_values
4418 -- Description:
4419 --
4420 --=============================================================================
4421 PROCEDURE compare_mapping_set_values
4422 IS
4423   CURSOR c_comp IS
4424     SELECT s.mapping_set_code
4425           ,bs.flexfield_assign_mode_code
4426           ,bs.value_set_id
4427           ,bs.view_application_id
4428           ,bs.lookup_type
4429           ,s.value_constant
4430           ,s.effective_date_from
4431           ,s.effective_date_to
4432           ,s.enabled_flag
4433           ,s.input_value_type_code
4434           ,s.input_value_constant
4435           ,C_MERGE_IMPACT_NEW merge_impact
4436       FROM xla_mapping_set_values s
4437            JOIN xla_mapping_sets_b bs
4438            ON  bs.amb_context_code      = s.amb_context_code
4439            AND bs.mapping_set_code      = s.mapping_set_code
4440      WHERE s.amb_context_code = g_staging_context_code
4441        AND NOT EXISTS
4442            (SELECT 1
4443               FROM xla_mapping_set_values w
4444              WHERE w.amb_context_code                      = g_amb_context_code
4445                AND w.mapping_set_code                      = s.mapping_set_code
4446                AND NVL(w.value_constant,C_CHAR)            = NVL(s.value_constant,C_CHAR)
4447                AND w.effective_date_from                   = s.effective_date_from
4448                AND NVL(w.effective_date_to,C_DATE)         = NVL(s.effective_date_to,C_DATE)
4449                AND w.enabled_flag                          = s.enabled_flag
4450                AND w.input_value_type_code                 = s.input_value_type_code
4451                AND NVL(w.input_value_constant,C_CHAR)      = NVL(s.input_value_constant,C_CHAR))
4452      UNION
4453     SELECT w.mapping_set_code
4454           ,bw.flexfield_assign_mode_code
4455           ,bw.value_set_id
4456           ,bw.view_application_id
4457           ,bw.lookup_type
4458           ,w.value_constant
4459           ,w.effective_date_from
4460           ,w.effective_date_to
4461           ,w.enabled_flag
4462           ,w.input_value_type_code
4463           ,w.input_value_constant
4464           ,C_MERGE_IMPACT_DELETED
4465       FROM xla_mapping_set_values w
4466            JOIN xla_mapping_sets_b bw
4467            ON  bw.amb_context_code      = w.amb_context_code
4468            AND bw.mapping_set_code      = w.mapping_set_code
4469      WHERE w.amb_context_code = g_staging_context_code
4470        AND NOT EXISTS
4471            (SELECT 1
4472               FROM xla_mapping_set_values s
4473              WHERE s.amb_context_code                      = g_staging_context_code
4474                AND s.mapping_set_code                      = w.mapping_set_code
4475                AND NVL(s.value_constant,C_CHAR)            = NVL(w.value_constant,C_CHAR)
4476                AND s.effective_date_from                   = w.effective_date_from
4477                AND NVL(s.effective_date_to,C_DATE)         = NVL(w.effective_date_to,C_DATE)
4478                AND s.enabled_flag                          = w.enabled_flag
4479                AND s.input_value_type_code                 = w.input_value_type_code
4480                AND NVL(s.input_value_constant,C_CHAR)      = NVL(w.input_value_constant,C_CHAR));
4481 
4482   l_key                 VARCHAR2(240);
4483   l_log_module          VARCHAR2(240);
4484 BEGIN
4485   IF g_log_enabled THEN
4486     l_log_module := C_DEFAULT_MODULE||'.compare_mapping_set_values';
4487   END IF;
4488 
4489   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4490     trace(p_msg    => 'BEGIN of function compare_mapping_set_values',
4491           p_module => l_log_module,
4492           p_level  => C_LEVEL_PROCEDURE);
4493   END IF;
4494 
4495   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4496     trace(p_msg    => 'BEGIN LOOP: updated mapping set values',
4497           p_module => l_log_module,
4498           p_level  => C_LEVEL_PROCEDURE);
4499   END IF;
4500 
4501   FOR l_comp in c_comp LOOP
4502 
4503     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4504       trace(p_msg    => 'LOOP: updated ms value '||
4505                         '- mapping_set_code = '||l_comp.mapping_set_code||
4506                         ', merge_impact = '||l_comp.merge_impact,
4507             p_module => l_log_module,
4508             p_level  => C_LEVEL_PROCEDURE);
4509     END IF;
4510 
4511     record_updated_ms_value
4512             (p_mapping_set_code          => l_comp.mapping_set_code
4513             ,p_flexfield_assign_mode_code=> l_comp.flexfield_assign_mode_code
4514             ,p_value_set_id              => l_comp.value_set_id
4515             ,p_view_application_id       => l_comp.view_application_id
4516             ,p_lookup_type               => l_comp.lookup_type
4517             ,p_value_constant            => l_comp.value_constant
4518             ,p_effective_date_from       => l_comp.effective_date_from
4522             ,p_input_value_constant      => l_comp.input_value_constant
4519             ,p_effective_date_to         => l_comp.effective_date_to
4520             ,p_enabled_flag              => l_comp.enabled_flag
4521             ,p_input_value_type_code     => l_comp.input_value_type_code
4523             ,p_merge_impact              => l_comp.merge_impact);
4524 
4525   END LOOP;
4526 
4527   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4528     trace(p_msg    => 'END LOOP: updated mapping set values',
4529           p_module => l_log_module,
4530           p_level  => C_LEVEL_PROCEDURE);
4531   END IF;
4532 
4533   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4534     trace(p_msg    => 'END of function compare_mapping_set_values',
4535           p_module => l_log_module,
4536           p_level  => C_LEVEL_PROCEDURE);
4537   END IF;
4538 
4539 EXCEPTION
4540   WHEN xla_exceptions_pkg.application_exception THEN
4541     RAISE;
4542   WHEN OTHERS THEN
4543    xla_exceptions_pkg.raise_message
4544       (p_location => l_log_module);
4545 END compare_mapping_set_values;
4546 
4547 --=============================================================================
4548 --
4549 -- Name: compare_adrs
4550 -- Description:
4551 --
4552 --=============================================================================
4553 PROCEDURE compare_adrs
4554 IS
4555   CURSOR c_comp IS
4556     SELECT ts.application_id segment_rule_appl_id
4557           ,ts.segment_rule_type_code
4558           ,ts.segment_rule_code
4559           ,ts.name                        s_name
4560           ,tw.name                        w_name
4561           ,ts.description                 s_description
4562           ,tw.description                 w_description
4563           ,bs.transaction_coa_id          s_transaction_coa_id
4564           ,bw.transaction_coa_id          w_transaction_coa_id
4565           ,bs.accounting_coa_id           s_accounting_coa_id
4566           ,bw.accounting_coa_id           w_accounting_coa_id
4567           ,bs.flexfield_assign_mode_code  s_flexfield_assign_mode_code
4568           ,bw.flexfield_assign_mode_code  w_flexfield_assign_mode_code
4569           ,bs.flexfield_segment_code      s_flexfield_segment_code
4570           ,bw.flexfield_segment_code      w_flexfield_segment_code
4571           ,bs.enabled_flag                s_enabled_flag
4572           ,bw.enabled_flag                w_enabled_flag
4573       FROM xla_seg_rules_b bs
4574            JOIN xla_seg_rules_tl ts
4575            ON  ts.application_id          = bs.application_id
4576            AND ts.amb_context_code        = bs.amb_context_code
4577            AND ts.segment_rule_type_code  = bs.segment_rule_type_code
4578            AND ts.segment_rule_code       = bs.segment_rule_code
4579            AND ts.language                = USERENV('LANG')
4580            JOIN xla_seg_rules_b bw
4581            ON  bw.application_id          = g_application_id
4582            AND bw.amb_context_code        = g_amb_context_code
4583            AND bw.segment_rule_type_code  = bs.segment_rule_type_code
4584            AND bw.segment_rule_code       = bs.segment_rule_code
4585            JOIN xla_seg_rules_tl tw
4586            ON  tw.application_id          = bw.application_id
4587            AND tw.amb_context_code        = bw.amb_context_code
4588            AND tw.segment_rule_type_code  = bw.segment_rule_type_code
4589            AND tw.segment_rule_code       = bw.segment_rule_code
4590            AND tw.language                = USERENV('LANG')
4591      WHERE bs.application_id              = g_application_id
4592        AND bs.amb_context_code            = g_staging_context_code
4593        AND (ts.name                               <> tw.name                              OR
4594             NVL(ts.description,C_CHAR)            <> NVL(tw.description,C_CHAR)           OR
4595             nvl(bs.transaction_coa_id,C_NUM)      <> NVL(bw.transaction_coa_id,C_NUM)     OR
4596             nvl(bs.accounting_coa_id,C_NUM)       <> NVL(bw.accounting_coa_id,C_NUM)      OR
4597             bs.flexfield_assign_mode_code         <> bw.flexfield_assign_mode_code        OR
4598             NVL(bs.flexfield_segment_code,C_CHAR) <> NVL(bw.flexfield_segment_code,C_CHAR)OR
4599             bs.enabled_flag                       <> bw.enabled_flag);
4600 
4601   l_key                 VARCHAR2(240);
4602   l_log_module          VARCHAR2(240);
4603 BEGIN
4604   IF g_log_enabled THEN
4605     l_log_module := C_DEFAULT_MODULE||'.compare_adrs';
4606   END IF;
4607 
4608   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4609     trace(p_msg    => 'BEGIN of function compare_adrs',
4610           p_module => l_log_module,
4611           p_level  => C_LEVEL_PROCEDURE);
4612   END IF;
4613 
4614   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4615     trace(p_msg    => 'BEGIN LOOP: updated adrs',
4616           p_module => l_log_module,
4617           p_level  => C_LEVEL_PROCEDURE);
4618   END IF;
4619 
4620   FOR l_comp in c_comp LOOP
4621 
4622     l_key := l_comp.segment_rule_appl_id||C_CHAR||
4623              l_comp.segment_rule_type_code||C_CHAR||
4624              l_comp.segment_rule_code;
4625 
4626     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4627       trace(p_msg    => 'LOOP: updated adr - '||l_key,
4628             p_module => l_log_module,
4629             p_level  => C_LEVEL_PROCEDURE);
4630     END IF;
4631 
4632     IF (l_comp.s_name <> l_comp.w_name) THEN
4633       record_updated_property
4634           (p_component_type          => 'AMB_ADR'
4635           ,p_component_key           => l_key
4636           ,p_property                => 'NAME'
4637           ,p_old_value               => l_comp.w_name
4638           ,p_new_value               => l_comp.s_name);
4639     END IF;
4640 
4641     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
4642       record_updated_property
4643           (p_component_type          => 'AMB_ADR'
4647           ,p_new_value               => l_comp.s_description);
4644           ,p_component_key           => l_key
4645           ,p_property                => 'DESCRIPTION'
4646           ,p_old_value               => l_comp.w_description
4648     END IF;
4649 
4650     IF (NVL(l_comp.s_transaction_coa_id,C_NUM) <> NVL(l_comp.w_transaction_coa_id,C_NUM)) THEN
4651       record_updated_property
4652           (p_component_type          => 'AMB_ADR'
4653           ,p_component_key           => l_key
4654           ,p_property                => 'TRANSACTION_COA'
4655           ,p_old_value               => l_comp.w_transaction_coa_id
4656           ,p_new_value               => l_comp.s_transaction_coa_id);
4657     END IF;
4658 
4659     IF (NVL(l_comp.s_accounting_coa_id,C_NUM) <> NVL(l_comp.w_accounting_coa_id,C_NUM)) THEN
4660       record_updated_property
4661           (p_component_type          => 'AMB_ADR'
4662           ,p_component_key           => l_key
4663           ,p_property                => 'ACCOUNTING_COA'
4664           ,p_old_value               => l_comp.w_accounting_coa_id
4665           ,p_new_value               => l_comp.s_accounting_coa_id);
4666     END IF;
4667 
4668     IF (l_comp.s_flexfield_assign_mode_code <> l_comp.w_flexfield_assign_mode_code) THEN
4669       record_updated_property
4670           (p_component_type          => 'AMB_ADR'
4671           ,p_component_key           => l_key
4672           ,p_property                => 'FLEXFIELD_ASSIGN_MODE'
4673           ,p_old_value               => l_comp.w_flexfield_assign_mode_code
4674           ,p_new_value               => l_comp.s_flexfield_assign_mode_code
4675           ,p_lookup_type             => 'XLA_ASSIGN_FLEX_MODE');
4676     END IF;
4677 
4678     IF (NVL(l_comp.s_flexfield_segment_code,C_CHAR) <> NVL(l_comp.w_flexfield_segment_code,C_CHAR)) THEN
4679       record_updated_property
4680           (p_component_type          => 'AMB_ADR'
4681           ,p_component_key           => l_key
4682           ,p_property                => 'FLEXFIELD_SEGMENT'
4683           ,p_old_value               => l_comp.w_flexfield_segment_code
4684           ,p_new_value               => l_comp.s_flexfield_segment_code);
4685     END IF;
4686 
4687     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
4688       record_updated_property
4689           (p_component_type          => 'AMB_ADR'
4690           ,p_component_key           => l_key
4691           ,p_property                => 'ENABLED'
4692           ,p_old_value               => l_comp.w_enabled_flag
4693           ,p_new_value               => l_comp.s_enabled_flag
4694           ,p_lookup_type             => 'XLA_YES_NO');
4695     END IF;
4696 
4697     record_updated_adr
4698           (p_segment_rule_appl_id   => l_comp.segment_rule_appl_id
4699           ,p_segment_rule_type_code => l_comp.segment_rule_type_code
4700           ,p_segment_rule_code      => l_comp.segment_rule_code);
4701 
4702   END LOOP;
4703 
4704   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4705     trace(p_msg    => 'END LOOP: updated adrs',
4706           p_module => l_log_module,
4707           p_level  => C_LEVEL_PROCEDURE);
4708   END IF;
4709 
4710   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4711     trace(p_msg    => 'END of function compare_adrs',
4712           p_module => l_log_module,
4713           p_level  => C_LEVEL_PROCEDURE);
4714   END IF;
4715 
4716 EXCEPTION
4717   WHEN xla_exceptions_pkg.application_exception THEN
4718     RAISE;
4719   WHEN OTHERS THEN
4720    xla_exceptions_pkg.raise_message
4721       (p_location => l_log_module);
4722 END compare_adrs;
4723 
4724 --=============================================================================
4725 --
4726 -- Name: compare_adr_details
4727 -- Description:
4728 --
4729 --=============================================================================
4730 PROCEDURE compare_adr_details
4731 IS
4732   CURSOR c_comp IS
4733     SELECT s.application_id segment_rule_appl_id
4734           ,s.segment_rule_type_code
4735           ,s.segment_rule_code
4736           ,s.user_sequence
4737           ,CASE WHEN w.user_sequence IS NULL
4738                 THEN C_MERGE_IMPACT_NEW
4739                 ELSE C_MERGE_IMPACT_UPDATED END merge_impact
4740           ,bs.accounting_coa_id           s_accounting_coa_id
4741           ,bw.accounting_coa_id           w_accounting_coa_id
4742           ,s.value_type_code              s_value_type_code
4743           ,w.value_type_code              w_value_type_code
4744           ,s.value_code_combination_id    s_value_ccid
4745           ,w.value_code_combination_id    w_value_ccid
4746           ,s.value_source_application_id  s_value_source_app_id
4747           ,w.value_source_application_id  w_value_source_app_id
4748           ,s.value_source_type_code       s_value_source_type_code
4749           ,w.value_source_type_code       w_value_source_type_code
4750           ,s.value_source_code            s_value_source_code
4751           ,w.value_source_code            w_value_source_code
4752           ,s.value_constant               s_value_constant
4753           ,w.value_constant               w_value_constant
4754           ,s.value_mapping_set_code       s_value_mapping_set_code
4755           ,w.value_mapping_set_code       w_value_mapping_set_code
4756           ,s.value_flexfield_segment_code s_value_flexfield_segment_code
4757           ,w.value_flexfield_segment_code w_value_flexfield_segment_code
4758           ,s.value_segment_rule_appl_id   s_value_segment_rule_appl_id
4759           ,s.value_segment_rule_appl_id   w_value_segment_rule_appl_id
4760           ,s.value_segment_rule_type_code s_value_segment_rule_type_code
4761           ,s.value_segment_rule_type_code w_value_segment_rule_type_code
4762           ,s.value_segment_rule_code      s_value_segment_rule_code
4763           ,s.value_segment_rule_code      w_value_segment_rule_code
4764           ,s.input_source_application_id  s_input_source_app_id
4768           ,s.input_source_code            s_input_source_code
4765           ,w.input_source_application_id  w_input_source_app_id
4766           ,s.input_source_type_code       s_input_source_type_code
4767           ,w.input_source_type_code       w_input_source_type_code
4769           ,w.input_source_code            w_input_source_code
4770       FROM xla_seg_rule_details s
4771            JOIN xla_seg_rules_b bs
4772            ON  bs.application_id           = g_application_id
4773            AND bs.amb_context_code         = g_staging_context_code
4774            AND bs.segment_rule_type_code   = s.segment_rule_type_code
4775            AND bs.segment_rule_code        = s.segment_rule_code
4776            JOIN xla_seg_rules_b bw
4777            ON  bw.application_id           = g_application_id
4778            AND bw.amb_context_code         = g_amb_context_code
4779            AND bw.segment_rule_type_code   = s.segment_rule_type_code
4780            AND bw.segment_rule_code        = s.segment_rule_code
4781            LEFT OUTER JOIN xla_seg_rule_details w
4782            ON  w.application_id           = g_application_id
4783            AND w.amb_context_code         = g_amb_context_code
4784            AND w.segment_rule_type_code   = s.segment_rule_type_code
4785            AND w.segment_rule_code        = s.segment_rule_code
4786            AND w.user_sequence            = s.user_sequence
4787      WHERE s.application_id               = g_application_id
4788        AND s.amb_context_code             = g_staging_context_code
4789        AND (w.value_type_code IS NULL OR
4790             NVL(s.value_type_code,C_CHAR)              <> NVL(w.value_type_code,C_CHAR)              OR
4791             NVL(s.value_code_combination_id,C_NUM)     <> NVL(w.value_code_combination_id,C_NUM)     OR
4792             NVL(s.value_source_application_id,C_NUM)   <> NVL(w.value_source_application_id,C_NUM)   OR
4793             NVL(s.value_source_type_code,C_CHAR)       <> NVL(w.value_source_type_code,C_CHAR)       OR
4794             NVL(s.value_source_code,C_CHAR)            <> NVL(w.value_source_code,C_CHAR)            OR
4795             NVL(s.value_constant,C_CHAR)               <> NVL(w.value_constant,C_CHAR)               OR
4796             NVL(s.value_mapping_set_code,C_CHAR)       <> NVL(w.value_mapping_set_code,C_CHAR)       OR
4797             NVL(s.value_segment_rule_appl_id,C_NUM)    <> NVL(w.value_segment_rule_appl_id,C_NUM)    OR
4798             NVL(s.value_segment_rule_type_code,C_CHAR) <> NVL(w.value_segment_rule_type_code,C_CHAR) OR
4799             NVL(s.value_segment_rule_code,C_CHAR)      <> NVL(w.value_segment_rule_code,C_CHAR)      OR
4800             NVL(s.value_flexfield_segment_code,C_CHAR) <> NVL(w.value_flexfield_segment_code,C_CHAR) OR
4801             NVL(s.input_source_application_id,C_NUM)   <> NVL(w.input_source_application_id,C_NUM)   OR
4802             NVL(s.input_source_type_code,C_CHAR)       <> NVL(w.input_source_type_code,C_CHAR)       OR
4803             NVL(s.input_source_code,C_CHAR)            <> NVL(w.input_source_code,C_CHAR));
4804 
4805   l_key                 VARCHAR2(240);
4806   l_s_value             VARCHAR2(2000);
4807   l_w_value             VARCHAR2(2000);
4808   l_log_module          VARCHAR2(240);
4809 BEGIN
4810   IF g_log_enabled THEN
4811     l_log_module := C_DEFAULT_MODULE||'.compare_adr_details';
4812   END IF;
4813 
4814   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4815     trace(p_msg    => 'BEGIN of function compare_adr_details',
4816           p_module => l_log_module,
4817           p_level  => C_LEVEL_PROCEDURE);
4818   END IF;
4819 
4820   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4821     trace(p_msg    => 'BEGIN LOOP: updated adr details',
4822           p_module => l_log_module,
4823           p_level  => C_LEVEL_PROCEDURE);
4824   END IF;
4825 
4826   FOR l_comp in c_comp LOOP
4827 
4828     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4829       trace(p_msg    => 'LOOP: updated adr detail '||
4830                         '- segment_rule_type_code = '||l_comp.segment_rule_type_code||
4831                         ', segment_rule_code = '||l_comp.segment_rule_code||
4832                         ', user_sequence = '||l_comp.user_sequence||
4833                         ', merge_impact = '||l_comp.merge_impact,
4834             p_module => l_log_module,
4835             p_level  => C_LEVEL_PROCEDURE);
4836     END IF;
4837 
4838     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
4839 
4840       l_key := l_comp.segment_rule_appl_id||C_CHAR||
4841                l_comp.segment_rule_type_code||C_CHAR||
4842                l_comp.segment_rule_code||C_CHAR||
4843                l_comp.user_sequence;
4844 
4845       IF (l_comp.s_value_type_code <> l_comp.w_value_type_code) THEN
4846         record_updated_property
4847             (p_component_type          => 'AMB_ADR_DETAIL'
4848             ,p_component_key           => l_key
4849             ,p_property                => 'VALUE_TYPE'
4850             ,p_old_value               => l_comp.w_value_type_code
4851             ,p_new_value               => l_comp.s_value_type_code
4852             ,p_lookup_type             => 'XLA_SEG_VALUE_TYPE');
4853       END IF;
4854 
4855       IF (NVL(l_comp.s_value_source_app_id,C_NUM)           <> NVL(l_comp.w_value_source_app_id,C_NUM)           OR
4856           NVL(l_comp.s_value_source_type_code,C_CHAR)       <> NVL(l_comp.w_value_source_type_code,C_CHAR)       OR
4857           NVL(l_comp.s_value_source_code,C_CHAR)            <> NVL(l_comp.w_value_source_code,C_CHAR)            OR
4858           NVL(l_comp.s_value_mapping_set_code,C_CHAR)       <> NVL(l_comp.w_value_mapping_set_code,C_CHAR)       OR
4859           NVL(l_comp.s_value_segment_rule_appl_id,C_NUM)    <> NVL(l_comp.w_value_segment_rule_appl_id,C_NUM)    OR
4860           NVL(l_comp.s_value_segment_rule_type_code,C_CHAR) <> NVL(l_comp.w_value_segment_rule_type_code,C_CHAR) OR
4861           NVL(l_comp.s_value_segment_rule_code,C_CHAR)      <> NVL(l_comp.w_value_segment_rule_code,C_CHAR)
4862          )
4863       THEN
4864         record_updated_value
4865             (p_component_type          => 'AMB_ADR_DETAIL'
4869             ,p_old_source_app_id       => NVL(l_comp.w_value_source_app_id,
4866             ,p_component_key           => l_key
4867             ,p_property                => 'VALUE'
4868             ,p_old_value               => '#VALUE_TYPE_CODE#='||l_comp.w_value_type_code
4870                                               l_comp.w_value_segment_rule_appl_id)
4871             ,p_old_source_type_code    => NVL(l_comp.w_value_source_type_code,
4872                                               l_comp.w_value_segment_rule_type_code)
4873             ,p_old_source_code         => NVL(l_comp.w_value_mapping_set_code,
4874                                            NVL(l_comp.w_value_segment_rule_code,
4875                                                l_comp.w_value_source_code))
4876             ,p_new_value               => '#VALUE_TYPE_CODE#='||l_comp.s_value_type_code
4877             ,p_new_source_app_id       => NVL(l_comp.s_value_source_app_id,
4878                                               l_comp.s_value_segment_rule_appl_id)
4879             ,p_new_source_type_code    => NVL(l_comp.s_value_source_type_code,
4880                                               l_comp.s_value_segment_rule_type_code)
4881             ,p_new_source_code         => NVL(l_comp.s_value_mapping_set_code,
4882                                            NVL(l_comp.s_value_segment_rule_code,
4883                                                l_comp.s_value_source_code)));
4884       END IF;
4885 
4886       IF (NVL(l_comp.s_input_source_app_id,C_NUM)     <> NVL(l_comp.w_input_source_app_id,C_NUM)     OR
4887           NVL(l_comp.s_input_source_type_code,C_CHAR) <> NVL(l_comp.w_input_source_type_code,C_CHAR) OR
4888           NVL(l_comp.s_input_source_code,C_CHAR)      <> NVL(l_comp.w_input_source_code,C_CHAR)) THEN
4889         record_updated_source
4890             (p_component_type          => 'AMB_ADR_DETAIL'
4891             ,p_component_key           => l_key
4892             ,p_property                => 'INPUT_SOURCE'
4893             ,p_old_source_app_id       => l_comp.w_input_source_app_id
4894             ,p_old_source_type_code    => l_comp.w_input_source_type_code
4895             ,p_old_source_code         => l_comp.w_input_source_code
4896             ,p_new_source_app_id       => l_comp.s_input_source_app_id
4897             ,p_new_source_type_code    => l_comp.s_input_source_type_code
4898             ,p_new_source_code         => l_comp.s_input_source_code);
4899       END IF;
4900 
4901       IF (NVL(l_comp.s_value_flexfield_segment_code,C_CHAR) <>
4902           NVL(l_comp.w_value_flexfield_segment_code,C_CHAR)) THEN
4903         record_updated_property
4904             (p_component_type          => 'AMB_ADR_DETAIL'
4905             ,p_component_key           => l_key
4906             ,p_property                => 'FLEXFIELD_SEGMENT'
4907             ,p_old_value               => l_comp.w_value_flexfield_segment_code
4908             ,p_new_value               => l_comp.s_value_flexfield_segment_code);
4909       END IF;
4910 
4911       IF (NVL(l_comp.s_value_constant,C_CHAR) <> NVL(l_comp.w_value_constant,C_CHAR)) THEN
4912         record_updated_property
4913             (p_component_type          => 'AMB_ADR_DETAIL'
4914             ,p_component_key           => l_key
4915             ,p_property                => 'VALUE'
4916             ,p_old_value               => l_comp.w_value_constant
4917             ,p_new_value               => l_comp.s_value_constant);
4918       END IF;
4919 
4920       IF (NVL(l_comp.s_value_ccid,C_NUM) <> NVL(l_comp.w_value_ccid,C_NUM)) THEN
4921 
4922         IF (l_comp.s_value_ccid IS NOT NULL) THEN
4923           l_s_value := fnd_flex_ext.get_segs('SQLGL', 'GL#', l_comp.s_accounting_coa_id, l_comp.s_value_ccid);
4924         END IF;
4925 
4926         IF (l_comp.w_value_ccid IS NOT NULL) THEN
4927           l_w_value := fnd_flex_ext.get_segs('SQLGL', 'GL#', l_comp.w_accounting_coa_id, l_comp.w_value_ccid);
4928         END IF;
4929 
4930         record_updated_property
4931             (p_component_type          => 'AMB_ADR_DETAIL'
4932             ,p_component_key           => l_key
4933             ,p_property                => 'VALUE'
4934             ,p_old_value               => l_w_value
4935             ,p_new_value               => l_s_value);
4936       END IF;
4937     END IF;
4938 
4939     record_updated_adr_detail
4940             (p_segment_rule_appl_id   => l_comp.segment_rule_appl_id
4941             ,p_segment_rule_type_code => l_comp.segment_rule_type_code
4942             ,p_segment_rule_code      => l_comp.segment_rule_code
4943             ,p_user_sequence          => l_comp.user_sequence
4944             ,p_merge_impact           => l_comp.merge_impact);
4945 
4946   END LOOP;
4947 
4948   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4949     trace(p_msg    => 'END LOOP: updated adr details',
4950           p_module => l_log_module,
4951           p_level  => C_LEVEL_PROCEDURE);
4952   END IF;
4953 
4954   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4955     trace(p_msg    => 'END of function compare_adr_details',
4956           p_module => l_log_module,
4957           p_level  => C_LEVEL_PROCEDURE);
4958   END IF;
4959 
4960 EXCEPTION
4961   WHEN xla_exceptions_pkg.application_exception THEN
4962     RAISE;
4963   WHEN OTHERS THEN
4964    xla_exceptions_pkg.raise_message
4965       (p_location => l_log_module);
4966 END compare_adr_details;
4967 
4968 --=============================================================================
4969 --
4970 -- Name: compare_descs
4971 -- Description: Retrieve descriptions that are updated
4972 --
4973 --=============================================================================
4974 PROCEDURE compare_descs
4975 IS
4976   CURSOR c_comp IS
4977     SELECT ts.description_type_code
4978           ,ts.description_code
4979           ,ts.name                        s_name
4980           ,tw.name                        w_name
4981           ,ts.description                 s_description
4985           ,bs.enabled_flag                s_enabled_flag
4982           ,tw.description                 w_description
4983           ,bs.transaction_coa_id          s_transaction_coa_id
4984           ,bw.transaction_coa_id          w_transaction_coa_id
4986           ,bw.enabled_flag                w_enabled_flag
4987       FROM xla_descriptions_b bs
4988            JOIN xla_descriptions_tl ts
4989            ON  ts.application_id        = bs.application_id
4990            AND ts.amb_context_code      = bs.amb_context_code
4991            AND ts.description_type_code = bs.description_type_code
4992            AND ts.description_code      = bs.description_code
4993            AND ts.language              = USERENV('LANG')
4994            JOIN xla_descriptions_b bw
4995            ON  bw.application_id        = g_application_id
4996            AND bw.amb_context_code      = g_amb_context_code
4997            AND bw.description_type_code = bs.description_type_code
4998            AND bw.description_code      = bs.description_code
4999            JOIN xla_descriptions_tl tw
5000            ON  tw.application_id        = bw.application_id
5001            AND tw.amb_context_code      = bw.amb_context_code
5002            AND tw.description_type_code = bw.description_type_code
5003            AND tw.description_code      = bw.description_code
5004            AND tw.language              = USERENV('LANG')
5005      WHERE bs.application_id                 = g_application_id
5006        AND bs.amb_context_code               = g_staging_context_code
5007        AND (ts.name                          <> tw.name                          OR
5008             NVL(ts.description,C_CHAR)       <> NVL(tw.description,C_CHAR)       OR
5009             NVL(bs.transaction_coa_id,C_NUM) <> NVL(bw.transaction_coa_id,C_NUM) OR
5010             bs.enabled_flag                  <> bw.enabled_flag);
5011 
5012   l_key                 VARCHAR2(240);
5013   l_log_module          VARCHAR2(240);
5014 BEGIN
5015   IF g_log_enabled THEN
5016     l_log_module := C_DEFAULT_MODULE||'.compare_descs';
5017   END IF;
5018 
5019   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5020     trace(p_msg    => 'BEGIN of function compare_descs',
5021           p_module => l_log_module,
5022           p_level  => C_LEVEL_PROCEDURE);
5023   END IF;
5024 
5025   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5026     trace(p_msg    => 'BEGIN LOOP: updated desc',
5027           p_module => l_log_module,
5028           p_level  => C_LEVEL_PROCEDURE);
5029   END IF;
5030 
5031   FOR l_comp in c_comp LOOP
5032 
5033     l_key := l_comp.description_type_code||C_CHAR||
5034              l_comp.description_code;
5035 
5036     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5037       trace(p_msg    => 'LOOP: updated desc - '||l_key,
5038             p_module => l_log_module,
5039             p_level  => C_LEVEL_PROCEDURE);
5040     END IF;
5041 
5042     IF (l_comp.s_name <> l_comp.w_name) THEN
5043       record_updated_property
5044           (p_component_type          => 'AMB_DESCRIPTION'
5045           ,p_component_key           => l_key
5046           ,p_property                => 'NAME'
5047           ,p_old_value               => l_comp.w_name
5048           ,p_new_value               => l_comp.s_name);
5049     END IF;
5050 
5051     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
5052       record_updated_property
5053           (p_component_type          => 'AMB_DESCRIPTION'
5054           ,p_component_key           => l_key
5055           ,p_property                => 'DESCRIPTION'
5056           ,p_old_value               => l_comp.w_description
5057           ,p_new_value               => l_comp.s_description);
5058     END IF;
5059 
5060     IF (NVL(l_comp.s_transaction_coa_id,C_NUM) <> NVL(l_comp.w_transaction_coa_id,C_NUM)) THEN
5061       record_updated_property
5062           (p_component_type          => 'AMB_DESCRIPTION'
5063           ,p_component_key           => l_key
5064           ,p_property                => 'TRANSACTION_COA'
5065           ,p_old_value               => l_comp.w_transaction_coa_id
5066           ,p_new_value               => l_comp.s_transaction_coa_id);
5067     END IF;
5068 
5069     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
5070       record_updated_property
5071           (p_component_type          => 'AMB_DESCRIPTION'
5072           ,p_component_key           => l_key
5073           ,p_property                => 'ENABLED'
5074           ,p_old_value               => l_comp.w_enabled_flag
5075           ,p_new_value               => l_comp.s_enabled_flag
5076           ,p_lookup_type             => 'XLA_YES_NO');
5077     END IF;
5078 
5079     record_updated_desc
5080           (p_description_type_code => l_comp.description_type_code
5081           ,p_description_code      => l_comp.description_code);
5082 
5083   END LOOP;
5084 
5085   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5086     trace(p_msg    => 'END LOOP: updated desc',
5087           p_module => l_log_module,
5088           p_level  => C_LEVEL_PROCEDURE);
5089   END IF;
5090 
5091   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5092     trace(p_msg    => 'END of function compare_descs',
5093           p_module => l_log_module,
5094           p_level  => C_LEVEL_PROCEDURE);
5095   END IF;
5096 
5097 EXCEPTION
5098   WHEN xla_exceptions_pkg.application_exception THEN
5099     RAISE;
5100   WHEN OTHERS THEN
5101    xla_exceptions_pkg.raise_message
5102       (p_location => l_log_module);
5103 END compare_descs;
5104 
5105 --=============================================================================
5106 --
5107 -- Name: compare_desc_priorities
5108 -- Description: Retrieve the description priority that are new, deleted, or
5109 --              updated
5110 --
5111 --=============================================================================
5112 PROCEDURE compare_desc_priorities
5116           ,s.description_code
5113 IS
5114   CURSOR c_comp IS
5115     SELECT s.description_type_code
5117           ,s.user_sequence
5118           ,CASE WHEN w.application_id IS NULL
5119                 THEN C_MERGE_IMPACT_NEW
5120                 ELSE C_MERGE_IMPACT_UPDATED
5121                 END                       merge_impact
5122           ,s.description_prio_id          s_description_prio_id
5123           ,w.description_prio_id          w_description_prio_id
5124           ,bs.transaction_coa_id          s_transaction_coa_id
5125           ,bw.transaction_coa_id          w_transaction_coa_id
5126       FROM xla_desc_priorities s
5127            JOIN xla_descriptions_b bs
5128            ON  bs.application_id        = s.application_id
5129            AND bs.amb_context_code      = s.amb_context_code
5130            AND bs.description_type_code = s.description_type_code
5131            AND bs.description_code      = s.description_code
5132            JOIN xla_descriptions_b bw
5133            ON  bw.application_id        = g_application_id
5134            AND bw.amb_context_code      = g_amb_context_code
5135            AND bw.description_type_code = s.description_type_code
5136            AND bw.description_code      = s.description_code
5137            LEFT OUTER JOIN xla_desc_priorities w
5138            ON  w.application_id         = g_application_id
5139            AND w.amb_context_code       = g_amb_context_code
5140            AND w.description_type_code  = s.description_type_code
5141            AND w.description_code       = s.description_code
5142            AND w.user_sequence          = s.user_sequence
5143      WHERE s.amb_context_code           = g_staging_context_code
5144      UNION
5145     SELECT w.description_type_code
5146           ,w.description_code
5147           ,w.user_sequence
5148           ,C_MERGE_IMPACT_DELETED
5149           , null , null , null , null
5150       FROM xla_desc_priorities w
5151            JOIN xla_descriptions_b bs
5152            ON  bs.application_id        = g_application_id
5153            AND bs.amb_context_code      = g_staging_context_code
5154            AND bs.description_type_code = w.description_type_code
5155            AND bs.description_code      = w.description_code
5156      WHERE w.amb_context_code           = g_amb_context_code
5157        AND NOT EXISTS
5158            (SELECT 1
5159               FROM xla_desc_priorities s
5160              WHERE s.application_id         = g_application_id
5161                AND s.amb_context_code       = g_staging_context_code
5162                AND s.description_type_code  = w.description_type_code
5163                AND s.description_code       = w.description_code
5164                AND s.user_sequence          = w.user_sequence);
5165 
5166   l_staging_detail      VARCHAR2(2000);
5167   l_working_detail      VARCHAR2(2000);
5168   l_staging_condition   VARCHAR2(32767); --Bug 12416268 Increased length from 2000 to 32767
5169   l_working_condition   VARCHAR2(32767); --Bug 12416268 Increased length from 2000 to 32767
5170   l_updated             BOOLEAN;
5171   l_key                 VARCHAR2(240);
5172   l_log_module          VARCHAR2(240);
5173 BEGIN
5174   IF g_log_enabled THEN
5175     l_log_module := C_DEFAULT_MODULE||'.compare_desc_priorities';
5176   END IF;
5177 
5178   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5179     trace(p_msg    => 'BEGIN of function compare_desc_priorities',
5180           p_module => l_log_module,
5181           p_level  => C_LEVEL_PROCEDURE);
5182   END IF;
5183 
5184   l_updated := FALSE;
5185 
5186   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5187     trace(p_msg    => 'BEGIN LOOP: updated desc priorities',
5188           p_module => l_log_module,
5189           p_level  => C_LEVEL_PROCEDURE);
5190   END IF;
5191 
5192   FOR l_comp in c_comp LOOP
5193 
5194     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
5195       l_key := l_comp.description_type_code||C_CHAR||
5196                l_comp.description_code||C_CHAR||
5197                l_comp.user_sequence;
5198 
5199       l_working_detail := xla_descript_details_pkg.display_desc_prio_details
5200                 (p_description_prio_id       => l_comp.w_description_prio_id
5201                 ,p_chart_of_accounts_id      => l_comp.w_transaction_coa_id);
5202 
5203       l_staging_detail := xla_descript_details_pkg.display_desc_prio_details
5204                 (p_description_prio_id       => l_comp.s_description_prio_id
5205                 ,p_chart_of_accounts_id      => l_comp.s_transaction_coa_id);
5206 
5207       IF (l_working_detail <> l_staging_detail) THEN
5208         l_updated := TRUE;
5209         record_updated_property
5210             (p_component_type          => 'AMB_DESC_PRIO'
5211             ,p_component_key           => l_key
5212             ,p_property                => 'DETAIL'
5213             ,p_old_value               => l_working_detail
5214             ,p_new_value               => l_staging_detail);
5215       END IF;
5216 
5217       -- Bug 1241628
5218       -- The variable can't exceed 32767, so we are restricting the same below.
5219       l_working_condition := substr(xla_conditions_pkg.display_condition
5220                 (p_description_prio_id       => l_comp.w_description_prio_id
5221                 ,p_chart_of_accounts_id      => l_comp.w_transaction_coa_id
5222                 ,p_context                   => 'D'), 1, 32767);
5223 
5224       -- Bug 1241628
5225       -- The variable can't exceed 32767, so we are restricting the same below.
5226       l_staging_condition := substr(xla_conditions_pkg.display_condition
5227                 (p_description_prio_id       => l_comp.s_description_prio_id
5228                 ,p_chart_of_accounts_id      => l_comp.s_transaction_coa_id
5229                 ,p_context                   => 'D'), 1, 32767);
5230 
5231       IF (l_working_condition <> l_staging_condition) THEN
5232         l_updated := TRUE;
5233         record_updated_property
5237             ,p_old_value               => l_working_condition
5234             (p_component_type          => 'AMB_DESC_PRIO'
5235             ,p_component_key           => l_key
5236             ,p_property                => 'CONDITION'
5238             ,p_new_value               => l_staging_condition);
5239       END IF;
5240 
5241       IF (l_updated) THEN
5242         IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5243           trace(p_msg    => 'LOOP: updated desc prio '||
5244                             '- description_type_code = '||l_comp.description_type_code||
5245                             ', description_code = '||l_comp.description_code||
5246                             ', user_sequence = '||l_comp.user_sequence||
5247                             ', merge_impact = '||C_MERGE_IMPACT_UPDATED,
5248                 p_module => l_log_module,
5249                 p_level  => C_LEVEL_PROCEDURE);
5250         END IF;
5251 
5252         l_updated := FALSE;
5253         record_updated_desc_priority
5254             (p_description_type_code   => l_comp.description_type_code
5255             ,p_description_code        => l_comp.description_code
5256             ,p_user_sequence           => l_comp.user_sequence
5257             ,p_merge_impact            => C_MERGE_IMPACT_UPDATED);
5258       END IF;
5259     ELSE
5260 
5261       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5262         trace(p_msg    => 'LOOP: updated desc prio '||
5263                           '- description_type_code = '||l_comp.description_type_code||
5264                           ', description_code = '||l_comp.description_code||
5265                           ', user_sequence = '||l_comp.user_sequence||
5266                           ', merge_impact = '||l_comp.merge_impact,
5267               p_module => l_log_module,
5268               p_level  => C_LEVEL_PROCEDURE);
5269       END IF;
5270 
5271       record_updated_desc_priority
5272             (p_description_type_code   => l_comp.description_type_code
5273             ,p_description_code        => l_comp.description_code
5274             ,p_user_sequence           => l_comp.user_sequence
5275             ,p_merge_impact            => l_comp.merge_impact);
5276     END IF;
5277   END LOOP;
5278 
5279   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5280     trace(p_msg    => 'END LOOP: updated desc priorities',
5281           p_module => l_log_module,
5282           p_level  => C_LEVEL_PROCEDURE);
5283   END IF;
5284 
5285   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5286     trace(p_msg    => 'END of function compare_desc_priorities',
5287           p_module => l_log_module,
5288           p_level  => C_LEVEL_PROCEDURE);
5289   END IF;
5290 
5291 EXCEPTION
5292   WHEN xla_exceptions_pkg.application_exception THEN
5293     RAISE;
5294   WHEN OTHERS THEN
5295    xla_exceptions_pkg.raise_message
5296       (p_location => l_log_module);
5297 END compare_desc_priorities;
5298 
5299 
5300 --=============================================================================
5301 --
5302 -- Name: compare_acs
5303 -- Description:
5304 --
5305 --=============================================================================
5306 PROCEDURE compare_acs
5307 IS
5308   CURSOR c_comp IS
5309     SELECT ts.analytical_criterion_type_code
5310           ,ts.analytical_criterion_code
5311           ,ts.name                        s_name
5312           ,tw.name                        w_name
5313           ,ts.description                 s_description
5314           ,tw.description                 w_description
5315           ,bs.balancing_flag              s_balancing_flag
5316           ,bw.balancing_flag              w_balancing_flag
5317           ,bs.display_order               s_display_order
5318           ,bw.display_order               w_display_order
5319           ,bs.enabled_flag                s_enabled_flag
5320           ,bw.enabled_flag                w_enabled_flag
5321           ,bs.year_end_carry_forward_code s_year_end_carry_forward_code
5322           ,bw.year_end_carry_forward_code w_year_end_carry_forward_code
5323           ,bs.display_in_inquiries_flag   s_display_in_inquiries_flag
5324           ,bw.display_in_inquiries_flag   w_display_in_inquiries_flag
5325           ,bs.criterion_value_code        s_criterion_value_code
5326           ,bw.criterion_value_code        w_criterion_value_code
5327       FROM xla_analytical_hdrs_b bs
5328            JOIN xla_analytical_hdrs_tl ts
5329            ON  ts.amb_context_code               = bs.amb_context_code
5330            AND ts.analytical_criterion_type_code = bs.analytical_criterion_type_code
5331            AND ts.analytical_criterion_code      = bs.analytical_criterion_code
5332            AND ts.language                       = USERENV('LANG')
5333            JOIN xla_analytical_hdrs_b bw
5334            ON  bw.amb_context_code               = g_amb_context_code
5335            AND bw.analytical_criterion_type_code = bs.analytical_criterion_type_code
5336            AND bw.analytical_criterion_code      = bs.analytical_criterion_code
5337            JOIN xla_analytical_hdrs_tl tw
5338            ON  tw.amb_context_code               = bw.amb_context_code
5339            AND tw.analytical_criterion_type_code = bw.analytical_criterion_type_code
5340            AND tw.analytical_criterion_code      = bw.analytical_criterion_code
5341            AND tw.language                       = USERENV('LANG')
5342      WHERE bs.amb_context_code = g_staging_context_code
5343        AND (ts.name                        <> tw.name                        OR
5344             NVL(ts.description,C_CHAR)     <> NVL(tw.description,C_CHAR)     OR
5345             bs.balancing_flag              <> bw.balancing_flag              OR
5346             bs.display_order               <> bw.display_order               OR
5347             bs.enabled_flag                <> bw.enabled_flag                OR
5348             NVL(bs.year_end_carry_forward_code,C_CHAR) <>
5349                                               NVL(bw.year_end_carry_forward_code,C_CHAR) OR
5353   l_key                 VARCHAR2(240);
5350             bs.display_in_inquiries_flag   <> bw.display_in_inquiries_flag     OR
5351             bs.criterion_value_code        <> bw.criterion_value_code);
5352 
5354   l_log_module          VARCHAR2(240);
5355 BEGIN
5356   IF g_log_enabled THEN
5357     l_log_module := C_DEFAULT_MODULE||'.compare_acs';
5358   END IF;
5359 
5360   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5361     trace(p_msg    => 'BEGIN of function compare_acs',
5362           p_module => l_log_module,
5363           p_level  => C_LEVEL_PROCEDURE);
5364   END IF;
5365 
5366   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5367     trace(p_msg    => 'BEGIN LOOP: updated acs',
5368           p_module => l_log_module,
5369           p_level  => C_LEVEL_PROCEDURE);
5370   END IF;
5371 
5372   FOR l_comp in c_comp LOOP
5373 
5374     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
5375              l_comp.analytical_criterion_code;
5376 
5377     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5378       trace(p_msg    => 'LOOP: updated ac - '||l_key,
5379             p_module => l_log_module,
5380             p_level  => C_LEVEL_PROCEDURE);
5381     END IF;
5382 
5383     IF (l_comp.s_name <> l_comp.w_name) THEN
5384       record_updated_property
5385           (p_component_type          => 'AMB_AC'
5386           ,p_component_key           => l_key
5387           ,p_property                => 'NAME'
5388           ,p_old_value               => l_comp.w_name
5389           ,p_new_value               => l_comp.s_name);
5390     END IF;
5391 
5392     IF (l_comp.s_description <> l_comp.w_description) THEN
5393       record_updated_property
5394           (p_component_type          => 'AMB_AC'
5395           ,p_component_key           => l_key
5396           ,p_property                => 'DESCRIPTION'
5397           ,p_old_value               => l_comp.w_description
5398           ,p_new_value               => l_comp.s_description);
5399     END IF;
5400 
5401     IF (l_comp.s_balancing_flag <> l_comp.w_balancing_flag) THEN
5402       record_updated_property
5403           (p_component_type          => 'AMB_AC'
5404           ,p_component_key           => l_key
5405           ,p_property                => 'MAINTAIN_BALANCE'
5406           ,p_old_value               => l_comp.w_balancing_flag
5407           ,p_new_value               => l_comp.s_balancing_flag);
5408     END IF;
5409 
5410     IF (l_comp.s_display_order <> l_comp.w_display_order) THEN
5411       record_updated_property
5412           (p_component_type          => 'AMB_AC'
5413           ,p_component_key           => l_key
5414           ,p_property                => 'DISPLAY_ORDER'
5415           ,p_old_value               => l_comp.w_display_order
5416           ,p_new_value               => l_comp.s_display_order);
5417     END IF;
5418 
5419     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
5420       record_updated_property
5421           (p_component_type          => 'AMB_AC'
5422           ,p_component_key           => l_key
5423           ,p_property                => 'ENABLED'
5424           ,p_old_value               => l_comp.w_enabled_flag
5425           ,p_new_value               => l_comp.s_enabled_flag
5426           ,p_lookup_type             => 'XLA_YES_NO');
5427     END IF;
5428 
5429     IF (NVL(l_comp.s_year_end_carry_forward_code,C_CHAR) <>
5430         NVL(l_comp.w_year_end_carry_forward_code,C_CHAR)) THEN
5431       record_updated_property
5432           (p_component_type          => 'AMB_AC'
5433           ,p_component_key           => l_key
5434           ,p_property                => 'YEAR_END_CARRY_FORWARD'
5435           ,p_old_value               => l_comp.w_year_end_carry_forward_code
5436           ,p_new_value               => l_comp.s_year_end_carry_forward_code
5437           ,p_lookup_type             => 'XLA_YEAR_END_CARRY_FORWARD');
5438     END IF;
5439 
5440     IF (l_comp.s_display_in_inquiries_flag <> l_comp.w_display_in_inquiries_flag) THEN
5441       record_updated_property
5442           (p_component_type          => 'AMB_AC'
5443           ,p_component_key           => l_key
5444           ,p_property                => 'DISPLAY_IN_INQUIRIES_FLAG'
5445           ,p_old_value               => l_comp.w_display_in_inquiries_flag
5446           ,p_new_value               => l_comp.s_display_in_inquiries_flag
5447           ,p_lookup_type             => 'XLA_YES_NO');
5448     END IF;
5449 
5450     IF (l_comp.s_criterion_value_code <> l_comp.w_criterion_value_code) THEN
5451       record_updated_property
5452           (p_component_type          => 'AMB_AC'
5453           ,p_component_key           => l_key
5454           ,p_property                => 'CRITERION_VALUE_CODE'
5455           ,p_old_value               => l_comp.w_criterion_value_code
5456           ,p_new_value               => l_comp.s_criterion_value_code);
5457     END IF;
5458 
5459     record_updated_ac(p_ac_type_code => l_comp.analytical_criterion_type_code
5460                      ,p_ac_code      => l_comp.analytical_criterion_code
5461                      ,p_merge_impact => C_MERGE_IMPACT_UPDATED);
5462 
5463   END LOOP;
5464 
5465   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5466     trace(p_msg    => 'END LOOP: updated acs',
5467           p_module => l_log_module,
5468           p_level  => C_LEVEL_PROCEDURE);
5469   END IF;
5470 
5471   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5472     trace(p_msg    => 'END of function compare_acs',
5473           p_module => l_log_module,
5474           p_level  => C_LEVEL_PROCEDURE);
5475   END IF;
5476 
5477 EXCEPTION
5478   WHEN xla_exceptions_pkg.application_exception THEN
5479     RAISE;
5480   WHEN OTHERS THEN
5481    xla_exceptions_pkg.raise_message
5482       (p_location => l_log_module);
5483 END compare_acs;
5484 
5485 
5489 -- Description:
5486 --=============================================================================
5487 --
5488 -- Name: compare_ac_details
5490 --
5491 --=============================================================================
5492 PROCEDURE compare_ac_details
5493 IS
5494   CURSOR c_comp IS
5495     SELECT ts.analytical_criterion_type_code
5496           ,ts.analytical_criterion_code
5497           ,ts.analytical_detail_code
5498           ,CASE WHEN bw.analytical_detail_code IS NULL
5499                 THEN C_MERGE_IMPACT_NEW
5500                 ELSE C_MERGE_IMPACT_UPDATED
5501                 END                       merge_impact
5502           ,ts.name                        s_name
5503           ,tw.name                        w_name
5504           ,ts.description                 s_description
5505           ,tw.description                 w_description
5506           ,bs.grouping_order              s_grouping_order
5507           ,bw.grouping_order              w_grouping_order
5508           ,bs.data_type_code              s_data_type_code
5509           ,bw.data_type_code              w_data_type_code
5510       FROM xla_analytical_dtls_b bs
5511            JOIN xla_analytical_hdrs_b hw
5512            ON  hw.amb_context_code               = g_amb_context_code
5513            AND hw.analytical_criterion_type_code = bs.analytical_criterion_type_code
5514            AND hw.analytical_criterion_code      = bs.analytical_criterion_code
5515            JOIN xla_analytical_dtls_tl ts
5516            ON  ts.amb_context_code               = bs.amb_context_code
5517            AND ts.analytical_criterion_type_code = bs.analytical_criterion_type_code
5518            AND ts.analytical_criterion_code      = bs.analytical_criterion_code
5519            AND ts.analytical_detail_code         = bs.analytical_detail_code
5520            AND ts.language                       = USERENV('LANG')
5521            LEFT OUTER JOIN xla_analytical_dtls_b bw
5522            ON  bw.amb_context_code               = g_amb_context_code
5523            AND bw.analytical_criterion_type_code = bs.analytical_criterion_type_code
5524            AND bw.analytical_criterion_code      = bs.analytical_criterion_code
5525            AND bw.analytical_detail_code         = bs.analytical_detail_code
5526            LEFT OUTER JOIN xla_analytical_dtls_tl tw
5527            ON  tw.amb_context_code               = bw.amb_context_code
5528            AND tw.analytical_criterion_type_code = bw.analytical_criterion_type_code
5529            AND tw.analytical_criterion_code      = bw.analytical_criterion_code
5530            AND tw.analytical_detail_code         = bw.analytical_detail_code
5531            AND tw.language                       = USERENV('LANG')
5532      WHERE bs.amb_context_code     = g_staging_context_code
5533        AND (bw.analytical_detail_code IS NULL                                OR
5534             NVL(ts.name,C_CHAR)            <> NVL(tw.name,C_CHAR)            OR
5535             NVL(ts.description,C_CHAR)     <> NVL(tw.description,C_CHAR)     OR
5536             NVL(bs.grouping_order,C_NUM)   <> NVL(bw.grouping_order,C_NUM)   OR
5537             NVL(bs.data_type_code,C_CHAR)  <> NVL(bw.data_type_code,C_CHAR));
5538 
5539   l_key                 VARCHAR2(240);
5540   l_log_module          VARCHAR2(240);
5541 BEGIN
5542   IF g_log_enabled THEN
5543     l_log_module := C_DEFAULT_MODULE||'.compare_ac_details';
5544   END IF;
5545 
5546   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5547     trace(p_msg    => 'BEGIN of function compare_ac_details',
5548           p_module => l_log_module,
5549           p_level  => C_LEVEL_PROCEDURE);
5550   END IF;
5551 
5552   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5553     trace(p_msg    => 'BEGIN LOOP: updated ac details',
5554           p_module => l_log_module,
5555           p_level  => C_LEVEL_PROCEDURE);
5556   END IF;
5557 
5558   FOR l_comp in c_comp LOOP
5559 
5560     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5561       trace(p_msg    => 'LOOP: updated ac detail - '||
5562                         l_comp.analytical_criterion_type_code||C_CHAR||
5563                         l_comp.analytical_criterion_code||C_CHAR||
5564                         l_comp.analytical_detail_code||C_CHAR||
5565                         l_comp.merge_impact,
5566             p_module => l_log_module,
5567             p_level  => C_LEVEL_PROCEDURE);
5568     END IF;
5569 
5570     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
5571 
5572       l_key := l_comp.analytical_criterion_type_code||C_CHAR||
5573                l_comp.analytical_criterion_code||C_CHAR||
5574                l_comp.analytical_detail_code;
5575 
5576       IF (l_comp.s_name <> l_comp.w_name) THEN
5577         record_updated_property
5578             (p_component_type          => 'AMB_AC_DETAIL'
5579             ,p_component_key           => l_key
5580             ,p_property                => 'NAME'
5581             ,p_old_value               => l_comp.w_name
5582             ,p_new_value               => l_comp.s_name);
5583       END IF;
5584 
5585       IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
5586         record_updated_property
5587             (p_component_type          => 'AMB_AC_DETAIL'
5588             ,p_component_key           => l_key
5589             ,p_property                => 'DESCRIPTION'
5590             ,p_old_value               => l_comp.w_description
5591             ,p_new_value               => l_comp.s_description);
5592       END IF;
5593 
5594       IF (l_comp.s_grouping_order <> l_comp.w_grouping_order) THEN
5595         record_updated_property
5596             (p_component_type          => 'AMB_AC_DETAIL'
5597             ,p_component_key           => l_key
5598             ,p_property                => 'GROUPING_ORDER'
5599             ,p_old_value               => l_comp.w_grouping_order
5600             ,p_new_value               => l_comp.s_grouping_order);
5601       END IF;
5602 
5606             ,p_component_key           => l_key
5603       IF (NVL(l_comp.s_data_type_code,C_CHAR) <> NVL(l_comp.w_data_type_code,C_CHAR)) THEN
5604         record_updated_property
5605             (p_component_type          => 'AMB_AC_DETAIL'
5607             ,p_property                => 'DATA_TYPE'
5608             ,p_old_value               => l_comp.w_data_type_code
5609             ,p_new_value               => l_comp.s_data_type_code
5610             ,p_lookup_type             => 'XLA_DATA_TYPE');
5611       END IF;
5612 
5613     END IF;
5614 
5615     record_updated_ac_detail
5616           (p_ac_type_code   => l_comp.analytical_criterion_type_code
5617           ,p_ac_code        => l_comp.analytical_criterion_code
5618           ,p_ac_detail_code => l_comp.analytical_detail_code
5619           ,p_merge_impact   => l_comp.merge_impact);
5620 
5621   END LOOP;
5622 
5623   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5624     trace(p_msg    => 'END LOOP: updated ac details',
5625           p_module => l_log_module,
5626           p_level  => C_LEVEL_PROCEDURE);
5627   END IF;
5628 
5629   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5630     trace(p_msg    => 'END of function compare_ac_details',
5631           p_module => l_log_module,
5632           p_level  => C_LEVEL_PROCEDURE);
5633   END IF;
5634 
5635 EXCEPTION
5636   WHEN xla_exceptions_pkg.application_exception THEN
5637     RAISE;
5638   WHEN OTHERS THEN
5639    xla_exceptions_pkg.raise_message
5640       (p_location => l_log_module);
5641 END compare_ac_details;
5642 
5643 --=============================================================================
5644 --
5645 -- Name: compare_ac_sources
5646 -- Description:
5647 --
5648 --=============================================================================
5649 PROCEDURE compare_ac_sources
5650 IS
5651   CURSOR c_comp IS
5652     SELECT s.analytical_criterion_type_code
5653          , s.analytical_criterion_code
5654          , s.analytical_detail_code
5655          , s.entity_code
5656          , s.event_class_code
5657          , s.application_id
5658          , s.source_type_code        s_source_type_code
5659          , s.source_code             s_source_code
5660          , s.source_application_id   s_source_application_id
5661          , w.source_type_code        w_source_type_code
5662          , w.source_code             w_source_code
5663          , w.source_application_id   w_source_application_id
5664       FROM xla_analytical_sources s
5665            JOIN xla_analytical_dtls_b b
5666            ON  b.amb_context_code                = g_amb_context_code
5667            AND b.analytical_criterion_type_code  = s.analytical_criterion_type_code
5668            AND b.analytical_criterion_code       = s.analytical_criterion_code
5669            AND b.analytical_detail_code          = s.analytical_detail_code
5670            LEFT OUTER JOIN xla_analytical_sources w
5671            ON  w.amb_context_code               = g_amb_context_code
5672            AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
5673            AND w.analytical_criterion_code      = s.analytical_criterion_code
5674            AND w.analytical_detail_code         = s.analytical_detail_code
5675            AND w.entity_code                    = s.entity_code
5676            AND w.event_class_code               = s.event_class_code
5677            AND w.application_id                 = s.application_id
5678      WHERE s.amb_context_code                   = g_staging_context_code
5679        AND (w.source_application_id IS NULL OR
5680             NVL(w.source_type_code,C_CHAR)      <> NVL(s.source_type_code,C_CHAR) OR
5681             NVL(w.source_code,C_CHAR)           <> NVL(s.source_code,C_CHAR) OR
5682             NVL(w.source_application_id,C_NUM)  <> NVL(s.source_application_id,C_NUM))
5683      UNION
5684     SELECT w.analytical_criterion_type_code
5685          , w.analytical_criterion_code
5686          , w.analytical_detail_code
5687          , w.entity_code
5688          , w.event_class_code
5689          , w.application_id
5690          , NULL
5691          , NULL
5692          , NULL
5693          , w.source_type_code
5694          , w.source_code
5695          , w.source_application_id
5696       FROM xla_analytical_sources w
5697          , xla_analytical_dtls_b b
5698      WHERE w.amb_context_code                = g_amb_context_code
5699        AND b.amb_context_code                = g_staging_context_code
5700        AND b.analytical_criterion_type_code  = w.analytical_criterion_type_code
5701        AND b.analytical_criterion_code       = w.analytical_criterion_code
5702        AND b.analytical_detail_code          = w.analytical_detail_code
5703        AND NOT EXISTS
5704            (SELECT 1
5705               FROM xla_analytical_sources s
5706              WHERE s.amb_context_code               = g_staging_context_code
5707                AND s.analytical_criterion_type_code = w.analytical_criterion_type_code
5708                AND s.analytical_criterion_code      = w.analytical_criterion_code
5709                AND s.analytical_detail_code         = w.analytical_detail_code
5710                AND s.entity_code                    = w.entity_code
5711                AND s.event_class_code               = w.event_class_code
5712                AND s.application_id                 = w.application_id);
5713 
5714   l_key                 VARCHAR2(4000);
5715   l_parent_key          VARCHAR2(240);
5716   l_log_module          VARCHAR2(240);
5717 BEGIN
5718   IF g_log_enabled THEN
5719     l_log_module := C_DEFAULT_MODULE||'.compare_ac_sources';
5720   END IF;
5721 
5722   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5723     trace(p_msg    => 'BEGIN of function compare_ac_sources',
5724           p_module => l_log_module,
5725           p_level  => C_LEVEL_PROCEDURE);
5726   END IF;
5727 
5728   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5732   END IF;
5729     trace(p_msg    => 'BEGIN LOOP: updated ac sources',
5730           p_module => l_log_module,
5731           p_level  => C_LEVEL_PROCEDURE);
5733 
5734   FOR l_comp IN c_comp LOOP
5735     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5736       trace(p_msg    => 'LOOP 1: updated ac sources - '||l_comp.analytical_criterion_type_code,
5737             p_module => l_log_module,
5738             p_level  => C_LEVEL_PROCEDURE);
5739     END IF;
5740 
5741     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
5742              l_comp.analytical_criterion_code||C_CHAR||
5743              l_comp.analytical_detail_code||C_CHAR||
5744              l_comp.entity_code||C_CHAR||
5745              l_comp.event_class_code||C_CHAR||
5746              l_comp.application_id;
5747 
5748     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5749       trace(p_msg    => 'LOOP: updated ac sources - '||l_key,
5750             p_module => l_log_module,
5751             p_level  => C_LEVEL_PROCEDURE);
5752     END IF;
5753 
5754     record_updated_source(p_component_type       => 'AMB_AC_SOURCE'
5755                          ,p_component_key        => l_key
5756                          ,p_property             => 'SOURCE_CODE'
5757                          ,p_old_source_app_id    => l_comp.w_source_application_id
5758                          ,p_old_source_type_code => l_comp.w_source_type_code
5759                          ,p_old_source_code      => l_comp.w_source_code
5760                          ,p_new_source_app_id    => l_comp.s_source_application_id
5761                          ,p_new_source_type_code => l_comp.s_source_type_code
5762                          ,p_new_source_code      => l_comp.s_source_code);
5763 
5764     record_updated_component
5765             (p_parent_component_type => 'AMB_AC_DETAIL'
5766             ,p_parent_component_key  => l_comp.analytical_criterion_type_code||C_CHAR||
5767                                         l_comp.analytical_criterion_code||C_CHAR||
5768                                         l_comp.analytical_detail_code
5769             ,p_component_type        => 'AMB_AC_SOURCE'
5770             ,p_component_key         => l_key
5771             ,p_merge_impact          => C_MERGE_IMPACT_UPDATED
5772             ,p_event_class_code      => l_comp.event_class_code
5773             ,p_event_type_code       => NULL
5774             ,p_component_owner_code  => NULL
5775             ,p_component_code        => l_comp.event_class_code);
5776 
5777     record_updated_ac_detail
5778           (p_ac_type_code   => l_comp.analytical_criterion_type_code
5779           ,p_ac_code        => l_comp.analytical_criterion_code
5780           ,p_ac_detail_code => l_comp.analytical_detail_code
5781           ,p_merge_impact   => C_MERGE_IMPACT_UPDATED);
5782 
5783   END LOOP;
5784 
5785   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5786     trace(p_msg    => 'END LOOP: updated ac sources',
5787           p_module => l_log_module,
5788           p_level  => C_LEVEL_PROCEDURE);
5789   END IF;
5790 
5791   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5792     trace(p_msg    => 'END of function compare_ac_sources',
5793           p_module => l_log_module,
5794           p_level  => C_LEVEL_PROCEDURE);
5795   END IF;
5796 
5797 EXCEPTION
5798   WHEN xla_exceptions_pkg.application_exception THEN
5799     RAISE;
5800   WHEN OTHERS THEN
5801    xla_exceptions_pkg.raise_message
5802       (p_location => l_log_module);
5803 END compare_ac_sources;
5804 
5805 --=============================================================================
5806 --
5807 -- Name: compare_jlt_acct_attrs
5808 -- Description:
5809 --
5810 --=============================================================================
5811 PROCEDURE compare_jlt_acct_attrs
5812 IS
5813   CURSOR c_comp IS
5814     SELECT s.event_class_code
5815          , s.accounting_line_type_code
5816          , s.accounting_line_code
5817          , s.accounting_attribute_code
5818          , CASE WHEN w.application_id IS NULL
5819                 THEN C_MERGE_IMPACT_NEW
5820                 ELSE C_MERGE_IMPACT_UPDATED
5821                 END                    merge_impact
5822          , s.source_application_id     s_source_application_id
5823          , w.source_application_id     w_source_application_id
5824          , s.source_type_code          s_source_type_code
5825          , w.source_type_code          w_source_type_code
5826          , s.source_code               s_source_code
5827          , w.source_code               w_source_code
5828          , s.event_class_default_flag  s_event_class_default_flag
5829          , w.event_class_default_flag  w_event_class_default_flag
5830       FROM xla_jlt_acct_attrs s
5831            JOIN xla_acct_line_types_b b
5832            ON  b.application_id            = g_application_id
5833            AND b.amb_context_code          = g_amb_context_code
5834            AND b.event_class_code          = s.event_class_code
5835            AND b.accounting_line_type_code = s.accounting_line_type_code
5836            AND b.accounting_line_code      = s.accounting_line_code
5837            LEFT OUTER JOIN xla_jlt_acct_attrs w
5838            ON  w.application_id            = g_application_id
5839            AND w.amb_context_code          = g_amb_context_code
5840            AND w.event_class_code          = s.event_class_code
5841            AND w.accounting_line_type_code = s.accounting_line_type_code
5842            AND w.accounting_line_code      = s.accounting_line_code
5843            AND w.accounting_attribute_code = s.accounting_attribute_code
5844      WHERE s.application_id   = g_application_id
5845        AND s.amb_context_code = g_staging_context_code
5846        AND (w.application_id                       IS NULL OR
5847             NVL(s.event_class_default_flag,C_CHAR) <> NVL(w.event_class_default_flag,C_CHAR) OR
5848             NVL(s.source_application_id,C_NUM)     <> NVL(w.source_application_id,C_NUM) OR
5852   l_key                 VARCHAR2(240);
5849             NVL(s.source_type_code,C_CHAR)         <> NVL(w.source_type_code,C_CHAR) OR
5850             NVL(s.source_code,C_CHAR)              <> NVL(w.source_code,C_CHAR));
5851 
5853   l_log_module          VARCHAR2(240);
5854 BEGIN
5855   IF g_log_enabled THEN
5856     l_log_module := C_DEFAULT_MODULE||'.compare_jlt_acct_attrs';
5857   END IF;
5858 
5859   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5860     trace(p_msg    => 'BEGIN of function compare_jlt_acct_attrs',
5861           p_module => l_log_module,
5862           p_level  => C_LEVEL_PROCEDURE);
5863   END IF;
5864 
5865   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5866     trace(p_msg    => 'BEGIN LOOP: updated jlt acct attrs',
5867           p_module => l_log_module,
5868           p_level  => C_LEVEL_PROCEDURE);
5869   END IF;
5870 
5871   FOR l_comp IN c_comp LOOP
5872 
5873     l_key := l_comp.event_class_code||C_CHAR||
5874              l_comp.accounting_line_type_code||C_CHAR||
5875              l_comp.accounting_line_code||C_CHAR||
5876              l_comp.accounting_attribute_code;
5877 
5878     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5879       trace(p_msg    => 'LOOP: updated jlt acct attr - '||l_comp.merge_impact,
5880             p_module => l_log_module,
5881             p_level  => C_LEVEL_PROCEDURE);
5882       trace(p_msg    => 'l_key = '||l_key,
5883             p_module => l_log_module,
5884             p_level  => C_LEVEL_PROCEDURE);
5885     END IF;
5886 
5887     record_updated_jlt_acct_attr
5888           (p_event_class_code          => l_comp.event_class_code
5889           ,p_accounting_line_type_code => l_comp.accounting_line_type_code
5890           ,p_accounting_line_code      => l_comp.accounting_line_code
5891           ,p_accounting_attribute_code => l_comp.accounting_attribute_code
5892           ,p_merge_impact              => l_comp.merge_impact);
5893 
5894     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
5895 
5896       IF (l_comp.s_event_class_default_flag <> l_comp.w_event_class_default_flag) THEN
5897         record_updated_property
5898           (p_component_type          => 'AMB_JLT_ACCT_ATTR'
5899           ,p_component_key           => l_key
5900           ,p_property                => 'EVENT_CLASS_DEFAULT_FLAG'
5901           ,p_old_value               => l_comp.w_event_class_default_flag
5902           ,p_new_value               => l_comp.s_event_class_default_flag
5903           ,p_lookup_type             => 'XLA_YES_NO');
5904       END IF;
5905 
5906       IF (NVL(l_comp.w_source_application_id,C_NUM) <> NVL(l_comp.s_source_application_id,C_NUM) OR
5907           NVL(l_comp.w_source_type_code,C_CHAR) <> NVL(l_comp.s_source_type_code,C_CHAR) OR
5908           NVL(l_comp.w_source_code,C_CHAR)      <> NVL(l_comp.s_source_code,C_CHAR)) THEN
5909         record_updated_source(p_component_type       => 'AMB_JLT_ACCT_ATTR'
5910                            ,p_component_key        => l_key
5911                            ,p_property             => 'SOURCE_CODE'
5912                            ,p_old_source_app_id    => l_comp.w_source_application_id
5913                            ,p_old_source_type_code => l_comp.w_source_type_code
5914                            ,p_old_source_code      => l_comp.w_source_code
5915                            ,p_new_source_app_id    => l_comp.s_source_application_id
5916                            ,p_new_source_type_code => l_comp.s_source_type_code
5917                            ,p_new_source_code      => l_comp.s_source_code);
5918       END IF;
5919     END IF;
5920 
5921   END LOOP;
5922 
5923   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5924     trace(p_msg    => 'END LOOP: updated jlt acct attrs',
5925           p_module => l_log_module,
5926           p_level  => C_LEVEL_PROCEDURE);
5927   END IF;
5928 
5929   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5930     trace(p_msg    => 'END of function compare_jlt_acct_attrs',
5931           p_module => l_log_module,
5932           p_level  => C_LEVEL_PROCEDURE);
5933   END IF;
5934 
5935 EXCEPTION
5936   WHEN xla_exceptions_pkg.application_exception THEN
5937     RAISE;
5938   WHEN OTHERS THEN
5939    xla_exceptions_pkg.raise_message
5940       (p_location => l_log_module);
5941 END compare_jlt_acct_attrs;
5942 
5943 --=============================================================================
5944 --
5945 -- Name: compare_jlts
5946 -- Description:
5947 --
5948 --=============================================================================
5949 PROCEDURE compare_jlts
5950 IS
5951   CURSOR c_comp IS
5952     SELECT ts.entity_code
5953           ,ts.event_class_code
5954           ,ts.accounting_line_type_code acct_line_type_code
5955           ,ts.accounting_line_code      acct_line_code
5956           ,ts.name                      s_name
5957           ,tw.name                      w_name
5958           ,ts.description               s_description
5959           ,tw.description               w_description
5960           ,s.accounting_class_code      s_acct_class_code
5961           ,w.accounting_class_code      w_acct_class_code
5962           ,s.enabled_flag               s_enabled_flag
5963           ,w.enabled_flag               w_enabled_flag
5964           ,s.accounting_entry_type_code s_ae_type_code
5965           ,w.accounting_entry_type_code w_ae_type_code
5966           ,s.natural_side_code          s_natural_side_code
5967           ,w.natural_side_code          w_natural_side_code
5968           ,s.switch_side_flag           s_switch_side_flag
5969           ,w.switch_side_flag           w_switch_side_flag
5970           ,s.merge_duplicate_code       s_merge_duplicate_code
5971           ,w.merge_duplicate_code       w_merge_duplicate_code
5972           ,s.transaction_coa_id         s_trx_coa_id
5973           ,w.transaction_coa_id         w_trx_coa_id
5974           ,s.gl_transfer_mode_code      s_gl_transfer_mode_code
5978           ,s.business_class_code        s_business_class_code
5975           ,w.gl_transfer_mode_code      w_gl_transfer_mode_code
5976           ,s.business_method_code       s_business_method_code
5977           ,w.business_method_code       w_business_method_code
5979           ,w.business_class_code        w_business_class_code
5980           ,s.rounding_class_code        s_rounding_class_code
5981           ,w.rounding_class_code        w_rounding_class_code
5982           ,s.encumbrance_type_id        s_encumbrance_type_id
5983           ,w.encumbrance_type_id        w_encumbrance_type_id
5984           ,s.mpa_option_code            s_mpa_option_code
5985           ,w.mpa_option_code            w_mpa_option_code
5986       FROM xla_acct_line_types_b s
5987            JOIN xla_acct_line_types_tl ts
5988            ON  ts.application_id            = s.application_id
5989            AND ts.amb_context_code          = s.amb_context_code
5990            AND ts.entity_code               = s.entity_code
5991            AND ts.event_class_code          = s.event_class_code
5992            AND ts.accounting_line_type_code = s.accounting_line_type_code
5993            AND ts.accounting_line_code      = s.accounting_line_code
5994            AND ts.accounting_line_code      = s.accounting_line_code
5995            AND ts.language                  = USERENV('LANG')
5996            JOIN xla_acct_line_types_b w
5997            ON  w.application_id            = s.application_id
5998            AND w.entity_code               = s.entity_code
5999            AND w.event_class_code          = s.event_class_code
6000            AND w.accounting_line_type_code = s.accounting_line_type_code
6001            AND w.accounting_line_code      = s.accounting_line_code
6002            JOIN xla_acct_line_types_tl tw
6003            ON  tw.application_id            = w.application_id
6004            AND tw.amb_context_code          = w.amb_context_code
6005            AND tw.entity_code               = w.entity_code
6006            AND tw.event_class_code          = w.event_class_code
6007            AND tw.accounting_line_type_code = w.accounting_line_type_code
6008            AND tw.accounting_line_code      = w.accounting_line_code
6009            AND tw.language                  = USERENV('LANG')
6010      WHERE s.amb_context_code = g_staging_context_code
6011        AND w.amb_context_code = g_amb_context_code;
6012 
6013   l_key                     VARCHAR2(240);
6014   l_staging_condition       VARCHAR2(32767); --Bug 12416268 Increased length from 2000 to 32767
6015   l_working_condition       VARCHAR2(32767); --Bug 12416268 Increased length from 2000 to 32767
6016   l_updated                 BOOLEAN;
6017 
6018   l_log_module          VARCHAR2(240);
6019 BEGIN
6020   IF g_log_enabled THEN
6021     l_log_module := C_DEFAULT_MODULE||'.compare_jlts';
6022   END IF;
6023 
6024   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6025     trace(p_msg    => 'BEGIN of function compare_jlts',
6026           p_module => l_log_module,
6027           p_level  => C_LEVEL_PROCEDURE);
6028   END IF;
6029 
6030   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6031     trace(p_msg    => 'BEGIN LOOP: updated jlt',
6032           p_module => l_log_module,
6033           p_level  => C_LEVEL_PROCEDURE);
6034   END IF;
6035 
6036   l_updated    := FALSE;
6037   FOR l_comp in c_comp LOOP
6038 
6039     l_key := l_comp.event_class_code||C_CHAR||
6040              l_comp.acct_line_type_code||C_CHAR||
6041              l_comp.acct_line_code;
6042 
6043     IF (l_comp.s_name <> l_comp.w_name) THEN
6044       l_updated := TRUE;
6045       record_updated_property
6046           (p_component_type          => 'AMB_JLT'
6047           ,p_component_key           => l_key
6048           ,p_property                => 'NAME'
6049           ,p_old_value               => l_comp.w_name
6050           ,p_new_value               => l_comp.s_name);
6051     END IF;
6052 
6053     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
6054       l_updated := TRUE;
6055       record_updated_property
6056           (p_component_type          => 'AMB_JLT'
6057           ,p_component_key           => l_key
6058           ,p_property                => 'DESCRIPTION'
6059           ,p_old_value               => l_comp.w_description
6060           ,p_new_value               => l_comp.s_description);
6061     END IF;
6062 
6063     IF (l_comp.s_acct_class_code <> l_comp.w_acct_class_code) THEN
6064       l_updated := TRUE;
6065       record_updated_property
6066           (p_component_type          => 'AMB_JLT'
6067           ,p_component_key           => l_key
6068           ,p_property                => 'ACCOUNTING_CLASS'
6069           ,p_old_value               => l_comp.w_acct_class_code
6070           ,p_new_value               => l_comp.s_acct_class_code
6071           ,p_lookup_type             => 'XLA_ACCOUNTING_CLASS');
6072     END IF;
6073 
6074     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
6075       l_updated := TRUE;
6076       record_updated_property
6077           (p_component_type          => 'AMB_JLT'
6078           ,p_component_key           => l_key
6079           ,p_property                => 'ENABLED'
6080           ,p_old_value               => l_comp.w_enabled_flag
6081           ,p_new_value               => l_comp.s_enabled_flag
6082           ,p_lookup_type             => 'XLA_YES_NO');
6083     END IF;
6084 
6085     IF (l_comp.s_ae_type_code <> l_comp.w_ae_type_code) THEN
6086       l_updated := TRUE;
6087       record_updated_property
6088           (p_component_type          => 'AMB_JLT'
6089           ,p_component_key           => l_key
6090           ,p_property                => 'ACCOUNTING_ENTRY_TYPE'
6091           ,p_old_value               => l_comp.w_ae_type_code
6092           ,p_new_value               => l_comp.s_ae_type_code
6093           ,p_lookup_type             => 'XLA_BALANCE_TYPE');
6094     END IF;
6095 
6099           (p_component_type          => 'AMB_JLT'
6096     IF (l_comp.s_natural_side_code <> l_comp.w_natural_side_code) THEN
6097       l_updated := TRUE;
6098       record_updated_property
6100           ,p_component_key           => l_key
6101           ,p_property                => 'NATURAL_SIDE'
6102           ,p_old_value               => l_comp.w_natural_side_code
6103           ,p_new_value               => l_comp.s_natural_side_code
6104           ,p_lookup_type             => 'XLA_ACCT_NATURAL_SIDE');
6105     END IF;
6106 
6107     IF (NVL(l_comp.s_switch_side_flag,C_CHAR) <> NVL(l_comp.w_switch_side_flag,C_CHAR)) THEN
6108       l_updated := TRUE;
6109       record_updated_property
6110           (p_component_type          => 'AMB_JLT'
6111           ,p_component_key           => l_key
6112           ,p_property                => 'SWITCH_SIDE'
6113           ,p_old_value               => l_comp.w_switch_side_flag
6114           ,p_new_value               => l_comp.s_switch_side_flag
6115           ,p_lookup_type             => 'XLA_YES_NO');
6116     END IF;
6117 
6118     IF (l_comp.s_merge_duplicate_code <> l_comp.w_merge_duplicate_code) THEN
6119       l_updated := TRUE;
6120       record_updated_property
6121           (p_component_type          => 'AMB_JLT'
6122           ,p_component_key           => l_key
6123           ,p_property                => 'MERGE_DUPLICATE'
6124           ,p_old_value               => l_comp.w_merge_duplicate_code
6125           ,p_new_value               => l_comp.s_merge_duplicate_code
6126           ,p_lookup_type             => 'XLA_MERGE_MATCHING_TYPE');
6127     END IF;
6128 
6129     IF (NVL(l_comp.s_trx_coa_id,C_NUM) <> NVL(l_comp.w_trx_coa_id,C_NUM)) THEN
6130       l_updated := TRUE;
6131       record_updated_property
6132           (p_component_type          => 'AMB_JLT'
6133           ,p_component_key           => l_key
6134           ,p_property                => 'TRANSACTION_COA'
6135           ,p_old_value               => l_comp.w_trx_coa_id
6136           ,p_new_value               => l_comp.s_trx_coa_id);
6137     END IF;
6138 
6139     IF (l_comp.s_gl_transfer_mode_code <> l_comp.w_gl_transfer_mode_code) THEN
6140       l_updated := TRUE;
6141       record_updated_property
6142           (p_component_type          => 'AMB_JLT'
6143           ,p_component_key           => l_key
6144           ,p_property                => 'GL_TRANSFER_MODE'
6145           ,p_old_value               => l_comp.w_gl_transfer_mode_code
6146           ,p_new_value               => l_comp.s_gl_transfer_mode_code
6147           ,p_lookup_type             => 'XLA_ACCT_TRANSFER_MODE');
6148     END IF;
6149 
6150     IF (l_comp.s_business_method_code <> l_comp.w_business_method_code) THEN
6151       l_updated := TRUE;
6152       record_updated_property
6153           (p_component_type          => 'AMB_JLT'
6154           ,p_component_key           => l_key
6155           ,p_property                => 'BUSINESS_METHOD'
6156           ,p_old_value               => l_comp.w_business_method_code
6157           ,p_new_value               => l_comp.s_business_method_code
6158           ,p_lookup_type             => 'XLA_ACCT_TRANSFER_MODE');
6159     END IF;
6160 
6161     IF (NVL(l_comp.s_business_class_code,C_CHAR) <> NVL(l_comp.w_business_class_code,C_CHAR)) THEN
6162       l_updated := TRUE;
6163       record_updated_property
6164           (p_component_type          => 'AMB_JLT'
6165           ,p_component_key           => l_key
6166           ,p_property                => 'BUSINESS_CLASS'
6167           ,p_old_value               => l_comp.w_business_class_code
6168           ,p_new_value               => l_comp.s_business_class_code
6169           ,p_lookup_type             => 'XLA_ACCT_TRANSFER_MODE');
6170     END IF;
6171 
6172     IF (NVL(l_comp.s_encumbrance_type_id,C_NUM) <> NVL(l_comp.w_encumbrance_type_id,C_NUM)) THEN
6173       l_updated := TRUE;
6174       record_updated_property
6175           (p_component_type          => 'AMB_JLT'
6176           ,p_component_key           => l_key
6177           ,p_property                => 'ENCUMBRANCE_TYPE'
6178           ,p_old_value               => l_comp.w_encumbrance_type_id
6179           ,p_new_value               => l_comp.s_encumbrance_type_id);
6180     END IF;
6181 
6182     IF (NVL(l_comp.s_mpa_option_code,C_CHAR) <> NVL(l_comp.w_mpa_option_code,C_CHAR)) THEN
6183       l_updated := TRUE;
6184       record_updated_property
6185           (p_component_type          => 'AMB_JLT'
6186           ,p_component_key           => l_key
6187           ,p_property                => 'MPA_OPTION_CODE'
6188           ,p_old_value               => l_comp.w_mpa_option_code
6189           ,p_new_value               => l_comp.s_mpa_option_code
6190           ,p_lookup_type             => 'XLA_MPA_OPTION');
6191     END IF;
6192 
6193     IF (NVL(l_comp.s_rounding_class_code,C_CHAR) <> NVL(l_comp.w_rounding_class_code,C_CHAR)) THEN
6194       l_updated := TRUE;
6195       record_updated_property
6196           (p_component_type          => 'AMB_JLT'
6197           ,p_component_key           => l_key
6198           ,p_property                => 'ROUNDING_CLASS'
6199           ,p_old_value               => l_comp.w_rounding_class_code
6200           ,p_new_value               => l_comp.s_rounding_class_code
6201           ,p_lookup_type             => 'XLA_ACCOUNTING_CLASS');
6202     END IF;
6203 
6204       -- Bug 1241628
6205       -- The variable can't exceed 32767, so we are restricting the same below.
6206     l_working_condition := substr(xla_conditions_pkg.display_condition
6207               (p_application_id            => g_application_id
6208               ,p_amb_context_code          => g_amb_context_code
6209               ,p_entity_code               => l_comp.entity_code
6210               ,p_event_class_code          => l_comp.event_class_code
6211               ,p_accounting_line_type_code => l_comp.acct_line_type_code
6212               ,p_accounting_line_code      => l_comp.acct_line_code
6216       -- Bug 1241628
6213               ,p_chart_of_accounts_id      => l_comp.w_trx_coa_id
6214               ,p_context                   => 'A'),1, 32767);
6215 
6217       -- The variable can't exceed 32767, so we are restricting the same below.
6218     l_staging_condition := substr(xla_conditions_pkg.display_condition
6219               (p_application_id            => g_application_id
6220               ,p_amb_context_code          => g_staging_context_code
6221               ,p_entity_code               => l_comp.entity_code
6222               ,p_event_class_code          => l_comp.event_class_code
6223               ,p_accounting_line_type_code => l_comp.acct_line_type_code
6224               ,p_accounting_line_code      => l_comp.acct_line_code
6225               ,p_chart_of_accounts_id      => l_comp.s_trx_coa_id
6226               ,p_context                   => 'A'),1, 32767);
6227 
6228     IF (l_working_condition <> l_staging_condition) THEN
6229       l_updated := TRUE;
6230       record_updated_property
6231           (p_component_type          => 'AMB_JLT'
6232           ,p_component_key           => l_key
6233           ,p_property                => 'CONDITION'
6234           ,p_old_value               => l_working_condition
6235           ,p_new_value               => l_staging_condition);
6236     END IF;
6237 
6238     IF (l_updated) THEN
6239       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6240         trace(p_msg    => 'LOOP: updated ac sources - '||l_key,
6241               p_module => l_log_module,
6242               p_level  => C_LEVEL_PROCEDURE);
6243       END IF;
6244 
6245       record_updated_jlt(p_event_class_code          => l_comp.event_class_code
6246                         ,p_accounting_line_type_code => l_comp.acct_line_type_code
6247                         ,p_accounting_line_code      => l_comp.acct_line_code);
6248 
6249       l_updated := FALSE;
6250     END IF;
6251 
6252   END LOOP;
6253 
6254   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6255     trace(p_msg    => 'END LOOP: updated jlt',
6256           p_module => l_log_module,
6257           p_level  => C_LEVEL_PROCEDURE);
6258   END IF;
6259 
6260   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6261     trace(p_msg    => 'END of function compare_jlts',
6262           p_module => l_log_module,
6263           p_level  => C_LEVEL_PROCEDURE);
6264   END IF;
6265 
6266 EXCEPTION
6267   WHEN xla_exceptions_pkg.application_exception THEN
6268     RAISE;
6269   WHEN OTHERS THEN
6270    xla_exceptions_pkg.raise_message
6271       (p_location => l_log_module);
6272 END compare_jlts;
6273 
6274 --=============================================================================
6275 --
6276 -- Name: compare_line_adr_assgns
6277 -- Description:
6278 --
6279 --=============================================================================
6280 PROCEDURE compare_line_adr_assgns
6281 IS
6282   CURSOR c_comp IS
6283     SELECT s.event_class_code
6284          , s.event_type_code
6285          , s.line_definition_owner_code
6286          , s.line_definition_code
6287          , s.accounting_line_type_code
6288          , s.accounting_line_code
6289          , s.flexfield_segment_code
6290          , s.side_code
6291          , l.accounting_coa_id
6292          , CASE WHEN w.application_id IS NULL
6293                 THEN C_MERGE_IMPACT_NEW
6294                 ELSE C_MERGE_IMPACT_UPDATED
6295                 END                merge_impact
6296          , s.segment_rule_appl_id   s_segment_rule_appl_id
6297          , w.segment_rule_appl_id   w_segment_rule_appl_id
6298          , s.segment_rule_type_code s_segment_rule_type_code
6299          , w.segment_rule_type_code w_segment_rule_type_code
6300          , s.segment_rule_code      s_segment_rule_code
6301          , w.segment_rule_code      w_segment_rule_code
6302          , s.inherit_adr_flag       s_inherit_adr_flag
6303          , w.inherit_adr_flag       w_inherit_adr_flag
6304       FROM xla_line_defn_adr_assgns s
6305            JOIN xla_line_definitions_b l
6306            ON  l.application_id              = g_application_id
6307            AND l.amb_context_code            = g_amb_context_code
6308            AND l.event_class_code            = s.event_class_code
6309            AND l.event_type_code             = s.event_type_code
6310            AND l.line_definition_owner_code  = s.line_definition_owner_code
6311            AND l.line_definition_code        = s.line_definition_code
6312            JOIN xla_line_defn_jlt_assgns b
6313            ON  b.application_id              = g_application_id
6314            AND b.amb_context_code            = g_amb_context_code
6315            AND b.event_class_code            = s.event_class_code
6316            AND b.event_type_code             = s.event_type_code
6317            AND b.line_definition_owner_code  = s.line_definition_owner_code
6318            AND b.line_definition_code        = s.line_definition_code
6319            AND b.accounting_line_type_code   = s.accounting_line_type_code
6320            AND b.accounting_line_code        = s.accounting_line_code
6321            LEFT OUTER JOIN xla_line_defn_adr_assgns w
6322            ON  w.application_id                 = g_application_id
6323            AND w.amb_context_code               = g_amb_context_code
6324            AND w.event_class_code               = s.event_class_code
6325            AND w.event_type_code                = s.event_type_code
6326            AND w.line_definition_owner_code     = s.line_definition_owner_code
6327            AND w.line_definition_code           = s.line_definition_code
6328            AND w.accounting_line_type_code      = s.accounting_line_type_code
6329            AND w.accounting_line_code           = s.accounting_line_code
6330            AND w.flexfield_segment_code         = s.flexfield_segment_code
6331 	   --Bug 11783068 : Added side_code condition.
6332 	   AND w.side_code                      = s.side_code
6333      WHERE s.application_id   = g_application_id
6337             NVL(s.segment_rule_appl_id,C_NUM)    <> NVL(w.segment_rule_appl_id,C_NUM)    OR
6334        AND s.amb_context_code = g_staging_context_code
6335        AND (w.application_id                     IS NULL                                 OR
6336             s.inherit_adr_flag                   <> w.inherit_adr_flag                   OR
6338             NVL(s.segment_rule_type_code,C_CHAR) <> NVL(w.segment_rule_type_code,C_CHAR) OR
6339             NVL(s.segment_rule_code,C_CHAR)      <> NVL(w.segment_rule_code,C_CHAR));
6340 
6341   l_key                 VARCHAR2(240);
6342   l_parent_key          VARCHAR2(240);
6343   l_log_module          VARCHAR2(240);
6344 BEGIN
6345   IF g_log_enabled THEN
6346     l_log_module := C_DEFAULT_MODULE||'.compare_line_adr_assgns';
6347   END IF;
6348 
6349   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6350     trace(p_msg    => 'BEGIN of function compare_line_adr_assgns',
6351           p_module => l_log_module,
6352           p_level  => C_LEVEL_PROCEDURE);
6353   END IF;
6354 
6355   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6356     trace(p_msg    => 'BEGIN LOOP: updated line adr assgns',
6357           p_module => l_log_module,
6358           p_level  => C_LEVEL_PROCEDURE);
6359   END IF;
6360 
6361   FOR l_comp IN c_comp LOOP
6362 
6363     l_parent_key := l_comp.event_class_code||C_CHAR||
6364                     l_comp.event_type_code||C_CHAR||
6365                     l_comp.line_definition_owner_code||C_CHAR||
6366                     l_comp.line_definition_code||C_CHAR||
6367                     l_comp.accounting_line_type_code||C_CHAR||
6368                     l_comp.accounting_line_code;
6369 
6370     l_key := l_parent_key||C_CHAR||
6371              l_comp.flexfield_segment_code||C_CHAR||
6372              l_comp.side_code;
6373 
6374     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6375       trace(p_msg    => 'LOOP: updated line adr assgn - '||l_key,
6376             p_module => l_log_module,
6377             p_level  => C_LEVEL_PROCEDURE);
6378     END IF;
6379 
6380     IF (NOT key_exists('LNADR'||C_CHAR||l_key)) THEN
6381       record_updated_component
6382           (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
6383           ,p_parent_component_key  => l_parent_key
6384           ,p_component_type        => 'AMB_ADR_ASSGN'
6385           ,p_component_key         => l_key
6386           ,p_merge_impact          => l_comp.merge_impact
6387           ,p_component_owner_code  => l_comp.accounting_coa_id
6388           ,p_component_code        => l_comp.flexfield_segment_code);
6389 
6390       record_updated_line_assgn
6391           (p_event_class_code           => l_comp.event_class_code
6392           ,p_event_type_code            => l_comp.event_type_code
6393           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6394           ,p_line_definition_code       => l_comp.line_definition_code
6395           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6396           ,p_accounting_line_code       => l_comp.accounting_line_code
6397           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
6398 
6399     END IF;
6400 
6401     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
6402 
6403       IF (l_comp.w_inherit_adr_flag <> l_comp.s_inherit_adr_flag) THEN
6404         record_updated_property
6405               (p_component_type => 'AMB_ADR_ASSGN'
6406               ,p_component_key  => l_key
6407               ,p_property       => 'INHERIT_ADR_FLAG'
6408               ,p_old_value      => l_comp.w_inherit_adr_flag
6409               ,p_new_value      => l_comp.s_inherit_adr_flag
6410               ,p_lookup_type    => 'XLA_YES_NO');
6411 
6412       END IF;
6413 
6414       IF (NVL(l_comp.w_segment_rule_appl_id,C_NUM)    <> NVL(l_comp.s_segment_rule_appl_id,C_NUM) OR
6415           NVL(l_comp.w_segment_rule_type_code,C_CHAR) <> NVL(l_comp.s_segment_rule_type_code,C_CHAR) OR
6416           NVL(l_comp.w_segment_rule_code,C_CHAR)      <> NVL(l_comp.s_segment_rule_code,C_CHAR)) THEN
6417 
6418         l_parent_key := l_key;
6419 
6420         IF (l_comp.s_segment_rule_code IS NOT NULL) THEN
6421 
6422           record_updated_component
6423                  (p_parent_component_type => 'AMB_ADR_ASSGN'
6424                  ,p_parent_component_key  => l_parent_key
6425                  ,p_component_type        => 'AMB_ADR'
6426                  ,p_component_key         => l_comp.s_segment_rule_type_code||C_CHAR||
6427                                              l_comp.s_segment_rule_code
6428                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
6429                  ,p_component_appl_id     => l_comp.s_segment_rule_appl_id
6430                  ,p_component_owner_code  => l_comp.s_segment_rule_type_code
6431                  ,p_component_code        => l_comp.s_segment_rule_code);
6432         END IF;
6433 
6434         IF (l_comp.w_segment_rule_code IS NOT NULL) THEN
6435 
6436           record_updated_component
6437                  (p_parent_component_type => 'AMB_ADR_ASSGN'
6438                  ,p_parent_component_key  => l_parent_key
6439                  ,p_component_type        => 'AMB_ADR'
6440                  ,p_component_key         => l_comp.w_segment_rule_type_code||C_CHAR||
6441                                              l_comp.w_segment_rule_code
6442                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
6443                  ,p_component_appl_id     => l_comp.s_segment_rule_appl_id
6444                  ,p_component_owner_code  => l_comp.w_segment_rule_type_code
6445                  ,p_component_code        => l_comp.w_segment_rule_code);
6446         END IF;
6447       END IF;
6448     END IF;
6449 
6450   END LOOP;
6451 
6452   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6453     trace(p_msg    => 'END LOOP: updated line adr assgns',
6454           p_module => l_log_module,
6455           p_level  => C_LEVEL_PROCEDURE);
6456   END IF;
6457 
6461           p_level  => C_LEVEL_PROCEDURE);
6458   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6459     trace(p_msg    => 'END of function compare_line_adr_assgns',
6460           p_module => l_log_module,
6462   END IF;
6463 
6464 EXCEPTION
6465   WHEN xla_exceptions_pkg.application_exception THEN
6466     RAISE;
6467   WHEN OTHERS THEN
6468    xla_exceptions_pkg.raise_message
6469       (p_location => l_log_module);
6470 END compare_line_adr_assgns;
6471 
6472 
6473 --=============================================================================
6474 --
6475 -- Name: compare_line_ac_assgns
6476 -- Description:
6477 --
6478 --=============================================================================
6479 PROCEDURE compare_line_ac_assgns
6480 IS
6481   CURSOR c_comp IS
6482     SELECT s.event_class_code
6483          , s.event_type_code
6484          , s.line_definition_owner_code
6485          , s.line_definition_code
6486          , s.accounting_line_type_code
6487          , s.accounting_line_code
6488          , s.analytical_criterion_type_code
6489          , s.analytical_criterion_code
6490          , C_MERGE_IMPACT_NEW merge_impact
6491       FROM xla_line_defn_ac_assgns s
6492          , xla_line_defn_jlt_assgns b
6493      WHERE s.application_id   = g_application_id
6494        AND s.amb_context_code = g_staging_context_code
6495        AND b.application_id              = g_application_id
6496        AND b.amb_context_code            = g_amb_context_code
6497        AND b.event_class_code            = s.event_class_code
6498        AND b.event_type_code             = s.event_type_code
6499        AND b.line_definition_owner_code  = s.line_definition_owner_code
6500        AND b.line_definition_code        = s.line_definition_code
6501        AND b.accounting_line_type_code   = s.accounting_line_type_code
6502        AND b.accounting_line_code        = s.accounting_line_code
6503        AND NOT EXISTS
6504            (SELECT 1
6505               FROM xla_line_defn_ac_assgns w
6506              WHERE w.application_id                 = g_application_id
6507                AND w.amb_context_code               = g_amb_context_code
6508                AND w.event_class_code               = s.event_class_code
6509                AND w.event_type_code                = s.event_type_code
6510                AND w.line_definition_owner_code     = s.line_definition_owner_code
6511                AND w.line_definition_code           = s.line_definition_code
6512                AND w.accounting_line_type_code      = s.accounting_line_type_code
6513                AND w.accounting_line_code           = s.accounting_line_code
6514                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
6515                AND w.analytical_criterion_code      = s.analytical_criterion_code);
6516 
6517   l_parent_key          VARCHAR2(240);
6518   l_key                 VARCHAR2(240);
6519   l_log_module          VARCHAR2(240);
6520 BEGIN
6521   IF g_log_enabled THEN
6522     l_log_module := C_DEFAULT_MODULE||'.compare_line_ac_assgns';
6523   END IF;
6524 
6525   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6526     trace(p_msg    => 'BEGIN of function compare_line_ac_assgns',
6527           p_module => l_log_module,
6528           p_level  => C_LEVEL_PROCEDURE);
6529   END IF;
6530 
6531   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6532     trace(p_msg    => 'BEGIN LOOP: updated line ac assgns',
6533           p_module => l_log_module,
6534           p_level  => C_LEVEL_PROCEDURE);
6535   END IF;
6536 
6537   FOR l_comp IN c_comp LOOP
6538 
6539     l_parent_key := l_comp.event_class_code||C_CHAR||
6540                     l_comp.event_type_code||C_CHAR||
6541                     l_comp.line_definition_owner_code||C_CHAR||
6542                     l_comp.line_definition_code||C_CHAR||
6543                     l_comp.accounting_line_type_code||C_CHAR||
6544                     l_comp.accounting_line_code;
6545 
6546     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
6547              l_comp.analytical_criterion_code;
6548 
6549     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6550       trace(p_msg    => 'LOOP: updated line ac assgn',
6551             p_module => l_log_module,
6552             p_level  => C_LEVEL_PROCEDURE);
6553       trace(p_msg    => 'l_parent_key = '||l_parent_key,
6554             p_module => l_log_module,
6555             p_level  => C_LEVEL_PROCEDURE);
6556       trace(p_msg    => 'l_key = '||l_key,
6557             p_module => l_log_module,
6558             p_level  => C_LEVEL_PROCEDURE);
6559     END IF;
6560 
6561     record_updated_component
6562           (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
6563           ,p_parent_component_key  => l_parent_key
6564           ,p_component_type        => 'AMB_AC'
6565           ,p_component_key         => l_key
6566           ,p_merge_impact          => l_comp.merge_impact
6567           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
6568           ,p_component_code        => l_comp.analytical_criterion_code);
6569 
6570     record_updated_line_assgn
6571           (p_event_class_code           => l_comp.event_class_code
6572           ,p_event_type_code            => l_comp.event_type_code
6573           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6574           ,p_line_definition_code       => l_comp.line_definition_code
6575           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6576           ,p_accounting_line_code       => l_comp.accounting_line_code
6577           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
6578 
6579   END LOOP;
6580 
6581   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6582     trace(p_msg    => 'END LOOP: updated line ac assgns',
6583           p_module => l_log_module,
6584           p_level  => C_LEVEL_PROCEDURE);
6585   END IF;
6586 
6587   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6591   END IF;
6588     trace(p_msg    => 'END of function compare_line_ac_assgns',
6589           p_module => l_log_module,
6590           p_level  => C_LEVEL_PROCEDURE);
6592 
6593 EXCEPTION
6594   WHEN xla_exceptions_pkg.application_exception THEN
6595     RAISE;
6596   WHEN OTHERS THEN
6597    xla_exceptions_pkg.raise_message
6598       (p_location => l_log_module);
6599 END compare_line_ac_assgns;
6600 
6601 
6602 --=============================================================================
6603 --
6604 -- Name: compare_mpa_hdr_ac_assgns
6605 -- Description:
6606 --
6607 --=============================================================================
6608 PROCEDURE compare_mpa_hdr_ac_assgns
6609 IS
6610   CURSOR c_comp IS
6611     SELECT s.event_class_code
6612          , s.event_type_code
6613          , s.line_definition_owner_code
6614          , s.line_definition_code
6615          , s.accounting_line_type_code
6616          , s.accounting_line_code
6617          , s.analytical_criterion_type_code
6618          , s.analytical_criterion_code
6619          , C_MERGE_IMPACT_NEW merge_impact
6620       FROM xla_mpa_header_ac_assgns s
6621          , xla_line_defn_jlt_assgns b
6622      WHERE s.application_id   = g_application_id
6623        AND s.amb_context_code = g_staging_context_code
6624        AND b.application_id              = g_application_id
6625        AND b.amb_context_code            = g_amb_context_code
6626        AND b.event_class_code            = s.event_class_code
6627        AND b.event_type_code             = s.event_type_code
6628        AND b.line_definition_owner_code  = s.line_definition_owner_code
6629        AND b.line_definition_code        = s.line_definition_code
6630        AND b.accounting_line_type_code   = s.accounting_line_type_code
6631        AND b.accounting_line_code        = s.accounting_line_code
6632        AND NOT EXISTS
6633            (SELECT 1
6634               FROM xla_mpa_header_ac_assgns w
6635              WHERE w.application_id                 = g_application_id
6636                AND w.amb_context_code               = g_amb_context_code
6637                AND w.event_class_code               = s.event_class_code
6638                AND w.event_type_code                = s.event_type_code
6639                AND w.line_definition_owner_code     = s.line_definition_owner_code
6640                AND w.line_definition_code           = s.line_definition_code
6641                AND w.accounting_line_type_code      = s.accounting_line_type_code
6642                AND w.accounting_line_code           = s.accounting_line_code
6643                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
6644                AND w.analytical_criterion_code      = s.analytical_criterion_code);
6645 
6646   l_parent_key          VARCHAR2(240);
6647   l_key                 VARCHAR2(240);
6648   l_log_module          VARCHAR2(240);
6649 BEGIN
6650   IF g_log_enabled THEN
6651     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_hdr_ac_assgns';
6652   END IF;
6653 
6654   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6655     trace(p_msg    => 'BEGIN of function compare_mpa_hdr_ac_assgns',
6656           p_module => l_log_module,
6657           p_level  => C_LEVEL_PROCEDURE);
6658   END IF;
6659 
6660   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6661     trace(p_msg    => 'BEGIN LOOP: updated mpa header ac assgns',
6662           p_module => l_log_module,
6663           p_level  => C_LEVEL_PROCEDURE);
6664   END IF;
6665 
6666   FOR l_comp IN c_comp LOOP
6667 
6668     l_parent_key := l_comp.event_class_code||C_CHAR||
6669                     l_comp.event_type_code||C_CHAR||
6670                     l_comp.line_definition_owner_code||C_CHAR||
6671                     l_comp.line_definition_code||C_CHAR||
6672                     l_comp.accounting_line_type_code||C_CHAR||
6673                     l_comp.accounting_line_code||C_CHAR||
6674                     'MPA';
6675 
6676     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
6677              l_comp.analytical_criterion_code;
6678 
6679     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6680       trace(p_msg    => 'LOOP: updated mpa header ac assgn',
6681             p_module => l_log_module,
6682             p_level  => C_LEVEL_PROCEDURE);
6683       trace(p_msg    => 'l_parent_key = '||l_parent_key,
6684             p_module => l_log_module,
6685             p_level  => C_LEVEL_PROCEDURE);
6686       trace(p_msg    => 'l_key = '||l_key,
6687             p_module => l_log_module,
6688             p_level  => C_LEVEL_PROCEDURE);
6689     END IF;
6690 
6691     record_updated_component
6692           (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
6693           ,p_parent_component_key  => l_parent_key
6694           ,p_component_type        => 'AMB_AC'
6695           ,p_component_key         => l_key
6696           ,p_merge_impact          => l_comp.merge_impact
6697           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
6698           ,p_component_code        => l_comp.analytical_criterion_code);
6699 
6700     record_updated_mpa_assgn
6701           (p_event_class_code           => l_comp.event_class_code
6702           ,p_event_type_code            => l_comp.event_type_code
6703           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6704           ,p_line_definition_code       => l_comp.line_definition_code
6705           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6706           ,p_accounting_line_code       => l_comp.accounting_line_code
6707           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
6708 
6709   END LOOP;
6710 
6711   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6712     trace(p_msg    => 'END LOOP: updated mpa header ac assgns',
6713           p_module => l_log_module,
6714           p_level  => C_LEVEL_PROCEDURE);
6715   END IF;
6716 
6720           p_level  => C_LEVEL_PROCEDURE);
6717   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6718     trace(p_msg    => 'END of function compare_mpa_hdr_ac_assgns',
6719           p_module => l_log_module,
6721   END IF;
6722 
6723 EXCEPTION
6724   WHEN xla_exceptions_pkg.application_exception THEN
6725     RAISE;
6726   WHEN OTHERS THEN
6727    xla_exceptions_pkg.raise_message
6728       (p_location => l_log_module);
6729 END compare_mpa_hdr_ac_assgns;
6730 
6731 --=============================================================================
6732 --
6733 -- Name: compare_mpa_hdr_assgns
6734 -- Description:
6735 --
6736 --=============================================================================
6737 PROCEDURE compare_mpa_hdr_assgns
6738 IS
6739   CURSOR c_comp IS
6740     SELECT s.event_class_code
6741          , s.event_type_code
6742          , s.line_definition_owner_code
6743          , s.line_definition_code
6744          , s.accounting_line_type_code
6745          , s.accounting_line_code
6746          , CASE WHEN sl.mpa_option_code = 'NONE'
6747                 THEN C_MERGE_IMPACT_DELETED
6748                 WHEN wl.mpa_option_code = 'NONE'
6749                 THEN C_MERGE_IMPACT_NEW
6750                 ELSE C_MERGE_IMPACT_UPDATED
6751                 END merge_impact
6752          , s.mpa_header_desc_type_code s_mpa_header_desc_type_code
6753          , w.mpa_header_desc_type_code w_mpa_header_desc_type_code
6754          , s.mpa_header_desc_code      s_mpa_header_desc_code
6755          , w.mpa_header_desc_code      w_mpa_header_desc_code
6756          , s.mpa_num_je_code           s_mpa_num_je_code
6757          , w.mpa_num_je_code           w_mpa_num_je_code
6758          , s.mpa_gl_dates_code         s_mpa_gl_dates_code
6759          , w.mpa_gl_dates_code         w_mpa_gl_dates_code
6760          , s.mpa_proration_code        s_mpa_proration_code
6761          , w.mpa_proration_code        w_mpa_proration_code
6762       FROM xla_line_defn_jlt_assgns s
6763            JOIN xla_line_defn_jlt_assgns w
6764            ON  w.application_id              = g_application_id
6765            AND w.amb_context_code            = g_amb_context_code
6766            AND w.event_class_code            = s.event_class_code
6767            AND w.event_type_code             = s.event_type_code
6768            AND w.line_definition_owner_code  = s.line_definition_owner_code
6769            AND w.line_definition_code        = s.line_definition_code
6770            AND w.accounting_line_type_code   = s.accounting_line_type_code
6771            AND w.accounting_line_code        = s.accounting_line_code
6772            JOIN xla_acct_line_types_b sl
6773            ON  sl.application_id             = s.application_id
6774            AND sl.amb_context_code           = s.amb_context_code
6775            AND sl.event_class_code           = s.event_class_code
6776            AND sl.accounting_line_type_code  = s.accounting_line_type_code
6777            AND sl.accounting_line_code       = s.accounting_line_code
6778            JOIN xla_acct_line_types_b wl
6779            ON  wl.application_id             = w.application_id
6780            AND wl.amb_context_code           = w.amb_context_code
6781            AND wl.event_class_code           = w.event_class_code
6782            AND wl.accounting_line_type_code  = w.accounting_line_type_code
6783            AND wl.accounting_line_code       = w.accounting_line_code
6784            --AND sl.mpa_option_code           <> wl.mpa_option_code
6785      WHERE s.application_id                  = g_application_id
6786        AND s.amb_context_code                = g_staging_context_code
6787        AND (sl.mpa_option_code               = 'ACCRUAL' OR
6788             wl.mpa_option_code               = 'ACCRUAL')
6789        AND (NVL(s.mpa_header_desc_type_code,C_CHAR) <> NVL(w.mpa_header_desc_type_code,C_CHAR) OR
6790             NVL(s.mpa_header_desc_code,C_CHAR)      <> NVL(w.mpa_header_desc_code,C_CHAR)      OR
6791             NVL(s.mpa_num_je_code,C_CHAR)           <> NVL(w.mpa_num_je_code,C_CHAR)           OR
6792             NVL(s.mpa_gl_dates_code,C_CHAR)         <> NVL(w.mpa_gl_dates_code,C_CHAR)         OR
6793             NVL(s.mpa_proration_code,C_CHAR)        <> NVL(w.mpa_proration_code,C_CHAR));
6794 
6795   l_parent_key          VARCHAR2(240);
6796   l_key                 VARCHAR2(240);
6797   l_log_module          VARCHAR2(240);
6798 BEGIN
6799   IF g_log_enabled THEN
6800     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_hdr_assgns';
6801   END IF;
6802 
6803   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6804     trace(p_msg    => 'BEGIN of function compare_mpa_hdr_assgns',
6805           p_module => l_log_module,
6806           p_level  => C_LEVEL_PROCEDURE);
6807   END IF;
6808 
6809   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6810     trace(p_msg    => 'BEGIN LOOP: updated mpa header assgns',
6811           p_module => l_log_module,
6812           p_level  => C_LEVEL_PROCEDURE);
6813   END IF;
6814 
6815   FOR l_comp IN c_comp LOOP
6816 
6817     l_parent_key := l_comp.event_class_code||C_CHAR||
6818                     l_comp.event_type_code||C_CHAR||
6819                     l_comp.line_definition_owner_code||C_CHAR||
6820                     l_comp.line_definition_code||C_CHAR||
6821                     l_comp.accounting_line_type_code||C_CHAR||
6822                     l_comp.accounting_line_code||C_CHAR||
6823                     'MPA';
6824 
6825     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6826       trace(p_msg    => 'LOOP: updated mpa header assgn - ',
6827             p_module => l_log_module,
6828             p_level  => C_LEVEL_PROCEDURE);
6829       trace(p_msg    => 'l_parent_key = '||l_parent_key,
6830             p_module => l_log_module,
6831             p_level  => C_LEVEL_PROCEDURE);
6832     END IF;
6833 
6834     record_updated_mpa_assgn
6835                 (p_event_class_code           => l_comp.event_class_code
6836                 ,p_event_type_code            => l_comp.event_type_code
6840                 ,p_accounting_line_code       => l_comp.accounting_line_code
6837                 ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6838                 ,p_line_definition_code       => l_comp.line_definition_code
6839                 ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6841                 ,p_merge_impact               => l_comp.merge_impact);
6842 
6843     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
6844 
6845       IF (l_comp.s_mpa_header_desc_type_code IS NOT NULL AND
6846           l_comp.w_mpa_header_desc_type_code IS NULL) OR
6847          (NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) <> NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) OR
6848           NVL(l_comp.w_mpa_header_desc_code,C_CHAR)      <> NVL(l_comp.s_mpa_header_desc_code,C_CHAR)) THEN
6849 
6850         l_key := l_comp.s_mpa_header_desc_type_code||C_CHAR||
6851                  l_comp.s_mpa_header_desc_code;
6852 
6853         record_updated_component
6854                  (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
6855                  ,p_parent_component_key  => l_parent_key
6856                  ,p_component_type        => 'AMB_DESCRIPTION'
6857                  ,p_component_key         => l_key
6858                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
6859                  ,p_component_owner_code  => l_comp.s_mpa_header_desc_type_code
6860                  ,p_component_code        => l_comp.s_mpa_header_desc_code);
6861 
6862       ELSIF (l_comp.w_mpa_header_desc_type_code IS NOT NULL AND
6863              l_comp.s_mpa_header_desc_type_code IS NULL) OR
6864             (NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) <> NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) OR
6865              NVL(l_comp.w_mpa_header_desc_code,C_CHAR)      <> NVL(l_comp.s_mpa_header_desc_code,C_CHAR)) THEN
6866 
6867         l_key := l_comp.w_mpa_header_desc_type_code||C_CHAR||
6868                  l_comp.w_mpa_header_desc_code;
6869 
6870         record_updated_component
6871                  (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
6872                  ,p_parent_component_key  => l_parent_key
6873                  ,p_component_type        => 'AMB_DESCRIPTION'
6874                  ,p_component_key         => l_key
6875                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
6876                  ,p_component_owner_code  => l_comp.s_mpa_header_desc_type_code
6877                  ,p_component_code        => l_comp.s_mpa_header_desc_code);
6878       END IF;
6879 
6880       IF (l_comp.w_mpa_num_je_code <> l_comp.s_mpa_num_je_code) THEN
6881         record_updated_property
6882               (p_component_type => 'AMB_MPA_ASSIGNMENT'
6883               ,p_component_key  => l_parent_key
6884               ,p_property       => 'MPA_NUM_JE'
6885               ,p_old_value      => l_comp.w_mpa_num_je_code
6886               ,p_new_value      => l_comp.s_mpa_num_je_code
6887               ,p_lookup_type    => 'XLA_MPA_NUM_OF_ENTRIES');
6888       END IF;
6889 
6890       IF (l_comp.w_mpa_gl_dates_code <> l_comp.s_mpa_gl_dates_code) THEN
6891         record_updated_property
6892               (p_component_type => 'AMB_MPA_ASSIGNMENT'
6893               ,p_component_key  => l_parent_key
6894               ,p_property       => 'MPA_GL_DATES'
6895               ,p_old_value      => l_comp.w_mpa_gl_dates_code
6896               ,p_new_value      => l_comp.s_mpa_gl_dates_code
6897               ,p_lookup_type    => 'XLA_MPA_GL_DATE');
6898       END IF;
6899 
6900       IF (NVL(l_comp.w_mpa_proration_code,C_CHAR) <> NVL(l_comp.s_mpa_proration_code,C_CHAR)) THEN
6901         record_updated_property
6902               (p_component_type => 'AMB_MPA_ASSIGNMENT'
6903               ,p_component_key  => l_parent_key
6904               ,p_property       => 'MPA_PRORATION'
6905               ,p_old_value      => l_comp.w_mpa_proration_code
6906               ,p_new_value      => l_comp.s_mpa_proration_code
6907               ,p_lookup_type    => 'XLA_MPA_PRORATION');
6908       END IF;
6909 
6910     END IF;
6911   END LOOP;
6912 
6913   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6914     trace(p_msg    => 'END LOOP: updated mpa header assgns',
6915           p_module => l_log_module,
6916           p_level  => C_LEVEL_PROCEDURE);
6917   END IF;
6918 
6919   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6920     trace(p_msg    => 'END of function compare_mpa_hdr_assgns',
6921           p_module => l_log_module,
6922           p_level  => C_LEVEL_PROCEDURE);
6923   END IF;
6924 
6925 EXCEPTION
6926   WHEN xla_exceptions_pkg.application_exception THEN
6927     RAISE;
6928   WHEN OTHERS THEN
6929    xla_exceptions_pkg.raise_message
6930       (p_location => l_log_module);
6931 END compare_mpa_hdr_assgns;
6932 
6933 --=============================================================================
6934 --
6935 -- Name: compare_mpa_jlt_adr_assgns
6936 -- Description:
6937 --
6938 --=============================================================================
6939 PROCEDURE compare_mpa_jlt_adr_assgns
6940 IS
6941   CURSOR c_comp IS
6942     SELECT s.event_class_code
6943          , s.event_type_code
6944          , s.line_definition_owner_code
6945          , s.line_definition_code
6946          , s.accounting_line_type_code
6947          , s.accounting_line_code
6948          , s.mpa_accounting_line_type_code
6949          , s.mpa_accounting_line_code
6950          , s.flexfield_segment_code
6951          , l.accounting_coa_id
6952          , CASE WHEN w.application_id IS NULL
6953                 THEN C_MERGE_IMPACT_NEW
6954                 ELSE C_MERGE_IMPACT_UPDATED
6955                 END                merge_impact
6956          , s.segment_rule_appl_id   s_segment_rule_appl_id
6957          , w.segment_rule_appl_id   w_segment_rule_appl_id
6958          , s.segment_rule_type_code s_segment_rule_type_code
6959          , w.segment_rule_type_code w_segment_rule_type_code
6963          , w.inherit_adr_flag       w_inherit_adr_flag
6960          , s.segment_rule_code      s_segment_rule_code
6961          , w.segment_rule_code      w_segment_rule_code
6962          , s.inherit_adr_flag       s_inherit_adr_flag
6964       FROM xla_mpa_jlt_adr_assgns s
6965            JOIN xla_line_definitions_b l
6966            ON  l.application_id              = g_application_id
6967            AND l.amb_context_code            = g_amb_context_code
6968            AND l.event_class_code            = s.event_class_code
6969            AND l.event_type_code             = s.event_type_code
6970            AND l.line_definition_owner_code  = s.line_definition_owner_code
6971            AND l.line_definition_code        = s.line_definition_code
6972            JOIN xla_mpa_jlt_assgns b
6973            ON  b.application_id                = g_application_id
6974            AND b.amb_context_code              = g_amb_context_code
6975            AND b.event_class_code              = s.event_class_code
6976            AND b.event_type_code               = s.event_type_code
6977            AND b.line_definition_owner_code    = s.line_definition_owner_code
6978            AND b.line_definition_code          = s.line_definition_code
6979            AND b.accounting_line_type_code     = s.accounting_line_type_code
6980            AND b.accounting_line_code          = s.accounting_line_code
6981            AND b.mpa_accounting_line_type_code = s.mpa_accounting_line_type_code
6982            AND b.mpa_accounting_line_code      = s.mpa_accounting_line_code
6983            LEFT OUTER JOIN xla_mpa_jlt_adr_assgns w
6984            ON  w.application_id                 = g_application_id
6985            AND w.amb_context_code               = g_amb_context_code
6986            AND w.event_class_code               = s.event_class_code
6987            AND w.event_type_code                = s.event_type_code
6988            AND w.line_definition_owner_code     = s.line_definition_owner_code
6989            AND w.line_definition_code           = s.line_definition_code
6990            AND w.accounting_line_type_code      = s.accounting_line_type_code
6991            AND w.accounting_line_code           = s.accounting_line_code
6992            AND w.mpa_accounting_line_type_code  = s.mpa_accounting_line_type_code
6993            AND w.mpa_accounting_line_code       = s.mpa_accounting_line_code
6994            AND w.flexfield_segment_code         = s.flexfield_segment_code
6995      WHERE s.application_id   = g_application_id
6996        AND s.amb_context_code = g_staging_context_code
6997        AND (w.application_id                     IS NULL OR
6998             s.inherit_adr_flag                   <> w.inherit_adr_flag OR
6999             NVL(s.segment_rule_appl_id,C_NUM)    <> NVL(w.segment_rule_appl_id,C_NUM) OR
7000             NVL(s.segment_rule_type_code,C_CHAR) <> NVL(w.segment_rule_type_code,C_CHAR) OR
7001             NVL(s.segment_rule_code,C_CHAR)      <> NVL(w.segment_rule_code,C_CHAR));
7002 
7003   l_parent_key          VARCHAR2(240);
7004   l_key                 VARCHAR2(240);
7005   l_log_module          VARCHAR2(240);
7006 BEGIN
7007   IF g_log_enabled THEN
7008     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_jlt_adr_assgns';
7009   END IF;
7010 
7011   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7012     trace(p_msg    => 'BEGIN of function compare_mpa_jlt_adr_assgns',
7013           p_module => l_log_module,
7014           p_level  => C_LEVEL_PROCEDURE);
7015   END IF;
7016 
7017   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7018     trace(p_msg    => 'BEGIN LOOP: updated mpa line adr assgns',
7019           p_module => l_log_module,
7020           p_level  => C_LEVEL_PROCEDURE);
7021   END IF;
7022 
7023   FOR l_comp IN c_comp LOOP
7024 
7025     l_parent_key := l_comp.event_class_code||C_CHAR||
7026                     l_comp.event_type_code||C_CHAR||
7027                     l_comp.line_definition_owner_code||C_CHAR||
7028                     l_comp.line_definition_code||C_CHAR||
7029                     l_comp.accounting_line_type_code||C_CHAR||
7030                     l_comp.accounting_line_code||C_CHAR||
7031                     'MPA'||C_CHAR||
7032                     l_comp.mpa_accounting_line_type_code||C_CHAR||
7033                     l_comp.mpa_accounting_line_code;
7034 
7035     l_key := l_parent_key||C_CHAR||
7036              l_comp.flexfield_segment_code;
7037 
7038     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7039       trace(p_msg    => 'LOOP: updated mpa line adr assgn',
7040             p_module => l_log_module,
7041             p_level  => C_LEVEL_PROCEDURE);
7042       trace(p_msg    => 'l_parent_key = '||l_key,
7043             p_module => l_log_module,
7044             p_level  => C_LEVEL_PROCEDURE);
7045       trace(p_msg    => 'l_key = '||l_key,
7046             p_module => l_log_module,
7047             p_level  => C_LEVEL_PROCEDURE);
7048     END IF;
7049 
7050     IF (NOT key_exists('LNADR'||C_CHAR||l_key)) THEN
7051       record_updated_component
7052           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7053           ,p_parent_component_key  => l_parent_key
7054           ,p_component_type        => 'AMB_MPA_ADR_ASSGN'
7055           ,p_component_key         => l_key
7056           ,p_merge_impact          => l_comp.merge_impact
7057           ,p_component_owner_code  => l_comp.accounting_coa_id
7058           ,p_component_code        => l_comp.flexfield_segment_code);
7059 
7060       record_updated_mpa_line_assgn
7061           (p_event_class_code              => l_comp.event_class_code
7062           ,p_event_type_code               => l_comp.event_type_code
7063           ,p_line_definition_owner_code    => l_comp.line_definition_owner_code
7064           ,p_line_definition_code          => l_comp.line_definition_code
7065           ,p_accounting_line_type_code     => l_comp.accounting_line_type_code
7066           ,p_accounting_line_code          => l_comp.accounting_line_code
7067           ,p_mpa_acct_line_type_code       => l_comp.mpa_accounting_line_type_code
7071     END IF;
7068           ,p_mpa_acct_line_code            => l_comp.mpa_accounting_line_code
7069           ,p_merge_impact                  => C_MERGE_IMPACT_UPDATED);
7070 
7072 
7073     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
7074 
7075       IF (l_comp.w_inherit_adr_flag <> l_comp.s_inherit_adr_flag) THEN
7076         record_updated_property
7077               (p_component_type => 'AMB_MPA_ADR_ASSGN'
7078               ,p_component_key  => l_key
7079               ,p_property       => 'INHERIT_ADR_FLAG'
7080               ,p_old_value      => l_comp.w_inherit_adr_flag
7081               ,p_new_value      => l_comp.s_inherit_adr_flag
7082               ,p_lookup_type    => 'XLA_YES_NO');
7083 
7084       END IF;
7085 
7086       IF (NVL(l_comp.w_segment_rule_appl_id,C_NUM)    <> NVL(l_comp.s_segment_rule_appl_id,C_NUM) OR
7087           NVL(l_comp.w_segment_rule_type_code,C_CHAR) <> NVL(l_comp.s_segment_rule_type_code,C_CHAR) OR
7088           NVL(l_comp.w_segment_rule_code,C_CHAR)      <> NVL(l_comp.s_segment_rule_code,C_CHAR)) THEN
7089 
7090         l_parent_key := l_key;
7091 
7092         IF (l_comp.s_segment_rule_code IS NOT NULL) THEN
7093 
7094           record_updated_component
7095                  (p_parent_component_type => 'AMB_MPA_ADR_ASSGN'
7096                  ,p_parent_component_key  => l_parent_key
7097                  ,p_component_type        => 'AMB_ADR'
7098                  ,p_component_key         => l_comp.s_segment_rule_type_code||C_CHAR||
7099                                              l_comp.s_segment_rule_code
7100                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
7101                  ,p_component_appl_id     => l_comp.s_segment_rule_appl_id
7102                  ,p_component_owner_code  => l_comp.s_segment_rule_type_code
7103                  ,p_component_code        => l_comp.s_segment_rule_code);
7104         END IF;
7105 
7106         IF (l_comp.w_segment_rule_code IS NOT NULL) THEN
7107 
7108           record_updated_component
7109                  (p_parent_component_type => 'AMB_MPA_ADR_ASSGN'
7110                  ,p_parent_component_key  => l_parent_key
7111                  ,p_component_type        => 'AMB_ADR'
7112                  ,p_component_key         => l_comp.w_segment_rule_type_code||C_CHAR||
7113                                              l_comp.w_segment_rule_code
7114                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
7115                  ,p_component_appl_id     => l_comp.w_segment_rule_appl_id
7116                  ,p_component_owner_code  => l_comp.s_segment_rule_type_code
7117                  ,p_component_code        => l_comp.w_segment_rule_code);
7118         END IF;
7119       END IF;
7120     END IF;
7121 
7122   END LOOP;
7123 
7124   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7125     trace(p_msg    => 'END LOOP: updated mpa line adr assgns',
7126           p_module => l_log_module,
7127           p_level  => C_LEVEL_PROCEDURE);
7128   END IF;
7129 
7130   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7131     trace(p_msg    => 'END of function compare_mpa_jlt_adr_assgns',
7132           p_module => l_log_module,
7133           p_level  => C_LEVEL_PROCEDURE);
7134   END IF;
7135 
7136 EXCEPTION
7137   WHEN xla_exceptions_pkg.application_exception THEN
7138     RAISE;
7139   WHEN OTHERS THEN
7140    xla_exceptions_pkg.raise_message
7141       (p_location => l_log_module);
7142 END compare_mpa_jlt_adr_assgns;
7143 
7144 --=============================================================================
7145 --
7146 -- Name: compare_mpa_jlt_ac_assgns
7147 -- Description:
7148 --
7149 --=============================================================================
7150 PROCEDURE compare_mpa_jlt_ac_assgns
7151 IS
7152   CURSOR c_comp IS
7153     SELECT s.event_class_code
7154          , s.event_type_code
7155          , s.line_definition_owner_code
7156          , s.line_definition_code
7157          , s.accounting_line_type_code
7158          , s.accounting_line_code
7159          , s.mpa_accounting_line_type_code
7160          , s.mpa_accounting_line_code
7161          , s.analytical_criterion_type_code
7162          , s.analytical_criterion_code
7163          , C_MERGE_IMPACT_NEW merge_impact
7164       FROM xla_mpa_jlt_ac_assgns s
7165          , xla_mpa_jlt_assgns b
7166      WHERE s.application_id                = g_application_id
7167        AND s.amb_context_code              = g_staging_context_code
7168        AND b.application_id                = g_application_id
7169        AND b.amb_context_code              = g_amb_context_code
7170        AND b.event_class_code              = s.event_class_code
7171        AND b.event_type_code               = s.event_type_code
7172        AND b.line_definition_owner_code    = s.line_definition_owner_code
7173        AND b.line_definition_code          = s.line_definition_code
7174        AND b.accounting_line_type_code     = s.accounting_line_type_code
7175        AND b.accounting_line_code          = s.accounting_line_code
7176        AND b.mpa_accounting_line_type_code = s.mpa_accounting_line_type_code
7177        AND b.mpa_accounting_line_code      = s.mpa_accounting_line_code
7178        AND NOT EXISTS
7179            (SELECT 1
7180               FROM xla_mpa_jlt_ac_assgns w
7181              WHERE w.application_id                 = g_application_id
7182                AND w.amb_context_code               = g_amb_context_code
7183                AND w.event_class_code               = s.event_class_code
7184                AND w.event_type_code                = s.event_type_code
7185                AND w.line_definition_owner_code     = s.line_definition_owner_code
7186                AND w.line_definition_code           = s.line_definition_code
7187                AND w.accounting_line_type_code      = s.accounting_line_type_code
7188                AND w.accounting_line_code           = s.accounting_line_code
7192                AND w.analytical_criterion_code      = s.analytical_criterion_code);
7189                AND w.mpa_accounting_line_type_code  = s.mpa_accounting_line_type_code
7190                AND w.mpa_accounting_line_code       = s.mpa_accounting_line_code
7191                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
7193 
7194   l_parent_key          VARCHAR2(240);
7195   l_key                 VARCHAR2(240);
7196   l_log_module          VARCHAR2(240);
7197 BEGIN
7198   IF g_log_enabled THEN
7199     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_jlt_ac_assgns';
7200   END IF;
7201 
7202   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7203     trace(p_msg    => 'BEGIN of function compare_mpa_jlt_ac_assgns',
7204           p_module => l_log_module,
7205           p_level  => C_LEVEL_PROCEDURE);
7206   END IF;
7207 
7208   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7209     trace(p_msg    => 'BEGIN LOOP: updated mpa line ac assgns',
7210           p_module => l_log_module,
7211           p_level  => C_LEVEL_PROCEDURE);
7212   END IF;
7213 
7214   FOR l_comp IN c_comp LOOP
7215 
7216     l_parent_key := l_comp.event_class_code||C_CHAR||
7217                     l_comp.event_type_code||C_CHAR||
7218                     l_comp.line_definition_owner_code||C_CHAR||
7219                     l_comp.line_definition_code||C_CHAR||
7220                     l_comp.accounting_line_type_code||C_CHAR||
7221                     l_comp.accounting_line_code||C_CHAR||
7222                     'MPA'||C_CHAR||
7223                     l_comp.mpa_accounting_line_type_code||C_CHAR||
7224                     l_comp.mpa_accounting_line_code;
7225 
7226     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
7227              l_comp.analytical_criterion_code;
7228 
7229     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7230       trace(p_msg    => 'LOOP: updated mpa line ac assgn',
7231             p_module => l_log_module,
7232             p_level  => C_LEVEL_PROCEDURE);
7233       trace(p_msg    => 'l_parent_key = '||l_parent_key,
7234             p_module => l_log_module,
7235             p_level  => C_LEVEL_PROCEDURE);
7236       trace(p_msg    => 'l_key = '||l_key,
7237             p_module => l_log_module,
7238             p_level  => C_LEVEL_PROCEDURE);
7239     END IF;
7240 
7241     record_updated_component
7242           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7243           ,p_parent_component_key  => l_parent_key
7244           ,p_component_type        => 'AMB_AC'
7245           ,p_component_key         => l_key
7246           ,p_merge_impact          => l_comp.merge_impact
7247           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
7248           ,p_component_code        => l_comp.analytical_criterion_code);
7249 
7250     record_updated_mpa_line_assgn
7251           (p_event_class_code           => l_comp.event_class_code
7252           ,p_event_type_code            => l_comp.event_type_code
7253           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
7254           ,p_line_definition_code       => l_comp.line_definition_code
7255           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
7256           ,p_accounting_line_code       => l_comp.accounting_line_code
7257           ,p_mpa_acct_line_type_code    => l_comp.mpa_accounting_line_type_code
7258           ,p_mpa_acct_line_code         => l_comp.mpa_accounting_line_code
7259           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
7260 
7261   END LOOP;
7262 
7263   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7264     trace(p_msg    => 'END LOOP: updated mpa line ac assgns',
7265           p_module => l_log_module,
7266           p_level  => C_LEVEL_PROCEDURE);
7267   END IF;
7268 
7269   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7270     trace(p_msg    => 'END of function compare_mpa_jlt_ac_assgns',
7271           p_module => l_log_module,
7272           p_level  => C_LEVEL_PROCEDURE);
7273   END IF;
7274 
7275 EXCEPTION
7276   WHEN xla_exceptions_pkg.application_exception THEN
7277     RAISE;
7278   WHEN OTHERS THEN
7279    xla_exceptions_pkg.raise_message
7280       (p_location => l_log_module);
7281 END compare_mpa_jlt_ac_assgns;
7282 
7283 --=============================================================================
7284 --
7285 -- Name: compare_mpa_jlt_assgns
7286 -- Description:
7287 --
7288 --=============================================================================
7289 PROCEDURE compare_mpa_jlt_assgns
7290 IS
7291   CURSOR c_comp IS
7292     SELECT s.event_class_code
7293          , s.event_type_code
7294          , s.line_definition_owner_code
7295          , s.line_definition_code
7296          , s.accounting_line_type_code
7297          , s.accounting_line_code
7298          , s.mpa_accounting_line_type_code
7299          , s.mpa_accounting_line_code
7300          , CASE WHEN w.mpa_accounting_line_code IS NULL
7301                 THEN C_MERGE_IMPACT_NEW
7302                 ELSE C_MERGE_IMPACT_UPDATED
7303                 END                 merge_impact
7304          , s.description_type_code  s_description_type_code
7305          , w.description_type_code  w_description_type_code
7306          , s.description_code       s_description_code
7307          , w.description_code       w_description_code
7308       FROM xla_mpa_jlt_assgns       s
7309            JOIN xla_line_defn_jlt_assgns bw
7310            ON  bw.application_id              = g_application_id
7311            AND bw.amb_context_code            = g_amb_context_code
7312            AND bw.event_class_code            = s.event_class_code
7313            AND bw.event_type_code             = s.event_type_code
7314            AND bw.line_definition_owner_code  = s.line_definition_owner_code
7315            AND bw.line_definition_code        = s.line_definition_code
7316            AND bw.accounting_line_type_code   = s.accounting_line_type_code
7320            AND w.amb_context_code              = g_amb_context_code
7317            AND bw.accounting_line_code        = s.accounting_line_code
7318            LEFT OUTER JOIN xla_mpa_jlt_assgns w
7319            ON  w.application_id                = g_application_id
7321            AND w.event_class_code              = s.event_class_code
7322            AND w.event_type_code               = s.event_type_code
7323            AND w.line_definition_owner_code    = s.line_definition_owner_code
7324            AND w.line_definition_code          = s.line_definition_code
7325            AND w.accounting_line_type_code     = s.accounting_line_type_code
7326            AND w.accounting_line_code          = s.accounting_line_code
7327            AND w.mpa_accounting_line_type_code = s.mpa_accounting_line_type_code
7328            AND w.mpa_accounting_line_code      = s.mpa_accounting_line_code
7329      WHERE s.application_id   = g_application_id
7330        AND s.amb_context_code = g_staging_context_code
7331        AND (w.mpa_accounting_line_code IS NULL
7332         OR  s.description_type_code    <> w.description_type_code
7333         OR  s.description_code         <> w.description_code)
7334   UNION
7335     SELECT w.event_class_code
7336          , w.event_type_code
7337          , w.line_definition_owner_code
7338          , w.line_definition_code
7339          , w.accounting_line_type_code
7340          , w.accounting_line_code
7341          , w.mpa_accounting_line_type_code
7342          , w.mpa_accounting_line_code
7343          , C_MERGE_IMPACT_DELETED
7344          , NULL, NULL, NULL, NULL
7345       FROM xla_mpa_jlt_assgns       w
7346            JOIN xla_line_defn_jlt_assgns bs
7347            ON  bs.application_id              = g_application_id
7348            AND bs.amb_context_code            = g_staging_context_code
7349            AND bs.event_class_code            = w.event_class_code
7350            AND bs.event_type_code             = w.event_type_code
7351            AND bs.line_definition_owner_code  = w.line_definition_owner_code
7352            AND bs.line_definition_code        = w.line_definition_code
7353            AND bs.accounting_line_type_code   = w.accounting_line_type_code
7354            AND bs.accounting_line_code        = w.accounting_line_code
7355            LEFT OUTER JOIN xla_mpa_jlt_assgns s
7356            ON  s.application_id                = g_application_id
7357            AND s.amb_context_code              = g_staging_context_code
7358            AND s.event_class_code              = w.event_class_code
7359            AND s.event_type_code               = w.event_type_code
7360            AND s.line_definition_owner_code    = w.line_definition_owner_code
7361            AND s.line_definition_code          = w.line_definition_code
7362            AND s.accounting_line_type_code     = w.accounting_line_type_code
7363            AND s.accounting_line_code          = w.accounting_line_code
7364            AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
7365            AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
7366      WHERE s.application_id   = g_application_id
7367        AND s.amb_context_code = g_amb_context_code
7368        AND w.mpa_accounting_line_code IS NULL;
7369 
7370   l_parent_key          VARCHAR2(240);
7371   l_key                 VARCHAR2(240);
7372   l_log_module          VARCHAR2(240);
7373 BEGIN
7374   IF g_log_enabled THEN
7375     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_jlt_assgns';
7376   END IF;
7377 
7378   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7379     trace(p_msg    => 'BEGIN of function compare_mpa_jlt_assgns',
7380           p_module => l_log_module,
7381           p_level  => C_LEVEL_PROCEDURE);
7382   END IF;
7383 
7384   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7385     trace(p_msg    => 'BEGIN LOOP: updated mpa jlt assgns',
7386           p_module => l_log_module,
7387           p_level  => C_LEVEL_PROCEDURE);
7388   END IF;
7389 
7390   FOR l_comp IN c_comp LOOP
7391 
7392     l_parent_key := l_comp.event_class_code||C_CHAR||
7393                     l_comp.event_type_code||C_CHAR||
7394                     l_comp.line_definition_owner_code||C_CHAR||
7395                     l_comp.line_definition_code||C_CHAR||
7396                     l_comp.accounting_line_type_code||C_CHAR||
7397                     l_comp.accounting_line_code||C_CHAR||
7398                     'MPA'||C_CHAR||
7399                     l_comp.mpa_accounting_line_type_code||C_CHAR||
7400                     l_comp.mpa_accounting_line_code;
7401 
7402     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7403       trace(p_msg    => 'LOOP: updated mpa jlt assgn - merge_impact = '||l_comp.merge_impact,
7404             p_module => l_log_module,
7405             p_level  => C_LEVEL_PROCEDURE);
7406       trace(p_msg    => 'l_parent_key = '||l_parent_key,
7407             p_module => l_log_module,
7408             p_level  => C_LEVEL_PROCEDURE);
7409     END IF;
7410 
7411     IF (l_comp.merge_impact IN (C_MERGE_IMPACT_NEW, C_MERGE_IMPACT_DELETED)) THEN
7412 
7413       l_key := l_comp.mpa_accounting_line_type_code||C_CHAR||
7414                l_comp.mpa_accounting_line_code;
7415 
7416       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7417         trace(p_msg    => 'l_key = '||l_key,
7418               p_module => l_log_module,
7419               p_level  => C_LEVEL_PROCEDURE);
7420       END IF;
7421 
7422       record_updated_component
7423           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7424           ,p_parent_component_key  => l_parent_key
7425           ,p_component_type        => 'AMB_JLT'
7426           ,p_component_key         => l_key
7427           ,p_merge_impact          => l_comp.merge_impact
7428           ,p_event_class_code      => l_comp.event_class_code
7429           ,p_event_type_code       => NULL
7430           ,p_component_owner_code  => l_comp.mpa_accounting_line_type_code
7431           ,p_component_code        => l_comp.mpa_accounting_line_code);
7432 
7433     ELSE
7437         l_key := l_comp.s_description_type_code||C_CHAR||
7434 
7435       IF (l_comp.s_description_type_code IS NOT NULL) THEN
7436 
7438                  l_comp.s_description_code;
7439 
7440         IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7441           trace(p_msg    => 'merge_impact = '||C_MERGE_IMPACT_NEW,
7442                 p_module => l_log_module,
7443                 p_level  => C_LEVEL_PROCEDURE);
7444           trace(p_msg    => 'l_key = '||l_key,
7445                 p_module => l_log_module,
7446                 p_level  => C_LEVEL_PROCEDURE);
7447         END IF;
7448 
7449         record_updated_component
7450           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7451           ,p_parent_component_key  => l_parent_key
7452           ,p_component_type        => 'AMB_DESCRIPTION'
7453           ,p_component_key         => l_key
7454           ,p_merge_impact          => C_MERGE_IMPACT_NEW
7455           ,p_component_owner_code  => l_comp.s_description_type_code
7456           ,p_component_code        => l_comp.s_description_code);
7457 
7458       END IF;
7459 
7460       IF (l_comp.w_description_type_code IS NOT NULL) THEN
7461 
7462         l_key := l_comp.w_description_type_code||C_CHAR||
7463                  l_comp.w_description_code;
7464 
7465         IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7466           trace(p_msg    => 'merge_impact = '||C_MERGE_IMPACT_DELETED,
7467                 p_module => l_log_module,
7468                 p_level  => C_LEVEL_PROCEDURE);
7469           trace(p_msg    => 'l_key = '||l_key,
7470                 p_module => l_log_module,
7471                 p_level  => C_LEVEL_PROCEDURE);
7472         END IF;
7473 
7474         record_updated_component
7475           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7476           ,p_parent_component_key  => l_parent_key
7477           ,p_component_type        => 'AMB_DESCRIPTION'
7478           ,p_component_key         => l_key
7479           ,p_merge_impact          => C_MERGE_IMPACT_DELETED
7480           ,p_component_owner_code  => l_comp.w_description_type_code
7481           ,p_component_code        => l_comp.w_description_code);
7482       END IF;
7483 
7484     END IF;
7485 
7486     record_updated_mpa_line_assgn
7487           (p_event_class_code               => l_comp.event_class_code
7488           ,p_event_type_code                => l_comp.event_type_code
7489           ,p_line_definition_owner_code     => l_comp.line_definition_owner_code
7490           ,p_line_definition_code           => l_comp.line_definition_code
7491           ,p_accounting_line_type_code      => l_comp.accounting_line_type_code
7492           ,p_accounting_line_code           => l_comp.accounting_line_code
7493           ,p_mpa_acct_line_type_code        => l_comp.mpa_accounting_line_type_code
7494           ,p_mpa_acct_line_code             => l_comp.mpa_accounting_line_code
7495           ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED);
7496 
7497   END LOOP;
7498 
7499   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7500     trace(p_msg    => 'END LOOP: updated mpa jlt assgns',
7501           p_module => l_log_module,
7502           p_level  => C_LEVEL_PROCEDURE);
7503   END IF;
7504 
7505   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7506     trace(p_msg    => 'END of function compare_mpa_jlt_assgns',
7507           p_module => l_log_module,
7508           p_level  => C_LEVEL_PROCEDURE);
7509   END IF;
7510 
7511 EXCEPTION
7512   WHEN xla_exceptions_pkg.application_exception THEN
7513     RAISE;
7514   WHEN OTHERS THEN
7515    xla_exceptions_pkg.raise_message
7516       (p_location => l_log_module);
7517 END compare_mpa_jlt_assgns;
7518 
7519 
7520 --=============================================================================
7521 --
7522 -- Name: compare_jld_jlt_assgns
7523 -- Description:
7524 --
7525 --=============================================================================
7526 PROCEDURE compare_jld_jlt_assgns
7527 IS
7528   CURSOR c_comp IS
7529     SELECT s.event_class_code
7530          , s.event_type_code
7531          , s.line_definition_owner_code
7532          , s.line_definition_code
7533          , s.accounting_line_type_code
7534          , s.accounting_line_code
7535          , CASE WHEN w.application_id IS NULL
7536                 THEN C_MERGE_IMPACT_NEW
7537                 ELSE C_MERGE_IMPACT_UPDATED
7538                 END                    merge_impact
7539          , s.active_flag               s_active_flag
7540          , w.active_flag               w_active_flag
7541          , s.description_type_code     s_description_type_code
7542          , w.description_type_code     w_description_type_code
7543          , s.description_code          s_description_code
7544          , w.description_code          w_description_code
7545          , s.inherit_desc_flag         s_inherit_desc_flag
7546          , w.inherit_desc_flag         w_inherit_desc_flag
7547       FROM xla_line_defn_jlt_assgns s
7548            JOIN xla_line_definitions_b b
7549            ON  b.application_id             = g_application_id
7550            AND b.amb_context_code           = g_amb_context_code
7551            AND b.event_class_code           = s.event_class_code
7552            AND b.event_type_code            = s.event_type_code
7553            AND b.line_definition_owner_code = s.line_definition_owner_code
7554            AND b.line_definition_code       = s.line_definition_code
7555            LEFT OUTER JOIN xla_line_defn_jlt_assgns w
7556            ON  w.application_id             = g_application_id
7557            AND w.amb_context_code           = g_amb_context_code
7558            AND w.event_class_code           = s.event_class_code
7559            AND w.event_type_code            = s.event_type_code
7560            AND w.line_definition_owner_code = s.line_definition_owner_code
7561            AND w.line_definition_code       = s.line_definition_code
7565        AND s.amb_context_code = g_staging_context_code
7562            AND w.accounting_line_type_code  = s.accounting_line_type_code
7563            AND w.accounting_line_code       = s.accounting_line_code
7564      WHERE s.application_id   = g_application_id
7566        AND (w.application_id IS NULL
7567         OR  NVL(s.active_flag,C_CHAR)               <> NVL(w.active_flag,C_CHAR)
7568         OR  NVL(s.inherit_desc_flag,C_CHAR)         <> NVL(w.inherit_desc_flag,C_CHAR)
7569         OR  NVL(s.description_type_code,C_CHAR)     <> NVL(w.description_type_code,C_CHAR)
7570         OR  NVL(s.description_code,C_CHAR)          <> NVL(w.description_code,C_CHAR)
7571         );
7572 
7573   l_parent_key          VARCHAR2(240);
7574   l_key                 VARCHAR2(240);
7575   l_merge_impact        VARCHAR2(30);
7576   l_log_module          VARCHAR2(240);
7577 BEGIN
7578   IF g_log_enabled THEN
7579     l_log_module := C_DEFAULT_MODULE||'.compare_jld_jlt_assgns';
7580   END IF;
7581 
7582   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7583     trace(p_msg    => 'BEGIN of function compare_jld_jlt_assgns',
7584           p_module => l_log_module,
7585           p_level  => C_LEVEL_PROCEDURE);
7586   END IF;
7587 
7588   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7589     trace(p_msg    => 'END LOOP: updated jld jlt assgns',
7590           p_module => l_log_module,
7591           p_level  => C_LEVEL_PROCEDURE);
7592   END IF;
7593 
7594   FOR l_comp IN c_comp LOOP
7595 
7596     record_updated_line_assgn
7597           (p_event_class_code           => l_comp.event_class_code
7598           ,p_event_type_code            => l_comp.event_type_code
7599           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
7600           ,p_line_definition_code       => l_comp.line_definition_code
7601           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
7602           ,p_accounting_line_code       => l_comp.accounting_line_code
7603           ,p_merge_impact               => l_comp.merge_impact);
7604 
7605     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
7606 
7607       l_parent_key := l_comp.event_class_code||C_CHAR||
7608                l_comp.event_type_code||C_CHAR||
7609                l_comp.line_definition_owner_code||C_CHAR||
7610                l_comp.line_definition_code||C_CHAR||
7611                l_comp.accounting_line_type_code||C_CHAR||
7612                l_comp.accounting_line_code;
7613 
7614       IF (l_comp.w_active_flag <> l_comp.s_active_flag) THEN
7615         record_updated_property
7616               (p_component_type => 'AMB_LINE_ASSIGNMENT'
7617               ,p_component_key  => l_parent_key
7618               ,p_property       => 'ACTIVE'
7619               ,p_old_value      => l_comp.w_active_flag
7620               ,p_new_value      => l_comp.s_active_flag
7621               ,p_lookup_type    => 'XLA_YES_NO');
7622 
7623       END IF;
7624 
7625       IF (l_comp.w_inherit_desc_flag <> l_comp.s_inherit_desc_flag) THEN
7626         record_updated_property
7627               (p_component_type => 'AMB_LINE_ASSIGNMENT'
7628               ,p_component_key  => l_parent_key
7629               ,p_property       => 'INHERIT_DESC'
7630               ,p_old_value      => l_comp.w_inherit_desc_flag
7631               ,p_new_value      => l_comp.s_inherit_desc_flag
7632               ,p_lookup_type    => 'XLA_YES_NO');
7633 
7634       END IF;
7635 
7636       IF (NVL(l_comp.w_description_type_code,C_CHAR) <> NVL(l_comp.s_description_type_code,C_CHAR) OR
7637           NVL(l_comp.w_description_code,C_CHAR)      <> NVL(l_comp.s_description_code,C_CHAR)) THEN
7638 
7639         IF (l_comp.s_description_code IS NOT NULL) THEN
7640 
7641           l_key := l_comp.s_description_type_code||C_CHAR||
7642                    l_comp.s_description_code;
7643 
7644           IF (NOT key_exists('LDESC'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
7645 
7646             record_updated_component
7647                  (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
7648                  ,p_parent_component_key  => l_parent_key
7649                  ,p_component_type        => 'AMB_DESCRIPTION'
7650                  ,p_component_key         => l_key
7651                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
7652                  ,p_component_owner_code  => l_comp.s_description_type_code
7653                  ,p_component_code        => l_comp.s_description_code);
7654           END IF;
7655         END IF;
7656 
7657         IF (l_comp.w_description_code IS NOT NULL) THEN
7658 
7659           l_key := l_comp.w_description_type_code||C_CHAR||
7660                    l_comp.w_description_code;
7661 
7662           IF (NOT key_exists('LDESC'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
7663 
7664             record_updated_component
7665                  (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
7666                  ,p_parent_component_key  => l_parent_key
7667                  ,p_component_type        => 'AMB_DESCRIPTION'
7668                  ,p_component_key         => l_key
7669                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
7670                  ,p_component_owner_code  => l_comp.w_description_type_code
7671                  ,p_component_code        => l_comp.w_description_code);
7672           END IF;
7673         END IF;
7674       END IF; -- updated description
7675 
7676     END IF; -- l_comp.merge_impact = C_MERGE_IMPACT_UPDATED
7677 
7678   END LOOP;
7679 
7680   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7681     trace(p_msg    => 'END LOOP: updated jld jlt assgns',
7682           p_module => l_log_module,
7683           p_level  => C_LEVEL_PROCEDURE);
7684   END IF;
7685 
7686   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7687     trace(p_msg    => 'END of function compare_jld_jlt_assgns',
7688           p_module => l_log_module,
7689           p_level  => C_LEVEL_PROCEDURE);
7690   END IF;
7694     RAISE;
7691 
7692 EXCEPTION
7693   WHEN xla_exceptions_pkg.application_exception THEN
7695   WHEN OTHERS THEN
7696    xla_exceptions_pkg.raise_message
7697       (p_location => l_log_module);
7698 END compare_jld_jlt_assgns;
7699 
7700 
7701 --=============================================================================
7702 --
7703 -- Name: compare_jlds
7704 -- Description:
7705 --
7706 --=============================================================================
7707 PROCEDURE compare_jlds
7708 IS
7709   CURSOR c_comp IS
7710     SELECT ts.event_class_code
7711           ,ts.event_type_code
7712           ,ts.line_definition_owner_code
7713           ,ts.line_definition_code
7714           ,ts.name                       s_name
7715           ,tw.name                       w_name
7716           ,ts.description                s_description
7717           ,tw.description                w_description
7718           ,bs.enabled_flag               s_enabled_flag
7719           ,bw.enabled_flag               w_enabled_flag
7720           ,bs.accounting_coa_id          s_acct_coa_id
7721           ,bw.accounting_coa_id          w_acct_coa_id
7722           ,bs.transaction_coa_id         s_trx_coa_id
7723           ,bw.transaction_coa_id         w_trx_coa_id
7724           ,bs.budgetary_control_flag     s_budgetary_control_flag
7725           ,bw.budgetary_control_flag     w_budgetary_control_flag
7726       FROM xla_line_definitions_b bs
7727            JOIN xla_line_definitions_tl ts
7728            ON  ts.application_id             = bs.application_id
7729            AND ts.amb_context_code           = bs.amb_context_code
7730            AND ts.event_class_code           = bs.event_class_code
7731            AND ts.event_type_code            = bs.event_type_code
7732            AND ts.line_definition_owner_code = bs.line_definition_owner_code
7733            AND ts.line_definition_code       = bs.line_definition_code
7734            AND ts.language                   = USERENV('LANG')
7735            JOIN xla_line_definitions_b bw
7736            ON  bw.application_id             = bs.application_id
7737            AND bw.amb_context_code           = g_amb_context_code
7738            AND bw.event_class_code           = bs.event_class_code
7739            AND bw.event_type_code            = bs.event_type_code
7740            AND bw.line_definition_owner_code = bs.line_definition_owner_code
7741            AND bw.line_definition_code       = bs.line_definition_code
7742            JOIN xla_line_definitions_tl tw
7743            ON  tw.application_id             = bw.application_id
7744            AND tw.amb_context_code           = bw.amb_context_code
7745            AND tw.event_class_code           = bw.event_class_code
7746            AND tw.event_type_code            = bw.event_type_code
7747            AND tw.line_definition_owner_code = bw.line_definition_owner_code
7748            AND tw.line_definition_code       = bw.line_definition_code
7749            AND tw.language                   = USERENV('LANG')
7750      WHERE bs.amb_context_code = g_staging_context_code
7751        AND bw.amb_context_code = g_amb_context_code
7752        AND (ts.name                          <> tw.name                          OR
7753             NVL(ts.description,C_CHAR)       <> NVL(tw.description,C_CHAR)       OR
7754             bs.enabled_flag                  <> bw.enabled_flag                  OR
7755             bs.budgetary_control_flag        <> bw.budgetary_control_flag        OR
7756             NVL(bs.transaction_coa_id,C_NUM) <> NVL(bw.transaction_coa_id,C_NUM) OR
7757             NVL(bs.accounting_coa_id,C_NUM)  <> NVL(bw.accounting_coa_id,C_NUM));
7758 
7759   l_key                 VARCHAR2(240);
7760   l_log_module          VARCHAR2(240);
7761 BEGIN
7762   IF g_log_enabled THEN
7763     l_log_module := C_DEFAULT_MODULE||'.compare_jlds';
7764   END IF;
7765 
7766   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7767     trace(p_msg    => 'BEGIN of function compare_jlds',
7768           p_module => l_log_module,
7769           p_level  => C_LEVEL_PROCEDURE);
7770   END IF;
7771 
7772   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7773     trace(p_msg    => 'BEGIN LOOP: updated jlds',
7774           p_module => l_log_module,
7775           p_level  => C_LEVEL_PROCEDURE);
7776   END IF;
7777 
7778   FOR l_comp in c_comp LOOP
7779 
7780     l_key := l_comp.event_class_code||C_CHAR||
7781                     l_comp.event_type_code||C_CHAR||
7782                     l_comp.line_definition_owner_code||C_CHAR||
7783                     l_comp.line_definition_code;
7784 
7785     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7786       trace(p_msg    => 'LOOP: updated jld - '||l_key,
7787             p_module => l_log_module,
7788             p_level  => C_LEVEL_PROCEDURE);
7789     END IF;
7790 
7791     record_updated_jld
7792           (p_event_class_code           => l_comp.event_class_code
7793           ,p_event_type_code            => l_comp.event_type_code
7794           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
7795           ,p_line_definition_code       => l_comp.line_definition_code);
7796 
7797     IF (l_comp.s_name <> l_comp.w_name) THEN
7798       record_updated_property
7799           (p_component_type          => 'AMB_JLD'
7800           ,p_component_key           => l_key
7801           ,p_property                => 'NAME'
7802           ,p_old_value               => l_comp.w_name
7803           ,p_new_value               => l_comp.s_name);
7804     END IF;
7805 
7806     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
7807       record_updated_property
7808           (p_component_type          => 'AMB_JLD'
7809           ,p_component_key           => l_key
7810           ,p_property                => 'DESCRIPTION'
7811           ,p_old_value               => l_comp.w_description
7812           ,p_new_value               => l_comp.s_description);
7813     END IF;
7814 
7818           ,p_component_key           => l_key
7815     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
7816       record_updated_property
7817           (p_component_type          => 'AMB_JLD'
7819           ,p_property                => 'ENABLED'
7820           ,p_old_value               => l_comp.w_enabled_flag
7821           ,p_new_value               => l_comp.s_enabled_flag
7822           ,p_lookup_type             => 'XLA_YES_NO');
7823     END IF;
7824 
7825     IF (l_comp.s_budgetary_control_flag <> l_comp.w_budgetary_control_flag) THEN
7826       record_updated_property
7827           (p_component_type          => 'AMB_JLD'
7828           ,p_component_key           => l_key
7829           ,p_property                => 'BUDGETARY_CONTROL'
7830           ,p_old_value               => l_comp.w_budgetary_control_flag
7831           ,p_new_value               => l_comp.s_budgetary_control_flag
7832           ,p_lookup_type             => 'XLA_YES_NO');
7833     END IF;
7834 
7835     IF (NVL(l_comp.s_acct_coa_id,C_NUM) <> NVL(l_comp.w_acct_coa_id,C_NUM)) THEN
7836       record_updated_property
7837           (p_component_type          => 'AMB_JLD'
7838           ,p_component_key           => l_key
7839           ,p_property                => 'ACCOUNTING_COA'
7840           ,p_old_value               => l_comp.w_acct_coa_id
7841           ,p_new_value               => l_comp.s_acct_coa_id);
7842     END IF;
7843 
7844     IF (NVL(l_comp.s_trx_coa_id,C_NUM) <> NVL(l_comp.w_trx_coa_id,C_NUM)) THEN
7845       record_updated_property
7846           (p_component_type          => 'AMB_JLD'
7847           ,p_component_key           => l_key
7848           ,p_property                => 'TRANSACTION_COA'
7849           ,p_old_value               => l_comp.w_trx_coa_id
7850           ,p_new_value               => l_comp.s_trx_coa_id);
7851     END IF;
7852 
7853   END LOOP;
7854 
7855   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7856     trace(p_msg    => 'END LOOP: updated jlds',
7857           p_module => l_log_module,
7858           p_level  => C_LEVEL_PROCEDURE);
7859   END IF;
7860 
7861   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7862     trace(p_msg    => 'END of function compare_jlds',
7863           p_module => l_log_module,
7864           p_level  => C_LEVEL_PROCEDURE);
7865   END IF;
7866 
7867 EXCEPTION
7868   WHEN xla_exceptions_pkg.application_exception THEN
7869     RAISE;
7870   WHEN OTHERS THEN
7871    xla_exceptions_pkg.raise_message
7872       (p_location => l_log_module);
7873 END compare_jlds;
7874 
7875 
7876 --=============================================================================
7877 --
7878 -- Name: compare_jld_assgns
7879 -- Description:
7880 --
7881 --=============================================================================
7882 PROCEDURE compare_jld_assgns
7883 IS
7884   -- Retrieve new or deleted JLD assignment to the event class/evnet type
7885   CURSOR c_comp IS
7886     SELECT s.product_rule_type_code
7887          , s.product_rule_code
7888          , s.event_class_code
7889          , s.event_type_code
7890          , s.line_definition_owner_code
7891          , s.line_definition_code
7892          , C_MERGE_IMPACT_NEW merge_impact
7893       FROM xla_aad_line_defn_assgns s
7894          , xla_prod_acct_headers    b
7895      WHERE s.application_id         = g_application_id
7896        AND s.amb_context_code       = g_staging_context_code
7897        AND b.application_id         = g_application_id
7898        AND b.amb_context_code       = g_amb_context_code
7899        AND b.product_rule_type_code = s.product_rule_type_code
7900        AND b.product_rule_code      = s.product_rule_code
7901        AND b.event_class_code       = s.event_class_code
7902        AND b.event_type_code        = s.event_type_code
7903        AND NOT EXISTS
7904            (SELECT 1
7905               FROM xla_aad_line_defn_assgns w
7906              WHERE w.application_id             = g_application_id
7907                AND w.amb_context_code           = g_amb_context_code
7908                AND s.product_rule_type_code     = w.product_rule_type_code
7909                AND s.product_rule_code          = w.product_rule_code
7910                AND s.event_class_code           = w.event_class_code
7911                AND s.event_type_code            = w.event_type_code
7912                AND s.line_definition_owner_code = w.line_definition_owner_code
7913                AND s.line_definition_code       = w.line_definition_code);
7914 
7915   l_log_module          VARCHAR2(240);
7916 BEGIN
7917   IF g_log_enabled THEN
7918     l_log_module := C_DEFAULT_MODULE||'.compare_jld_assgns';
7919   END IF;
7920 
7921   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7922     trace(p_msg    => 'BEGIN of function compare_jld_assgns',
7923           p_module => l_log_module,
7924           p_level  => C_LEVEL_PROCEDURE);
7925   END IF;
7926 
7927   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7928     trace(p_msg    => 'BEGIN LOOP: updated jld assgns',
7929           p_module => l_log_module,
7930           p_level  => C_LEVEL_PROCEDURE);
7931   END IF;
7932 
7933   FOR l_comp IN c_comp LOOP
7934 
7935     record_updated_jld_assgn
7936           (p_product_rule_type_code     => l_comp.product_rule_type_code
7937           ,p_product_rule_code          => l_comp.product_rule_code
7938           ,p_event_class_code           => l_comp.event_class_code
7939           ,p_event_type_code            => l_comp.event_type_code
7940           ,p_line_defn_owner_code       => l_comp.line_definition_owner_code
7941           ,p_line_defn_code             => l_comp.line_definition_code
7942           ,p_merge_impact               => l_comp.merge_impact);
7943 
7944   END LOOP;
7945 
7946   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7947     trace(p_msg    => 'END LOOP: updated jld assgns',
7948           p_module => l_log_module,
7952   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7949           p_level  => C_LEVEL_PROCEDURE);
7950   END IF;
7951 
7953     trace(p_msg    => 'END of function compare_jld_assgns',
7954           p_module => l_log_module,
7955           p_level  => C_LEVEL_PROCEDURE);
7956   END IF;
7957 
7958 EXCEPTION
7959   WHEN xla_exceptions_pkg.application_exception THEN
7960     RAISE;
7961   WHEN OTHERS THEN
7962    xla_exceptions_pkg.raise_message
7963       (p_location => l_log_module);
7964 END compare_jld_assgns;
7965 
7966 --=============================================================================
7967 --
7968 -- Name: compare_hdr_ac_assgns
7969 -- Description:
7970 --
7971 --=============================================================================
7972 PROCEDURE compare_hdr_ac_assgns
7973 IS
7974   CURSOR c_comp IS
7975     SELECT s.product_rule_type_code
7976          , s.product_rule_code
7977          , s.event_class_code
7978          , s.event_type_code
7979          , s.analytical_criterion_type_code
7980          , s.analytical_criterion_code
7981          , C_MERGE_IMPACT_NEW merge_impact
7982       FROM xla_aad_header_ac_assgns s
7983          , xla_prod_acct_headers b
7984      WHERE s.application_id              = g_application_id
7985        AND s.amb_context_code            = g_staging_context_code
7986        AND b.application_id              = g_application_id
7987        AND b.amb_context_code            = g_amb_context_code
7988        AND b.product_rule_type_code      = s.product_rule_type_code
7989        AND b.product_rule_code           = s.product_rule_code
7990        AND b.event_class_code            = s.event_class_code
7991        AND b.event_type_code             = s.event_type_code
7992        AND NOT EXISTS
7993            (SELECT 1
7994               FROM xla_aad_header_ac_assgns w
7995              WHERE w.application_id                 = g_application_id
7996                AND w.amb_context_code               = g_amb_context_code
7997                AND w.product_rule_type_code         = s.product_rule_type_code
7998                AND w.product_rule_code              = s.product_rule_code
7999                AND w.event_class_code               = s.event_class_code
8000                AND w.event_type_code                = s.event_type_code
8001                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
8002                AND w.analytical_criterion_code      = s.analytical_criterion_code);
8003 
8004   l_parent_key          VARCHAR2(240);
8005   l_key                 VARCHAR2(240);
8006   l_log_module          VARCHAR2(240);
8007 BEGIN
8008   IF g_log_enabled THEN
8009     l_log_module := C_DEFAULT_MODULE||'.compare_hdr_ac_assgns';
8010   END IF;
8011 
8012   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8013     trace(p_msg    => 'BEGIN of function compare_hdr_ac_assgns',
8014           p_module => l_log_module,
8015           p_level  => C_LEVEL_PROCEDURE);
8016   END IF;
8017 
8018   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8019     trace(p_msg    => 'BEGIN LOOP: updated header ac assgns',
8020           p_module => l_log_module,
8021           p_level  => C_LEVEL_PROCEDURE);
8022   END IF;
8023 
8024   FOR l_comp IN c_comp LOOP
8025 
8026     l_parent_key := l_comp.product_rule_type_code||C_CHAR||
8027                     l_comp.product_rule_code||C_CHAR||
8028                     l_comp.event_class_code||C_CHAR||
8029                     l_comp.event_type_code;
8030 
8031     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
8032              l_comp.analytical_criterion_code;
8033 
8034     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8035       trace(p_msg    => 'LOOP: updated header ac assgn - '||l_key,
8036             p_module => l_log_module,
8037             p_level  => C_LEVEL_PROCEDURE);
8038     END IF;
8039 
8040     IF (NOT key_exists('HAC'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
8041       record_updated_component
8042           (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
8043           ,p_parent_component_key  => l_parent_key
8044           ,p_component_type        => 'AMB_AC'
8045           ,p_component_key         => l_key
8046           ,p_merge_impact          => l_comp.merge_impact
8047           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
8048           ,p_component_code        => l_comp.analytical_criterion_code);
8049 
8050       record_updated_header_assgn
8051           (p_product_rule_type_code => l_comp.product_rule_type_code
8052           ,p_product_rule_code      => l_comp.product_rule_code
8053           ,p_event_class_code       => l_comp.event_class_code
8054           ,p_event_type_code        => l_comp.event_type_code
8055           ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
8056     END IF;
8057   END LOOP;
8058 
8059   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8060     trace(p_msg    => 'END LOOP: updated header ac assgns',
8061           p_module => l_log_module,
8062           p_level  => C_LEVEL_PROCEDURE);
8063   END IF;
8064 
8065   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8066     trace(p_msg    => 'END of function compare_hdr_ac_assgns',
8067           p_module => l_log_module,
8068           p_level  => C_LEVEL_PROCEDURE);
8069   END IF;
8070 
8071 EXCEPTION
8072   WHEN xla_exceptions_pkg.application_exception THEN
8073     RAISE;
8074   WHEN OTHERS THEN
8075    xla_exceptions_pkg.raise_message
8076       (p_location => l_log_module);
8077 END compare_hdr_ac_assgns;
8078 
8079 
8080 --=============================================================================
8081 --
8082 -- Name: compare_hdr_acct_attrs
8083 -- Description:
8084 --
8085 --=============================================================================
8086 PROCEDURE compare_hdr_acct_attrs
8087 IS
8088   CURSOR c_comp IS
8092          , s.event_type_code
8089     SELECT s.product_rule_type_code
8090          , s.product_rule_code
8091          , s.event_class_code
8093          , s.accounting_attribute_code
8094          , CASE WHEN w.accounting_attribute_code IS NULL
8095                 THEN C_MERGE_IMPACT_NEW
8096                 ELSE C_MERGE_IMPACT_UPDATED END merge_impact
8097          ,s.event_class_default_flag s_event_class_default_flag
8098          ,w.event_class_default_flag w_event_class_default_flag
8099          ,s.source_application_id    s_source_application_id
8100          ,w.source_application_id    w_source_application_id
8101          ,s.source_type_code         s_source_type_code
8102          ,w.source_type_code         w_source_type_code
8103          ,s.source_code              s_source_code
8104          ,w.source_code              w_source_code
8105       FROM xla_aad_hdr_acct_attrs s
8106            JOIN xla_prod_acct_headers b
8107            ON  b.application_id              = g_application_id
8108            AND b.amb_context_code            = g_amb_context_code
8109            AND b.product_rule_type_code      = s.product_rule_type_code
8110            AND b.product_rule_code           = s.product_rule_code
8111            AND b.event_class_code            = s.event_class_code
8112            AND b.event_type_code             = s.event_type_code
8113            LEFT OUTER JOIN xla_aad_hdr_acct_attrs w
8114            ON  w.application_id                 = g_application_id
8115            AND w.amb_context_code               = g_amb_context_code
8116            AND w.product_rule_type_code         = s.product_rule_type_code
8117            AND w.product_rule_code              = s.product_rule_code
8118            AND w.event_class_code               = s.event_class_code
8119            AND w.event_type_code                = s.event_type_code
8120            AND w.accounting_attribute_code      = s.accounting_attribute_code
8121      WHERE s.application_id              = g_application_id
8122        AND s.amb_context_code            = g_staging_context_code
8123        AND (w.accounting_attribute_code IS NULL OR
8124             s.event_class_default_flag <> w.event_class_default_flag OR
8125             s.source_application_id    <> w.source_application_id OR
8126             s.source_type_code         <> w.source_type_code OR
8127             s.source_code              <> w.source_code);
8128 
8129   l_key                 VARCHAR2(240);
8130   l_log_module          VARCHAR2(240);
8131 BEGIN
8132   IF g_log_enabled THEN
8133     l_log_module := C_DEFAULT_MODULE||'.compare_hdr_acct_attrs';
8134   END IF;
8135 
8136   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8137     trace(p_msg    => 'BEGIN of function compare_hdr_acct_attrs',
8138           p_module => l_log_module,
8139           p_level  => C_LEVEL_PROCEDURE);
8140   END IF;
8141 
8142   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8143     trace(p_msg    => 'BEGIN LOOP: updated header acct attrs',
8144           p_module => l_log_module,
8145           p_level  => C_LEVEL_PROCEDURE);
8146   END IF;
8147 
8148   FOR l_comp IN c_comp LOOP
8149 
8150     l_key := l_comp.product_rule_type_code||C_CHAR||
8151              l_comp.product_rule_code||C_CHAR||
8152              l_comp.event_class_code||C_CHAR||
8153              l_comp.event_type_code||C_CHAR||
8154              l_comp.accounting_attribute_code;
8155 
8156     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8157       trace(p_msg    => 'LOOP: updated header acct attr - '||l_key,
8158             p_module => l_log_module,
8159             p_level  => C_LEVEL_PROCEDURE);
8160     END IF;
8161 
8162     IF (NOT key_exists('HAA'||C_CHAR||l_key)) THEN
8163 
8164       record_updated_header_assgn
8165           (p_product_rule_type_code => l_comp.product_rule_type_code
8166           ,p_product_rule_code      => l_comp.product_rule_code
8167           ,p_event_class_code       => l_comp.event_class_code
8168           ,p_event_type_code        => l_comp.event_type_code
8169           ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
8170 
8171       IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
8172 
8173         IF (l_comp.s_event_class_default_flag <> l_comp.w_event_class_default_flag) THEN
8174 
8175           record_updated_property
8176             (p_component_type          => 'AMB_AAD_EVENT_TYPE'
8177             ,p_component_key           => l_key
8178             ,p_property                => 'ACCOUNTING_REQUIRED_FLAG'
8179             ,p_old_value               => l_comp.w_event_class_default_flag
8180             ,p_new_value               => l_comp.s_event_class_default_flag
8181             ,p_lookup_type             => 'XLA_YES_NO');
8182 
8183         END IF;
8184 
8185         IF (l_comp.s_source_application_id <> l_comp.w_source_application_id OR
8186             l_comp.s_source_type_code      <> l_comp.s_source_type_code OR
8187             l_comp.s_source_code           <> l_comp.s_source_code) THEN
8188           record_updated_source
8189             (p_component_type          => 'AMB_AAD_EVENT_TYPE'
8190             ,p_component_key           => l_key
8191             ,p_property                => 'SOURCE_CODE'
8192             ,p_old_source_app_id       => l_comp.w_source_application_id
8193             ,p_old_source_type_code    => l_comp.w_source_type_code
8194             ,p_old_source_code         => l_comp.w_source_code
8195             ,p_new_source_app_id       => l_comp.s_source_application_id
8196             ,p_new_source_type_code    => l_comp.s_source_type_code
8197             ,p_new_source_code         => l_comp.s_source_code);
8198 
8199         END IF;
8200       END IF;
8201 
8202     END IF;
8203 
8204   END LOOP;
8205 
8206   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8207     trace(p_msg    => 'END LOOP: updated header acct attrs',
8208           p_module => l_log_module,
8209           p_level  => C_LEVEL_PROCEDURE);
8210   END IF;
8211 
8215           p_level  => C_LEVEL_PROCEDURE);
8212   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8213     trace(p_msg    => 'END of function compare_hdr_acct_attrs',
8214           p_module => l_log_module,
8216   END IF;
8217 
8218 EXCEPTION
8219   WHEN xla_exceptions_pkg.application_exception THEN
8220     RAISE;
8221   WHEN OTHERS THEN
8222    xla_exceptions_pkg.raise_message
8223       (p_location => l_log_module);
8224 END compare_hdr_acct_attrs;
8225 
8226 
8227 
8228 
8229 --=============================================================================
8230 --
8231 -- Name: compare_header_assgns
8232 -- Description:
8233 --
8234 --=============================================================================
8235 PROCEDURE compare_header_assgns
8236 IS
8237   CURSOR c_comp IS
8238     -- Retreive new, deleted, and updated event class/event type assignment
8239     SELECT s.product_rule_type_code
8240          , s.product_rule_code
8241          , s.event_class_code
8242          , s.event_type_code
8243          , CASE WHEN w.event_type_code IS NULL
8244                 THEN C_MERGE_IMPACT_NEW
8245                 ELSE C_MERGE_IMPACT_UPDATED
8246                 END                    merge_impact
8247          , s.accounting_required_flag  s_accounting_required_flag
8248          , w.accounting_required_flag  w_accounting_required_flag
8249          , s.description_type_code     s_description_type_code
8250          , w.description_type_code     w_description_type_code
8251          , s.description_code          s_description_code
8252          , w.description_code          w_description_code
8253       FROM xla_prod_acct_headers s
8254            JOIN xla_product_rules_b b
8255            ON  b.application_id         = g_application_id
8256            AND b.amb_context_code       = g_amb_context_code
8257            AND b.product_rule_type_code = s.product_rule_type_code
8258            AND b.product_rule_code      = s.product_rule_code
8259            LEFT OUTER JOIN xla_prod_acct_headers w
8260            ON  w.application_id         = g_application_id
8261            AND w.amb_context_code       = g_amb_context_code
8262            AND w.product_rule_type_code = s.product_rule_type_code
8263            AND w.product_rule_code      = s.product_rule_code
8264            AND w.event_class_code       = s.event_class_code
8265            AND w.event_type_code        = s.event_type_code
8266      WHERE s.application_id             = g_application_id
8267        AND s.amb_context_code           = g_staging_context_code
8268        AND (w.event_type_code                   IS NULL OR
8269             NVL(s.accounting_required_flag,C_CHAR) <> NVL(w.accounting_required_flag,C_CHAR) OR
8270             NVL(s.description_type_code,C_CHAR)    <> NVL(w.description_type_code,C_CHAR) OR
8271             NVL(s.description_code,C_CHAR)         <> NVL(w.description_code,C_CHAR));
8272 
8273   l_key                 VARCHAR2(240);
8274   l_parent_key          VARCHAR2(240);
8275   l_log_module          VARCHAR2(240);
8276 BEGIN
8277   IF g_log_enabled THEN
8278     l_log_module := C_DEFAULT_MODULE||'.compare_header_assgns';
8279   END IF;
8280 
8281   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8282     trace(p_msg    => 'BEGIN of function compare_header_assgns',
8283           p_module => l_log_module,
8284           p_level  => C_LEVEL_PROCEDURE);
8285   END IF;
8286 
8287   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8288     trace(p_msg    => 'BEGIN LOOP: updated header assgns',
8289           p_module => l_log_module,
8290           p_level  => C_LEVEL_PROCEDURE);
8291   END IF;
8292 
8293   FOR l_comp IN c_comp LOOP
8294 
8295     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8296       trace(p_msg    => 'LOOP: updated header assgn - '||
8297                         l_comp.product_rule_type_code||C_CHAR||
8298                         l_comp.product_rule_code||C_CHAR||
8299                         l_comp.event_class_code||C_CHAR||
8300                         l_comp.event_type_code||C_CHAR||
8301                         l_comp.merge_impact,
8302             p_module => l_log_module,
8303             p_level  => C_LEVEL_PROCEDURE);
8304     END IF;
8305 
8306     record_updated_header_assgn
8307           (p_product_rule_type_code => l_comp.product_rule_type_code
8308           ,p_product_rule_code      => l_comp.product_rule_code
8309           ,p_event_class_code       => l_comp.event_class_code
8310           ,p_event_type_code        => l_comp.event_type_code
8311           ,p_merge_impact           => l_comp.merge_impact);
8312 
8313     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
8314 
8315       l_key := l_comp.product_rule_type_code||C_CHAR||
8316                l_comp.product_rule_code||C_CHAR||
8317                l_comp.event_class_code||C_CHAR||
8318                l_comp.event_type_code;
8319 
8320       IF (l_comp.s_accounting_required_flag <> l_comp.w_accounting_required_flag) THEN
8321         record_updated_property
8322           (p_component_type          => 'AMB_AAD_EVENT_TYPE'
8323           ,p_component_key           => l_key
8324           ,p_property                => 'ACCOUNTING_REQUIRED_FLAG'
8325           ,p_old_value               => l_comp.w_accounting_required_flag
8326           ,p_new_value               => l_comp.s_accounting_required_flag
8327           ,p_lookup_type             => 'XLA_YES_NO');
8328       END IF;
8329 
8330       IF (NVL(l_comp.s_description_type_code,C_CHAR) <> NVL(l_comp.w_description_type_code,C_CHAR) OR
8331           NVL(l_comp.s_description_code,C_CHAR)      <> NVL(l_comp.w_description_code,C_CHAR)) THEN
8332 
8333         IF (l_comp.s_description_code IS NOT NULL) THEN
8334           l_parent_key := l_key;
8335           l_key := l_comp.s_description_type_code||C_CHAR||
8336                    l_comp.s_description_code;
8337 
8338           IF (NOT key_exists('HDESC'||C_CHAR||l_key)) THEN
8339             record_updated_component
8343               ,p_component_key         => l_key
8340               (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
8341               ,p_parent_component_key  => l_parent_key
8342               ,p_component_type        => 'AMB_DESCRIPTION'
8344               ,p_merge_impact          => C_MERGE_IMPACT_NEW
8345               ,p_component_owner_code  => l_comp.s_description_type_code
8346               ,p_component_code        => l_comp.s_description_code);
8347           END IF;
8348         END IF;
8349 
8350         IF (l_comp.w_description_code IS NOT NULL) THEN
8351           l_key := l_comp.s_description_type_code||C_CHAR||
8352                    l_comp.s_description_code;
8353 
8354           IF (NOT key_exists('HDESC'||C_CHAR||l_key)) THEN
8355             record_updated_component
8356               (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
8357               ,p_parent_component_key  => l_parent_key
8358               ,p_component_type        => 'AMB_DESCRIPTION'
8359               ,p_component_key         => l_key
8360               ,p_merge_impact          => C_MERGE_IMPACT_DELETED
8361               ,p_component_owner_code  => l_comp.w_description_type_code
8362               ,p_component_code        => l_comp.w_description_code);
8363           END IF;
8364         END IF;
8365       END IF;
8366 
8367     END IF;
8368 
8369   END LOOP;
8370 
8371   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8372     trace(p_msg    => 'END LOOP: updated header assgns',
8373           p_module => l_log_module,
8374           p_level  => C_LEVEL_PROCEDURE);
8375   END IF;
8376 
8377   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8378     trace(p_msg    => 'END of function compare_header_assgns',
8379           p_module => l_log_module,
8380           p_level  => C_LEVEL_PROCEDURE);
8381   END IF;
8382 
8383 EXCEPTION
8384   WHEN xla_exceptions_pkg.application_exception THEN
8385     RAISE;
8386   WHEN OTHERS THEN
8387    xla_exceptions_pkg.raise_message
8388       (p_location => l_log_module);
8389 END compare_header_assgns;
8390 
8391 
8392 --=============================================================================
8393 --
8394 -- Name: compare_aads
8395 -- Description:
8396 --
8397 --=============================================================================
8398 PROCEDURE compare_aads
8399 IS
8400   -- Retrieve new, deleted, and updated AAD
8401   CURSOR c_comps IS
8402     SELECT bs.product_rule_type_code
8403          , bs.product_rule_code
8404          , CASE WHEN bw.application_id IS NULL
8405                 THEN C_MERGE_IMPACT_NEW
8406                 ELSE C_MERGE_IMPACT_UPDATED
8407                 END                merge_impact
8408          , ts.name                 s_name
8409          , tw.name                 w_name
8410          , ts.description          s_description
8411          , tw.description          w_description
8412          , bs.transaction_coa_id   s_transaction_coa_id
8413          , bw.transaction_coa_id   w_transaction_coa_id
8414          , bs.accounting_coa_id    s_accounting_coa_id
8415          , bw.accounting_coa_id    w_accounting_coa_id
8416          , bs.enabled_flag         s_enabled_flag
8417          , bw.enabled_flag         w_enabled_flag
8418          , bs.locking_status_flag  s_locking_status_flag
8419          , bw.locking_status_flag  w_locking_status_flag
8420          , bs.product_rule_version s_product_rule_version
8421          , bw.product_rule_version w_product_rule_version
8422          , bs.version_num          s_version_num
8423          , bw.version_num          w_version_num
8424       FROM xla_product_rules_b bs
8425            JOIN xla_product_rules_tl ts
8426            ON  ts.application_id         = bs.application_id
8427            AND ts.amb_context_code       = bs.amb_context_code
8428            AND ts.product_rule_type_code = bs.product_rule_type_code
8429            AND ts.product_rule_code      = bs.product_rule_code
8430            AND ts.language               = USERENV('LANG')
8431            LEFT OUTER JOIN xla_product_rules_b bw
8432            ON  bw.application_id         = bs.application_id
8433            AND bw.amb_context_code       = g_amb_context_code
8434            AND bw.product_rule_type_code = bs.product_rule_type_code
8435            AND bw.product_rule_code      = bs.product_rule_code
8436            LEFT OUTER JOIN xla_product_rules_tl tw
8437            ON  tw.application_id         = bw.application_id
8438            AND tw.amb_context_code       = bw.amb_context_code
8439            AND tw.product_rule_type_code = bw.product_rule_type_code
8440            AND tw.product_rule_code      = bw.product_rule_code
8441            AND tw.language               = USERENV('LANG')
8442      WHERE bs.application_id    = g_application_id
8443        AND bs.amb_context_code  = g_staging_context_code
8444        AND (bw.application_id                  IS NULL                                 OR
8445             NVL(ts.name,C_CHAR)                <> NVL(tw.name, C_CHAR)                 OR
8446             NVL(ts.description,C_CHAR)         <> NVL(tw.description, C_CHAR)          OR
8447             NVL(bs.transaction_coa_id,C_NUM)   <> NVL(bw.transaction_coa_id, C_NUM)    OR
8448             NVL(bs.accounting_coa_id,C_NUM)    <> NVL(bw.accounting_coa_id, C_NUM)     OR
8449             NVL(bs.enabled_flag,C_CHAR)        <> NVL(bw.enabled_flag, C_CHAR)         OR
8450             NVL(bs.locking_status_flag,C_CHAR) <> NVL(bw.locking_status_flag, C_CHAR)  OR
8451             NVL(bs.product_rule_version,C_CHAR)<> NVL(bw.product_rule_version, C_CHAR) OR
8452             NVL(bs.version_num,C_NUM)          <> NVL(bw.version_num, C_NUM));
8453 
8454   l_key                 VARCHAR2(240);
8455   l_log_module          VARCHAR2(240);
8456 BEGIN
8457   IF g_log_enabled THEN
8458     l_log_module := C_DEFAULT_MODULE||'.compare_aads';
8459   END IF;
8460 
8461   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8462     trace(p_msg    => 'BEGIN of function compare_aads',
8466 
8463           p_module => l_log_module,
8464           p_level  => C_LEVEL_PROCEDURE);
8465   END IF;
8467   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8468     trace(p_msg    => 'BEGIN LOOP: updated aads',
8469           p_module => l_log_module,
8470           p_level  => C_LEVEL_PROCEDURE);
8471   END IF;
8472 
8473   FOR l_comp IN c_comps LOOP
8474 
8475     l_key := l_comp.product_rule_type_code||C_CHAR||
8476              l_comp.product_rule_code;
8477 
8478     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8479       trace(p_msg    => 'LOOP: updated aad - '||l_key,
8480             p_module => l_log_module,
8481             p_level  => C_LEVEL_PROCEDURE);
8482     END IF;
8483 
8484     record_updated_aad
8485           (p_product_rule_type_code => l_comp.product_rule_type_code
8486           ,p_product_rule_code      => l_comp.product_rule_code
8487           ,p_merge_impact           => l_comp.merge_impact);
8488 
8489     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
8490 
8491       IF (l_comp.s_name <> l_comp.w_name) THEN
8492         record_updated_property
8493           (p_component_type          => 'AMB_AAD'
8494           ,p_component_key           => l_key
8495           ,p_property                => 'NAME'
8496           ,p_old_value               => l_comp.w_name
8497           ,p_new_value               => l_comp.s_name);
8498       END IF;
8499 
8500       IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
8501         record_updated_property
8502           (p_component_type          => 'AMB_AAD'
8503           ,p_component_key           => l_key
8504           ,p_property                => 'DESCRIPTION'
8505           ,p_old_value               => l_comp.w_description
8506           ,p_new_value               => l_comp.s_description);
8507       END IF;
8508 
8509       IF (NVL(l_comp.s_transaction_coa_id,C_NUM) <> NVL(l_comp.w_transaction_coa_id,C_NUM)) THEN
8510         record_updated_property
8511           (p_component_type          => 'AMB_AAD'
8512           ,p_component_key           => l_key
8513           ,p_property                => 'TRANSACTION_COA'
8514           ,p_old_value               => l_comp.w_transaction_coa_id
8515           ,p_new_value               => l_comp.s_transaction_coa_id);
8516       END IF;
8517 
8518       IF (NVL(l_comp.s_accounting_coa_id,C_NUM) <> NVL(l_comp.w_accounting_coa_id,C_NUM)) THEN
8519         record_updated_property
8520           (p_component_type          => 'AMB_AAD'
8521           ,p_component_key           => l_key
8522           ,p_property                => 'ACCOUNTING_COA'
8523           ,p_old_value               => l_comp.w_accounting_coa_id
8524           ,p_new_value               => l_comp.s_accounting_coa_id);
8525       END IF;
8526 
8527       IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
8528         record_updated_property
8529           (p_component_type          => 'AMB_AAD'
8530           ,p_component_key           => l_key
8531           ,p_property                => 'ENABLED'
8532           ,p_old_value               => l_comp.w_enabled_flag
8533           ,p_new_value               => l_comp.s_enabled_flag
8534           ,p_lookup_type             => 'XLA_YES_NO');
8535       END IF;
8536 
8537       IF (l_comp.s_locking_status_flag <> l_comp.w_locking_status_flag) THEN
8538         record_updated_property
8539           (p_component_type          => 'AMB_AAD'
8540           ,p_component_key           => l_key
8541           ,p_property                => 'LOCKED'
8542           ,p_old_value               => l_comp.w_locking_status_flag
8543           ,p_new_value               => l_comp.s_locking_status_flag
8544           ,p_lookup_type             => 'XLA_YES_NO');
8545       END IF;
8546 
8547       IF (NVL(l_comp.s_product_rule_version,C_CHAR) <> NVL(l_comp.w_product_rule_version,C_CHAR)) THEN
8548         record_updated_property
8549           (p_component_type          => 'AMB_AAD'
8550           ,p_component_key           => l_key
8551           ,p_property                => 'PRODUCT_RULE_VERSION'
8552           ,p_old_value               => l_comp.w_product_rule_version
8553           ,p_new_value               => l_comp.s_product_rule_version);
8554       END IF;
8555 
8556       IF (NVL(l_comp.s_version_num,C_NUM) <> NVL(l_comp.w_version_num,C_NUM)) THEN
8557         record_updated_property
8558           (p_component_type          => 'AMB_AAD'
8559           ,p_component_key           => l_key
8560           ,p_property                => 'VERSION_NUM'
8561           ,p_old_value               => l_comp.w_version_num
8562           ,p_new_value               => l_comp.s_version_num);
8563       END IF;
8564 
8565     END IF;
8566   END LOOP;
8567 
8568   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8569     trace(p_msg    => 'END LOOP: updated aads',
8570           p_module => l_log_module,
8571           p_level  => C_LEVEL_PROCEDURE);
8572   END IF;
8573 
8574   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8575     trace(p_msg    => 'END of function compare_aads',
8576           p_module => l_log_module,
8577           p_level  => C_LEVEL_PROCEDURE);
8578   END IF;
8579 
8580 EXCEPTION
8581   WHEN xla_exceptions_pkg.application_exception THEN
8582     RAISE;
8583   WHEN OTHERS THEN
8584    xla_exceptions_pkg.raise_message
8585       (p_location => l_log_module);
8586 END compare_aads;
8587 
8588 --=============================================================================
8589 --
8590 -- Name; analyze_aads
8591 -- Description:
8592 --
8593 --=============================================================================
8594 PROCEDURE analyze_aads
8595 IS
8596   l_log_module    VARCHAR2(240);
8597 BEGIN
8598   IF g_log_enabled THEN
8599     l_log_module := C_DEFAULT_MODULE||'.analyze_aads';
8600   END IF;
8601 
8605           p_level  => C_LEVEL_PROCEDURE);
8602   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8603     trace(p_msg    => 'BEGIN of function analyze_aads',
8604           p_module => l_log_module,
8606   END IF;
8607 
8608   IF (g_user_mode = 'C') THEN
8609     analyze_deleted_oracle_comps;
8610     compare_mapping_set_values;
8611     compare_mapping_sets;
8612   END IF;
8613 
8614   -- compare journal entry setups
8615   compare_jlt_acct_attrs;
8616   compare_jlts;
8617 
8618   compare_ac_sources;
8619   compare_ac_details;
8620   compare_acs;
8621 
8622   compare_desc_priorities;
8623   compare_descs;
8624 
8625   compare_adr_details;
8626   compare_adrs;
8627 
8628   -- compare journal entry definition assignments
8629   compare_mpa_jlt_adr_assgns;
8630   compare_mpa_jlt_ac_assgns;
8631   compare_mpa_jlt_assgns;
8632   compare_mpa_hdr_ac_assgns;
8633   compare_mpa_hdr_assgns;
8634   compare_line_adr_assgns;
8635   compare_line_ac_assgns;
8636   compare_jld_jlt_assgns;
8637   compare_jlds;
8638 
8639   -- compare header assignments
8640   compare_jld_assgns;
8641   compare_hdr_ac_assgns;
8642   compare_hdr_acct_attrs;
8643   compare_header_assgns;
8644 
8645   -- compare aads
8646   compare_aads;
8647 
8648   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8649     trace(p_msg    => 'END of function analyze_aads',
8650           p_module => l_log_module,
8651           p_level  => C_LEVEL_PROCEDURE);
8652   END IF;
8653 
8654 EXCEPTION
8655 WHEN OTHERS THEN
8656   xla_aad_loader_util_pvt.stack_error
8657                (p_appli_s_name    => 'XLA'
8658                ,p_msg_name        => 'XLA_COMMON_ERROR'
8659                ,p_token_1         => 'LOCATION'
8660                ,p_value_1         => 'xla_aad_merge_analysis_pvt.analyze_aads'
8661                ,p_token_2         => 'ERROR'
8662                ,p_value_2         => 'Unhandled exception');
8663   RAISE;
8664 
8665 END analyze_aads;
8666 
8667 
8668 
8669 --=============================================================================
8670 --
8671 -- Name: group_aads
8672 -- Description: This API groups the AAD with the same group number if they
8673 --              shares any commom components.  The group number information is
8674 --              stored in the g_aad_groups global array.
8675 --
8676 --=============================================================================
8677 /*
8678 PROCEDURE group_aads
8679 IS
8680   l_curr_group_num     INTEGER;
8681 
8682   -- Cursor to return all AADs to be grouped
8683   CURSOR c_aad IS
8684     SELECT product_rule_type_code
8685           ,product_rule_code
8686           ,decode(min(decode(amb_context_code,g_amb_context_code,1,2)),1,'Y','N') required_flag
8687       FROM xla_product_rules_b
8688      WHERE application_id   = g_application_id
8689        AND amb_context_code IN (g_amb_context_code,g_staging_context_code)
8690      GROUP BY product_rule_type_code, product_rule_code;
8691 
8692   -- Cursor to return AADs that shares any common component with the AADs that
8693   -- was assigned with the group l_curr_group_num
8694   CURSOR c_aad_group IS
8695   SELECT h.product_rule_type_code, h.product_rule_code
8696     FROM xla_prod_acct_headers h
8697    WHERE h.application_id      = g_application_id
8698      AND h.amb_context_code    IN (g_amb_context_code,g_staging_context_code)
8699      AND EXISTS (SELECT 1
8700                    FROM xla_prod_acct_headers pah
8701                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8702                   WHERE pah.application_id         = g_application_id
8703                     AND pah.amb_context_code       IN (g_amb_context_code,g_staging_context_code)
8704                     AND pah.description_type_code  = h.description_type_code
8705                     AND pah.description_code       = h.description_code
8706                     AND pah.product_rule_type_code = grp.product_rule_type_code
8707                     AND pah.product_rule_code      = grp.product_rule_code
8708                     AND grp.group_num              = l_curr_group_num
8709                   UNION
8710                  SELECT 1
8711                    FROM xla_aad_line_defn_assgns xal
8712                        ,xla_line_defn_jlt_assgns xjl
8713                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8714                   WHERE xjl.application_id             = g_application_id
8715                     AND xjl.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8716                     AND xjl.description_type_code      = h.description_type_code
8717                     AND xjl.description_code           = h.description_code
8718                     AND xal.application_id             = g_application_id
8719                     AND xal.amb_context_code           = xjl.amb_context_code
8720                     AND xal.product_rule_type_code     = grp.product_rule_type_code
8721                     AND xal.product_rule_code          = grp.product_rule_code
8722                     AND xal.event_class_code           = xjl.event_class_code
8723                     AND xal.event_type_code            = xjl.event_type_code
8724                     AND xal.line_definition_owner_code = xjl.line_definition_owner_code
8725                     AND xal.line_definition_code       = xjl.line_definition_code
8726                     AND grp.group_num                  = l_curr_group_num)
8727    UNION
8728   SELECT xal.product_rule_type_code, xal.product_rule_code
8729     FROM xla_line_defn_jlt_assgns h
8730         ,xla_aad_line_defn_assgns xal
8731    WHERE h.application_id             = xal.application_id
8732      AND h.amb_context_code           = xal.amb_context_code
8733      AND h.event_class_code           = xal.event_class_code
8734      AND h.event_type_code            = xal.event_type_code
8738      AND h.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8735      AND h.line_definition_owner_code = xal.line_definition_owner_code
8736      AND h.line_definition_code       = xal.line_definition_code
8737      AND h.application_id             = g_application_id
8739      AND EXISTS (SELECT 1
8740                    FROM xla_prod_acct_headers pah
8741                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8742                   WHERE pah.application_id         = g_application_id
8743                     AND pah.amb_context_code       IN (g_amb_context_code,g_staging_context_code)
8744                     AND pah.description_type_code  = h.description_type_code
8745                     AND pah.description_code       = h.description_code
8746                     AND pah.product_rule_type_code = grp.product_rule_type_code
8747                     AND pah.product_rule_code      = grp.product_rule_code
8748                     AND grp.group_num              = l_curr_group_num
8749                   UNION
8750                  SELECT 1
8751                    FROM xla_aad_line_defn_assgns xal
8752                        ,xla_line_defn_jlt_assgns xjl
8753                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8754                   WHERE xjl.application_id             = g_application_id
8755                     AND xjl.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8756                     AND xjl.description_type_code      = h.description_type_code
8757                     AND xjl.description_code           = h.description_code
8758                     AND xal.application_id             = xjl.application_id
8759                     AND xal.amb_context_code           = xjl.amb_context_code
8760                     AND xal.product_rule_type_code     = grp.product_rule_type_code
8761                     AND xal.product_rule_code          = grp.product_rule_code
8762                     AND xal.event_class_code           = xjl.event_class_code
8763                     AND xal.event_type_code            = xjl.event_type_code
8764                     AND xal.line_definition_owner_code = xjl.line_definition_owner_code
8765                     AND xal.line_definition_code       = xjl.line_definition_code
8766                     AND grp.group_num                  = l_curr_group_num)
8767   UNION
8768   SELECT xal.product_rule_type_code, xal.product_rule_code
8769     FROM xla_line_defn_jlt_assgns h
8770         ,xla_aad_line_defn_assgns xal
8771    WHERE h.application_id             = xal.application_id
8772      AND h.amb_context_code           = xal.amb_context_code
8773      AND h.event_class_code           = xal.event_class_code
8774      AND h.event_type_code            = xal.event_type_code
8775      AND h.line_definition_owner_code = xal.line_definition_owner_code
8776      AND h.line_definition_code       = xal.line_definition_code
8777      AND h.application_id             = g_application_id
8778      AND h.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8779      AND EXISTS (SELECT 1
8780                    FROM xla_aad_line_defn_assgns xad
8781                        ,xla_line_defn_jlt_assgns xjl
8782                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8783                   WHERE xjl.application_id             = g_application_id
8784                     AND xjl.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8785                     AND xjl.event_class_code           = h.event_class_code
8786                     AND xjl.accounting_line_type_code  = h.accounting_line_type_code
8787                     AND xjl.accounting_line_code       = h.accounting_line_code
8788                     AND xad.event_class_code           = xjl.event_class_code
8789                     AND xad.event_type_code            = xjl.event_type_code
8790                     AND xad.line_definition_owner_code = xjl.line_definition_owner_code
8791                     AND xad.line_definition_code       = xjl.line_definition_code
8792                     AND xad.application_id             = xjl.application_id
8793                     AND xad.amb_context_code           = xjl.amb_context_code
8794                     AND xad.product_rule_type_code     = grp.product_rule_type_code
8795                     AND xad.product_rule_code          = grp.product_rule_code
8796                     AND grp.group_num                  = l_curr_group_num)
8797   UNION
8798   SELECT h.product_rule_type_code, h.product_rule_code
8799     FROM xla_aad_header_ac_assgns h
8800    WHERE h.application_id      = g_application_id
8801      AND h.amb_context_code    IN (g_amb_context_code,g_staging_context_code)
8802      AND EXISTS (SELECT 1
8803                    FROM xla_aad_header_ac_assgns xah
8804                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8805                   WHERE xah.analytical_criterion_type_code = h.analytical_criterion_type_code
8806                     AND xah.analytical_criterion_code      = h.analytical_criterion_code
8807                     AND xah.application_id                 = g_application_id
8808                     AND xah.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8809                     AND xah.product_rule_type_code         = grp.product_rule_type_code
8810                     AND xah.product_rule_code              = grp.product_rule_code
8811                     AND grp.group_num                      = l_curr_group_num
8812                   UNION
8813                  SELECT 1
8814                    FROM xla_line_defn_ac_assgns  xac
8815                        ,xla_aad_line_defn_assgns xal
8816                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8817                   WHERE xac.analytical_criterion_type_code = h.analytical_criterion_type_code
8818                     AND xac.analytical_criterion_code      = h.analytical_criterion_code
8819                     AND xac.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8820                     AND xac.application_id                 = g_application_id
8821                     AND xac.event_class_code               = xal.event_class_code
8825                     AND xal.application_id                 = xac.application_id
8822                     AND xac.event_type_code                = xal.event_type_code
8823                     AND xac.line_definition_owner_code     = xal.line_definition_owner_code
8824                     AND xac.line_definition_code           = xal.line_definition_code
8826                     AND xal.amb_context_code               = xac.amb_context_code
8827                     AND xal.product_rule_type_code         = grp.product_rule_type_code
8828                     AND xal.product_rule_code              = grp.product_rule_code
8829                     AND grp.group_num                      = l_curr_group_num)
8830    UNION
8831   SELECT xad.product_rule_type_code, xad.product_rule_code
8832     FROM xla_line_defn_ac_assgns  h
8833         ,xla_aad_line_defn_assgns xad
8834    WHERE h.application_id             = xad.application_id
8835      AND h.amb_context_code           = xad.amb_context_code
8836      AND h.event_class_code           = xad.event_class_code
8837      AND h.event_type_code            = xad.event_type_code
8838      AND h.line_definition_owner_code = xad.line_definition_owner_code
8839      AND h.line_definition_code       = xad.line_definition_code
8840      AND xad.application_id           = g_application_id
8841      AND xad.amb_context_code         = g_amb_context_code
8842      AND EXISTS (SELECT 1
8843                    FROM xla_aad_header_ac_assgns xah
8844                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8845                   WHERE xah.analytical_criterion_type_code = h.analytical_criterion_type_code
8846                     AND xah.analytical_criterion_code      = h.analytical_criterion_code
8847                     AND xah.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8848                     AND xah.application_id                 = g_application_id
8849                     AND xah.product_rule_type_code         = grp.product_rule_type_code
8850                     AND xah.product_rule_code              = grp.product_rule_code
8851                     AND grp.group_num                      = l_curr_group_num
8852                   UNION
8853                  SELECT 1
8854                    FROM xla_line_defn_ac_assgns  xac
8855                        ,xla_aad_line_defn_assgns xal
8856                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8857                   WHERE xac.analytical_criterion_type_code = h.analytical_criterion_type_code
8858                     AND xac.analytical_criterion_code      = h.analytical_criterion_code
8859                     AND xac.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8860                     AND xac.application_id                 = g_application_id
8861                     AND xac.event_class_code               = xal.event_class_code
8862                     AND xac.event_type_code                = xal.event_type_code
8863                     AND xac.line_definition_owner_code     = xal.line_definition_owner_code
8864                     AND xac.line_definition_code           = xal.line_definition_code
8865                     AND xal.application_id                 = xac.application_id
8866                     AND xal.amb_context_code               = xac.amb_context_code
8867                     AND xal.product_rule_type_code         = grp.product_rule_type_code
8868                     AND xal.product_rule_code              = grp.product_rule_code
8869                     AND grp.group_num                      = l_curr_group_num)
8870   UNION
8871   SELECT xad.product_rule_type_code, xad.product_rule_code
8872     FROM xla_line_defn_adr_assgns h
8873         ,xla_aad_line_defn_assgns xad
8874    WHERE h.application_id             = xad.application_id
8875      AND h.amb_context_code           = xad.amb_context_code
8876      AND h.event_class_code           = xad.event_class_code
8877      AND h.event_type_code            = xad.event_type_code
8878      AND h.line_definition_owner_code = xad.line_definition_owner_code
8879      AND h.line_definition_code       = xad.line_definition_code
8880      AND h.application_id             = g_application_id
8881      AND h.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8882      AND EXISTS (SELECT 1
8883                    FROM xla_line_defn_adr_assgns xac
8884                        ,xla_aad_line_defn_assgns xal
8885                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8886                   WHERE xac.application_id             = g_application_id
8887                     AND xac.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8888                     AND xac.segment_rule_type_code     = h.segment_rule_type_code
8889                     AND xac.segment_rule_code          = h.segment_rule_code
8890                     AND xac.event_class_code           = xal.event_class_code
8891                     AND xac.event_type_code            = xal.event_type_code
8892                     AND xac.line_definition_owner_code = xal.line_definition_owner_code
8893                     AND xac.line_definition_code       = xal.line_definition_code
8894                     AND xal.application_id             = xac.application_id
8895                     AND xal.amb_context_code           = xac.amb_context_code
8896                     AND xal.product_rule_type_code     = grp.product_rule_type_code
8897                     AND xal.product_rule_code          = grp.product_rule_code
8898                     AND grp.group_num                  = l_curr_group_num)
8899   UNION
8900   SELECT xal.product_rule_type_code, xal.product_rule_code
8901     FROM xla_line_defn_adr_assgns adr
8902         ,xla_aad_line_defn_assgns xal
8903         ,xla_seg_rule_details     xsr
8904    WHERE xal.application_id             = adr.application_id
8905      AND xal.amb_context_code           = adr.amb_context_code
8906      AND xal.event_class_code           = adr.event_class_code
8907      AND xal.event_type_code            = adr.event_type_code
8908      AND xal.line_definition_owner_code = adr.line_definition_owner_code
8909      AND xal.line_definition_code       = adr.line_definition_code
8913      AND adr.segment_rule_code          = xsr.segment_rule_code
8910      AND adr.application_id             = xsr.application_id
8911      AND adr.amb_context_code           = xsr.amb_context_code
8912      AND adr.segment_rule_type_code     = xsr.segment_rule_type_code
8914      AND xsr.application_id             = g_application_id
8915      AND xsr.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8916      AND EXISTS (SELECT 1
8917                    FROM xla_line_defn_adr_assgns adr2
8918                        ,xla_aad_line_defn_assgns xal2
8919                        ,xla_seg_rule_details     xsr2
8920                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8921                   WHERE xsr2.value_mapping_set_code     = xsr.value_mapping_set_code
8922                     AND xsr2.application_id             = adr2.application_id
8923                     AND xsr2.amb_context_code           = adr2.amb_context_code
8924                     AND xsr2.segment_rule_type_code     = adr2.segment_rule_type_code
8925                     AND xsr2.segment_rule_code          = adr2.segment_rule_code
8926                     AND adr2.application_id             = xal2.application_id
8927                     AND adr2.amb_context_code           = xal2.amb_context_code
8928                     AND adr2.event_class_code           = xal2.event_class_code
8929                     AND adr2.event_type_code            = xal2.event_type_code
8930                     AND adr2.line_definition_owner_code = xal2.line_definition_owner_code
8931                     AND adr2.line_definition_code       = xal2.line_definition_code
8932                     AND xal2.application_id             = g_application_id
8933                     AND xal2.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8934                     AND xal2.product_rule_type_code     = grp.product_rule_type_code
8935                     AND xal2.product_rule_code          = grp.product_rule_code
8936                     AND grp.group_num                   = l_curr_group_num);
8937 
8938   -- Cursor to return the next AAD that is not grouped
8939   CURSOR c_next_aad IS
8940     SELECT product_rule_type_code, product_rule_code
8941       FROM TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type))
8942      WHERE group_num = 0;
8943 
8944   l_aad_group        xla_aad_group_rec_type;
8945   l_updated          BOOLEAN;
8946   l_type_code        VARCHAR2(30);
8947   l_code             VARCHAR2(30);
8948   l_count            INTEGER;
8949   l_log_module       VARCHAR2(240);
8950 BEGIN
8951   IF g_log_enabled THEN
8952     l_log_module := C_DEFAULT_MODULE||'.group_aads';
8953   END IF;
8954 
8955   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8956     trace(p_msg      => 'BEGIN of procedure group_aads'
8957          ,p_level    => C_LEVEL_PROCEDURE
8958          ,p_module   => l_log_module);
8959   END IF;
8960 
8961   g_aad_groups := xla_aad_group_tbl_type();
8962 
8963   l_count := 0;
8964   l_curr_group_num := 1;
8965 
8966   -- Initialize the AAD array
8967   IF (C_LEVEL_EVENT >= g_log_level) THEN
8968     trace(p_msg    => 'BEGIN LOOP - retrieve AADs',
8969           p_module => l_log_module,
8970           p_level  => C_LEVEL_EVENT);
8971   END IF;
8972 
8973   FOR l_aad IN c_aad LOOP
8974     IF (C_LEVEL_ERROR >= g_log_level) THEN
8975       trace(p_msg    => 'LOOP - AAD:'||
8976                         ' product_rule_type_code='||l_aad.product_rule_type_code||
8977                         ',product_rule_code='||l_aad.product_rule_code||
8978                         ',required_flag='||l_aad.required_flag
8979            ,p_module => l_log_module
8980            ,p_level  => C_LEVEL_ERROR);
8981     END IF;
8982 
8983     l_aad_group := xla_aad_group_rec_type
8984                       (l_aad.product_rule_type_code
8985                       ,l_aad.product_rule_code
8986                       ,0
8987                       ,NULL
8988                       ,NULL
8989                       ,NULL
8990                       ,l_aad.required_flag);
8991 
8992     l_count := l_count + 1;
8993     g_aad_groups.EXTEND;
8994     g_aad_groups(l_count) := l_aad_group;
8995   END LOOP;
8996 
8997   IF (C_LEVEL_EVENT >= g_log_level) THEN
8998     trace(p_msg    => 'END LOOP - retrieve AADs',
8999           p_module => l_log_module,
9000           p_level  => C_LEVEL_EVENT);
9001   END IF;
9002 
9003   -- Assign group #1 to the first AAD
9004   IF (g_aad_groups.COUNT > 0) THEN
9005     g_aad_groups(1).group_num := l_curr_group_num;
9006   END IF;
9007 
9008   --
9009   -- Loop until all application accounting definitions are assigned
9010   -- with a group number
9011   --
9012   LOOP
9013     IF (C_LEVEL_ERROR >= g_log_level) THEN
9014       trace(p_msg    => 'LOOP - current group number = '||l_curr_group_num,
9015             p_module => l_log_module,
9016             p_level  => C_LEVEL_ERROR);
9017     END IF;
9018     --
9019     -- Loop until no more new application accounting definitions is
9020     -- found to be sharing any journal entry setups with the
9021     -- definitions in the current group.
9022     --
9023     LOOP
9024       OPEN c_aad_group;
9025       l_updated := FALSE;
9026 
9027       --
9028       -- Loop until all application accounting definitions that
9029       -- shares journal entry sets with the definitions in the
9030       -- current group are marked with the current group number.
9031       LOOP
9032         FETCH c_aad_group INTO l_type_code, l_code;
9033         EXIT WHEN c_aad_group%NOTFOUND;
9034 
9035         IF (update_group_number(l_type_code
9036                                ,l_code
9037                                ,l_curr_group_num)) THEN
9038           l_updated := TRUE;
9039         END IF;
9040       END LOOP;
9041       CLOSE c_aad_group;
9042       IF (NOT l_updated) THEN
9043         EXIT;
9047     OPEN c_next_aad;
9044       END IF;
9045     END LOOP;
9046 
9048     FETCH c_next_aad INTO l_type_code, l_code;
9049     EXIT WHEN c_next_aad%NOTFOUND;
9050 
9051     CLOSE c_next_aad;
9052     l_curr_group_num := l_curr_group_num + 1;
9053     l_updated := update_group_number(l_type_code
9054                                     ,l_code
9055                                     ,l_curr_group_num);
9056   END LOOP;
9057   CLOSE c_next_aad;
9058 
9059   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9060     FOR i IN 1 .. g_aad_groups.COUNT LOOP
9061       trace(p_msg    => 'group='||g_aad_groups(i).group_num||
9062                         ' '||g_aad_groups(i).product_rule_code
9063            ,p_module => l_log_module
9064            ,p_level  => C_LEVEL_PROCEDURE);
9065     END LOOP;
9066   END IF;
9067 
9068   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9069     trace(p_msg    => 'END of procedure group_aads'
9070          ,p_module => l_log_module
9071          ,p_level  => C_LEVEL_PROCEDURE);
9072   END IF;
9073 EXCEPTION
9074 WHEN xla_exceptions_pkg.application_exception THEN
9075   RAISE;
9076 
9077 WHEN OTHERS THEN
9078   xla_exceptions_pkg.raise_message
9079       (p_location => 'xla_aad_merge_analysis_pvt.group_aads');
9080 
9081 END group_aads;
9082 
9083 
9084 --=============================================================================
9085 --
9086 -- Name:
9087 -- Description:
9088 --
9089 --=============================================================================
9090 PROCEDURE analyze_merge_dependency
9091 (p_application_id    INTEGER
9092 ,p_amb_context_code  VARCHAR2)
9093 IS
9094   l_log_module    VARCHAR2(240);
9095 BEGIN
9096   IF g_log_enabled THEN
9097     l_log_module := C_DEFAULT_MODULE||'.analyze_merge_dependency';
9098   END IF;
9099 
9100   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9101     trace(p_msg    => 'BEGIN of procedure analyze_merge_dependency',
9102           p_module => l_log_module,
9103           p_level  => C_LEVEL_PROCEDURE);
9104   END IF;
9105 
9106   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9107     trace(p_msg    => 'END of procedure analyze_merge_dependency',
9108           p_module => l_log_module,
9109           p_level  => C_LEVEL_PROCEDURE);
9110   END IF;
9111 
9112 EXCEPTION
9113 WHEN xla_exceptions_pkg.application_exception THEN
9114   RAISE;
9115 
9116 WHEN OTHERS THEN
9117   xla_exceptions_pkg.raise_message
9118       (p_location => 'xla_aad_merge_analysis_pvt.analyze_merge_dependency');
9119 
9120 END analyze_merge_dependency;
9121 */
9122 
9123 --=============================================================================
9124 ---- Name:
9125 -- Description:
9126 --
9127 --=============================================================================
9128 PROCEDURE post_analysis
9129 IS
9130   l_merge_impact  VARCHAR2(30);
9131   l_log_module    VARCHAR2(240);
9132 BEGIN
9133   IF g_log_enabled THEN
9134     l_log_module := C_DEFAULT_MODULE||'.post_analysis';
9135   END IF;
9136 
9137   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9138     trace(p_msg    => 'BEGIN of procedure post_analysis',
9139           p_module => l_log_module,
9140           p_level  => C_LEVEL_PROCEDURE);
9141   END IF;
9142 
9143   INSERT INTO xla_amb_updated_comps
9144     (amb_updated_comp_id
9145     ,application_id
9146     ,amb_context_code
9147     ,component_type_code
9148     ,component_key
9149     ,parent_component_type_code
9150     ,parent_component_key
9151     ,merge_impact_code
9152     ,event_class_code
9153     ,event_type_code
9154     ,component_owner_code
9155     ,component_code
9156     ,parent_component_owner_code
9157     ,parent_component_code
9158     ,property_code
9159     ,old_value
9160     ,old_source_app_id
9161     ,old_source_type_code
9162     ,old_source_code
9163     ,new_value
9164     ,new_source_app_id
9165     ,new_source_type_code
9166     ,new_source_code
9167     ,lookup_type
9168     ,merge_enabled_flag
9169     ,object_version_number
9170     ,creation_date
9171     ,created_by
9172     ,last_update_date
9173     ,last_updated_by
9174     ,last_update_login
9175     ,program_update_date
9176     ,program_application_id
9177     ,program_id
9178     ,request_id)
9179     SELECT xla_amb_updated_comps_s.nextval
9180           ,g_application_id
9181           ,g_amb_context_code
9182           ,component_type
9183           ,component_key
9184           ,parent_component_type
9185           ,parent_component_key
9186           ,merge_impact
9187           ,event_class_code
9188           ,event_type_code
9189           ,component_owner_code
9190           ,component_code
9191           ,parent_component_owner_code
9192           ,parent_component_code
9193           ,property
9194           ,substr(old_value,1,2000)
9195           ,old_source_app_id
9196           ,old_source_type_code
9197           ,old_source_code
9198           ,substr(new_value,1,2000)
9199           ,new_source_app_id
9200           ,new_source_type_code
9201           ,new_source_code
9202           ,lookup_type
9203           ,'N'
9204           ,1
9205           ,sysdate
9206           ,xla_environment_pkg.g_usr_id
9207           ,sysdate
9208           ,xla_environment_pkg.g_usr_id
9209           ,xla_environment_pkg.g_login_id
9210           ,sysdate
9211           ,xla_environment_pkg.g_prog_appl_id
9212           ,xla_environment_pkg.g_prog_id
9213           ,xla_environment_pkg.g_req_Id
9214       FROM (SELECT component_type
9215                   ,component_key
9219                   ,event_class_code
9216                   ,parent_component_type
9217                   ,parent_component_key
9218                   ,merge_impact
9220                   ,event_type_code
9221                   ,component_owner_code
9222                   ,component_code
9223                   ,parent_component_owner_code
9224                   ,parent_component_code
9225                   ,NULL property
9226                   ,NULL old_value
9227                   ,NULL old_source_app_id
9228                   ,NULL old_source_type_code
9229                   ,NULL old_source_code
9230                   ,NULL new_value
9231                   ,NULL new_source_app_id
9232                   ,NULL new_source_type_code
9233                   ,NULL new_source_code
9234                   ,NULL lookup_type
9235               FROM TABLE(CAST(g_updated_comps AS xla_amb_updated_comp_tbl_type))
9236              UNION
9237             SELECT NULL
9238                   ,NULL
9239                   ,component_type
9240                   ,component_key
9241                   ,C_MERGE_IMPACT_UPDATED
9242                   ,NULL
9243                   ,NULL
9244                   ,NULL
9245                   ,NULL
9246                   ,NULL
9247                   ,NULL
9248                   ,property
9249                   ,old_value
9250                   ,old_source_app_id
9251                   ,old_source_type_code
9252                   ,old_source_code
9253                   ,new_value
9254                   ,new_source_app_id
9255                   ,new_source_type_code
9256                   ,new_source_code
9257                   ,lookup_type
9258               FROM TABLE(CAST(g_updated_props AS xla_amb_updated_prop_tbl_type)));
9259 
9260   IF (SQL%ROWCOUNT > 0) THEN
9261     l_merge_impact := C_MERGE_IMPACT_UPDATED;
9262   ELSE
9263     l_merge_impact := C_MERGE_IMPACT_UNCHANGED;
9264   END IF;
9265 
9266   INSERT INTO xla_amb_updated_comps
9267       (amb_updated_comp_id
9268       ,application_id
9269       ,amb_context_code
9270       ,component_type_code
9271       ,component_key
9272       ,merge_impact_code
9273       ,merge_enabled_flag
9274       ,object_version_number
9275       ,creation_date
9276       ,created_by
9277       ,last_update_date
9278       ,last_updated_by
9279       ,last_update_login
9280       ,program_update_date
9281       ,program_application_id
9282       ,program_id
9283       ,request_id)
9284     SELECT xla_amb_updated_comps_s.nextval
9285           ,g_application_id
9286           ,g_amb_context_code
9287           ,'APPLICATION'
9288           ,TO_CHAR(g_application_id)
9289           ,l_merge_impact
9290           ,'N'
9291           ,1
9292           ,sysdate
9293           ,xla_environment_pkg.g_usr_id
9294           ,sysdate
9295           ,xla_environment_pkg.g_usr_id
9296           ,xla_environment_pkg.g_login_id
9297           ,sysdate
9298           ,xla_environment_pkg.g_prog_appl_id
9299           ,xla_environment_pkg.g_prog_id
9300           ,xla_environment_pkg.g_req_Id
9301       FROM DUAL;
9302 
9303   UPDATE xla_appli_amb_contexts
9304      SET updated_flag       = 'N'
9305        , batch_name         = g_batch_name
9306        , last_analyzed_date = sysdate
9307        , last_update_date   = sysdate
9308        , last_updated_by    = xla_environment_pkg.g_usr_id
9309        , last_update_login  = xla_environment_pkg.g_login_id
9310    WHERE application_id     = g_application_id
9311      AND amb_context_code   = g_amb_context_code;
9312 
9313   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9314     trace(p_msg    => 'END of procedure post_analysis',
9315           p_module => l_log_module,
9316           p_level  => C_LEVEL_PROCEDURE);
9317   END IF;
9318 
9319 EXCEPTION
9320 WHEN xla_exceptions_pkg.application_exception THEN
9321   RAISE;
9322 
9323 WHEN OTHERS THEN
9324   xla_exceptions_pkg.raise_message
9325       (p_location => 'xla_aad_merge_analysis_pvt.post_analysis');
9326 
9327 END post_analysis;
9328 
9329 --=============================================================================
9330 --
9331 --
9332 --
9333 --
9334 --
9335 --          *********** public procedures and functions **********
9336 --
9337 --
9338 --
9339 --
9340 --
9341 --=============================================================================
9342 
9343 --=============================================================================
9344 --
9345 -- Name:
9346 -- Description:
9347 --
9348 --=============================================================================
9349 PROCEDURE analysis
9350 (p_api_version        IN NUMBER
9351 ,x_return_status      IN OUT NOCOPY VARCHAR2
9352 ,p_application_id     INTEGER
9353 ,p_amb_context_code   VARCHAR2
9354 ,p_batch_name         VARCHAR2
9355 ,x_analysis_status    IN OUT NOCOPY VARCHAR2)
9356 IS
9357   l_api_name          CONSTANT VARCHAR2(30) := 'analysis';
9358   l_api_version       CONSTANT NUMBER       := 1.0;
9359 
9360   l_staging_context_code VARCHAR2(30);
9361   l_retcode              VARCHAR2(30);
9362   l_log_module           VARCHAR2(240);
9363 BEGIN
9364   IF g_log_enabled THEN
9365     l_log_module := C_DEFAULT_MODULE||'.analysis';
9366   END IF;
9367 
9368   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9369     trace(p_msg    => 'BEGIN of function analysis: '||
9370                       'p_batch_name = '||p_batch_name,
9371           p_module => l_log_module,
9372           p_level  => C_LEVEL_PROCEDURE);
9373   END IF;
9374 
9375   l_staging_context_code := xla_aad_loader_util_pvt.get_staging_context_code
9379   xla_aad_merge_analysis_pvt.analysis
9376                                 (p_application_id   => p_application_id
9377                                 ,p_amb_context_code => p_amb_context_code);
9378 
9380              (p_api_version          => p_api_version
9381              ,x_return_status        => x_return_status
9382              ,p_application_id       => p_application_id
9383              ,p_amb_context_code     => p_amb_context_code
9384              ,p_staging_context_code => l_staging_context_code
9385              ,p_batch_name           => p_batch_name
9386              ,x_analysis_status      => x_analysis_status);
9387 
9388   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9389     trace(p_msg    => 'END of function analysis - Return value = '||x_analysis_status,
9390           p_module => l_log_module,
9391           p_level  => C_LEVEL_PROCEDURE);
9392   END IF;
9393 
9394 EXCEPTION
9395 WHEN FND_API.G_EXC_ERROR THEN
9396 RAISE;
9397   x_return_status := FND_API.G_RET_STS_ERROR ;
9398   x_analysis_status := 'ERROR';
9399 
9400 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9401   ROLLBACK;
9402 RAISE;
9403   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9404   x_analysis_status := 'ERROR';
9405 
9406 WHEN OTHERS THEN
9407   ROLLBACK;
9408 RAISE;
9409   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9410   x_analysis_status := 'ERROR';
9411 
9412   xla_aad_loader_util_pvt.stack_error
9413                (p_appli_s_name    => 'XLA'
9414                ,p_msg_name        => 'XLA_COMMON_ERROR'
9415                ,p_token_1         => 'LOCATION'
9416                ,p_value_1         => 'xla_aad_merge_analysis_pvt.analysis'
9417                ,p_token_2         => 'ERROR'
9418                ,p_value_2         => 'unhandled exception');
9419 
9420 
9421 END analysis;
9422 
9423 
9424 --=============================================================================
9425 --
9426 -- Name:
9427 -- Description:
9428 --
9429 --=============================================================================
9430 PROCEDURE analysis
9431 (p_api_version          IN NUMBER
9432 ,x_return_status        IN OUT NOCOPY VARCHAR2
9433 ,p_application_id       INTEGER
9434 ,p_amb_context_code     VARCHAR2
9435 ,p_staging_context_code VARCHAR2
9436 ,p_batch_name           VARCHAR2
9437 ,x_analysis_status      IN OUT NOCOPY VARCHAR2)
9438 IS
9439   l_api_name          CONSTANT VARCHAR2(30) := 'analysis';
9440   l_api_version       CONSTANT NUMBER       := 1.0;
9441 
9442   l_retcode       VARCHAR2(30);
9443   l_log_module    VARCHAR2(240);
9444 BEGIN
9445   IF g_log_enabled THEN
9446     l_log_module := C_DEFAULT_MODULE||'.analysis';
9447   END IF;
9448 
9449   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9450     trace(p_msg    => 'BEGIN of function analysis: '||
9451                       'p_batch_name = '||p_batch_name,
9452           p_module => l_log_module,
9453           p_level  => C_LEVEL_PROCEDURE);
9454   END IF;
9455 
9456   -- Standard call to check for call compatibility.
9457   IF (NOT xla_aad_loader_util_pvt.compatible_api_call
9458                  (p_current_version_number => l_api_version
9459                  ,p_caller_version_number  => p_api_version
9460                  ,p_api_name               => l_api_name
9461                  ,p_pkg_name               => C_DEFAULT_MODULE))
9462   THEN
9463     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
9464   END IF;
9465 
9466   --  Initialize global variables
9467   x_return_status        := FND_API.G_RET_STS_SUCCESS;
9468 
9469   g_application_id       := p_application_id;
9470   g_amb_context_code     := p_amb_context_code;
9471   g_staging_context_code := p_staging_context_code;
9472   g_batch_name           := p_batch_name;
9473   g_user_mode            := NVL(fnd_profile.value('XLA_SETUP_USER_MODE'),'C');
9474 
9475   g_num_updated_comps    := 0;
9476   g_num_updated_props    := 0;
9477 
9478   -- API Logic
9479   x_analysis_status := pre_analysis;
9480   IF (x_analysis_status = 'ERROR') THEN
9481     RAISE FND_API.G_EXC_ERROR;
9482   END IF;
9483 
9484   x_analysis_status := validation;
9485   IF (x_analysis_status = 'ERROR') THEN
9486     RAISE FND_API.G_EXC_ERROR;
9487   END IF;
9488 
9489   analyze_aads;
9490   post_analysis;
9491 
9492   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9493     trace(p_msg    => 'END of function analysis - Return value = '||x_analysis_status,
9494           p_module => l_log_module,
9495           p_level  => C_LEVEL_PROCEDURE);
9496   END IF;
9497 
9498 EXCEPTION
9499 WHEN FND_API.G_EXC_ERROR THEN
9500 RAISE;
9501   x_return_status := FND_API.G_RET_STS_ERROR ;
9502   x_analysis_status := 'ERROR';
9503 
9504 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9505   ROLLBACK;
9506 RAISE;
9507   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9508   x_analysis_status := 'ERROR';
9509 
9510 WHEN OTHERS THEN
9511   ROLLBACK;
9512 RAISE;
9513   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9514   x_analysis_status := 'ERROR';
9515 
9516   xla_aad_loader_util_pvt.stack_error
9517                (p_appli_s_name    => 'XLA'
9518                ,p_msg_name        => 'XLA_COMMON_ERROR'
9519                ,p_token_1         => 'LOCATION'
9520                ,p_value_1         => 'xla_aad_merge_analysis_pvt.analysis'
9521                ,p_token_2         => 'ERROR'
9522                ,p_value_2         => 'unhandled exception');
9523 
9524 
9525 END analysis;
9526 
9527 --=============================================================================
9528 --
9529 -- Following code is executed when the package body is referenced for the first
9530 -- time
9531 --
9535    g_log_enabled        := fnd_log.test
9532 --=============================================================================
9533 BEGIN
9534    g_log_level          := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
9536                           (log_level  => g_log_level
9537                           ,module     => C_DEFAULT_MODULE);
9538 
9539    IF NOT g_log_enabled THEN
9540       g_log_level := C_LEVEL_LOG_DISABLED;
9541    END IF;
9542 
9543 END xla_aad_merge_analysis_pvt;