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.15 2006/06/28 19:34:51 wychan 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(30);
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
369 ,p_component_key           VARCHAR2
370 ,p_property                VARCHAR2
371 ,p_old_value               VARCHAR2
372 ,p_old_source_app_id       INTEGER
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 --
508 --=============================================================================
509 PROCEDURE record_updated_component
510 (p_parent_component_type          VARCHAR2
511 ,p_parent_component_key           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);
647   l_log_module             VARCHAR2(240);
648 BEGIN
649   IF g_log_enabled THEN
650     l_log_module := C_DEFAULT_MODULE||'.record_updated_aad';
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
788   IF g_log_enabled THEN
789     l_log_module := C_DEFAULT_MODULE||'.record_updated_jld_assgn';
790   END IF;
791 
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
921     RAISE;
922   WHEN OTHERS THEN
923    xla_exceptions_pkg.raise_message
924       (p_location => l_log_module);
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
1054               ,p_component_code        => NULL);
1055 
1056     record_updated_line_assgn
1057              (p_event_class_code           => p_event_class_code
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
1184 ,p_merge_impact                   IN VARCHAR2
1185 ,x_parent_key                     IN OUT NOCOPY VARCHAR2)
1186 IS
1187   l_log_module             VARCHAR2(240);
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
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
1313      WHERE w.amb_context_code            = g_amb_context_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
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;
1437 
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
1566       (p_location => l_log_module);
1567 END record_updated_jlt_acct_attr;
1568 
1569 
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
1686   WHEN xla_exceptions_pkg.application_exception THEN
1687     RAISE;
1688   WHEN OTHERS THEN
1689    xla_exceptions_pkg.raise_message
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
1822          , w.event_class_code
1823          , w.event_type_code
1824          , w.line_definition_owner_code
1825          , w.line_definition_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,
1936               p_module => l_log_module,
1937               p_level  => C_LEVEL_PROCEDURE);
1938       END IF;
1939 
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
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
2058            AND j.accounting_line_type_code     = w.accounting_line_type_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'
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
2179               ,p_component_type        => 'AMB_ADR_DETAIL'
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||
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||
2321                       ', p_effective_date_to = '||p_effective_date_to||
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;
2428 
2429 EXCEPTION
2430   WHEN xla_exceptions_pkg.application_exception THEN
2431     RAISE;
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
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
2555        AND w.amb_context_code              = g_amb_context_code
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
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
2680        AND w.amb_context_code       = g_amb_context_code
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
2790               ,p_component_code        => p_description_code);
2791 
2792     END LOOP;
2793 
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
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
2931        AND b.accounting_line_code           = w.accounting_line_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
3050       (p_location => l_log_module);
3051 END record_updated_ac;
3052 
3053 --=============================================================================
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
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
3173             s.line_definition_owner_code IS NOT NULL);
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 
3307 --=============================================================================
3308 --
3309 -- Name: update_group_number
3310 -- Description: This API update the product rule in global aad group arry with
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
3462     trace(p_msg    => 'END LOOP: deleted oracle aads',
3463           p_module => l_log_module,
3464           p_level  => C_LEVEL_PROCEDURE);
3465   END IF;
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
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
3605        AND b.segment_rule_code      = w.segment_rule_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
3734        AND w.amb_context_code               = g_amb_context_code
3735        AND w.analytical_criterion_type_code = C_OWNER_ORACLE
3736        AND NOT EXISTS
3737            (SELECT 1
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,
3872             p_level  => C_LEVEL_PROCEDURE);
3873     END IF;
3874 
3875     record_deleted_desc
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
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
4009           ,p_accounting_attribute_code => l_comp.accounting_attribute_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',
4134           p_module => l_log_module,
4135           p_level  => C_LEVEL_PROCEDURE);
4136   END IF;
4137 
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
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
4269             NVL(bs.accounting_coa_id,C_NUM)   <> NVL(bw.accounting_coa_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;
4388 
4389     record_updated_ms
4390           (p_mapping_set_code => l_comp.mapping_set_code
4391           ,p_merge_impact     => C_MERGE_IMPACT_UPDATED);
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
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
4522             ,p_input_value_constant      => l_comp.input_value_constant
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'
4644           ,p_component_key           => l_key
4645           ,p_property                => 'DESCRIPTION'
4646           ,p_old_value               => l_comp.w_description
4647           ,p_new_value               => l_comp.s_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
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
4768           ,s.input_source_code            s_input_source_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'
4866             ,p_component_key           => l_key
4867             ,p_property                => 'VALUE'
4868             ,p_old_value               => '#VALUE_TYPE_CODE#='||l_comp.w_value_type_code
4869             ,p_old_source_app_id       => NVL(l_comp.w_value_source_app_id,
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
4982           ,tw.description                 w_description
4983           ,bs.transaction_coa_id          s_transaction_coa_id
4984           ,bw.transaction_coa_id          w_transaction_coa_id
4985           ,bs.enabled_flag                s_enabled_flag
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
5113 IS
5114   CURSOR c_comp IS
5115     SELECT s.description_type_code
5116           ,s.description_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(2000);
5169   l_working_condition   VARCHAR2(2000);
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       l_working_condition := xla_conditions_pkg.display_condition
5218                 (p_description_prio_id       => l_comp.w_description_prio_id
5219                 ,p_chart_of_accounts_id      => l_comp.w_transaction_coa_id
5220                 ,p_context                   => 'D');
5221 
5222       l_staging_condition := xla_conditions_pkg.display_condition
5223                 (p_description_prio_id       => l_comp.s_description_prio_id
5224                 ,p_chart_of_accounts_id      => l_comp.s_transaction_coa_id
5225                 ,p_context                   => 'D');
5226 
5227       IF (l_working_condition <> l_staging_condition) THEN
5228         l_updated := TRUE;
5229         record_updated_property
5230             (p_component_type          => 'AMB_DESC_PRIO'
5231             ,p_component_key           => l_key
5232             ,p_property                => 'CONDITION'
5233             ,p_old_value               => l_working_condition
5234             ,p_new_value               => l_staging_condition);
5235       END IF;
5236 
5237       IF (l_updated) THEN
5238         IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5239           trace(p_msg    => 'LOOP: updated desc prio '||
5240                             '- description_type_code = '||l_comp.description_type_code||
5241                             ', description_code = '||l_comp.description_code||
5242                             ', user_sequence = '||l_comp.user_sequence||
5243                             ', merge_impact = '||C_MERGE_IMPACT_UPDATED,
5244                 p_module => l_log_module,
5245                 p_level  => C_LEVEL_PROCEDURE);
5246         END IF;
5247 
5248         l_updated := FALSE;
5249         record_updated_desc_priority
5250             (p_description_type_code   => l_comp.description_type_code
5251             ,p_description_code        => l_comp.description_code
5252             ,p_user_sequence           => l_comp.user_sequence
5253             ,p_merge_impact            => C_MERGE_IMPACT_UPDATED);
5254       END IF;
5255     ELSE
5256 
5257       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5258         trace(p_msg    => 'LOOP: updated desc prio '||
5259                           '- description_type_code = '||l_comp.description_type_code||
5260                           ', description_code = '||l_comp.description_code||
5261                           ', user_sequence = '||l_comp.user_sequence||
5262                           ', merge_impact = '||l_comp.merge_impact,
5263               p_module => l_log_module,
5264               p_level  => C_LEVEL_PROCEDURE);
5265       END IF;
5266 
5267       record_updated_desc_priority
5268             (p_description_type_code   => l_comp.description_type_code
5269             ,p_description_code        => l_comp.description_code
5270             ,p_user_sequence           => l_comp.user_sequence
5271             ,p_merge_impact            => l_comp.merge_impact);
5272     END IF;
5273   END LOOP;
5274 
5275   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5276     trace(p_msg    => 'END LOOP: updated desc priorities',
5277           p_module => l_log_module,
5278           p_level  => C_LEVEL_PROCEDURE);
5279   END IF;
5280 
5281   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5282     trace(p_msg    => 'END of function compare_desc_priorities',
5283           p_module => l_log_module,
5284           p_level  => C_LEVEL_PROCEDURE);
5285   END IF;
5286 
5287 EXCEPTION
5288   WHEN xla_exceptions_pkg.application_exception THEN
5289     RAISE;
5290   WHEN OTHERS THEN
5291    xla_exceptions_pkg.raise_message
5292       (p_location => l_log_module);
5293 END compare_desc_priorities;
5294 
5295 
5296 --=============================================================================
5297 --
5298 -- Name: compare_acs
5299 -- Description:
5300 --
5301 --=============================================================================
5302 PROCEDURE compare_acs
5303 IS
5304   CURSOR c_comp IS
5305     SELECT ts.analytical_criterion_type_code
5306           ,ts.analytical_criterion_code
5307           ,ts.name                        s_name
5308           ,tw.name                        w_name
5309           ,ts.description                 s_description
5310           ,tw.description                 w_description
5311           ,bs.balancing_flag              s_balancing_flag
5312           ,bw.balancing_flag              w_balancing_flag
5313           ,bs.display_order               s_display_order
5314           ,bw.display_order               w_display_order
5315           ,bs.enabled_flag                s_enabled_flag
5316           ,bw.enabled_flag                w_enabled_flag
5317           ,bs.year_end_carry_forward_code s_year_end_carry_forward_code
5318           ,bw.year_end_carry_forward_code w_year_end_carry_forward_code
5319           ,bs.display_in_inquiries_flag   s_display_in_inquiries_flag
5320           ,bw.display_in_inquiries_flag   w_display_in_inquiries_flag
5321           ,bs.criterion_value_code        s_criterion_value_code
5322           ,bw.criterion_value_code        w_criterion_value_code
5323       FROM xla_analytical_hdrs_b bs
5324            JOIN xla_analytical_hdrs_tl ts
5325            ON  ts.amb_context_code               = bs.amb_context_code
5326            AND ts.analytical_criterion_type_code = bs.analytical_criterion_type_code
5327            AND ts.analytical_criterion_code      = bs.analytical_criterion_code
5328            AND ts.language                       = USERENV('LANG')
5329            JOIN xla_analytical_hdrs_b bw
5330            ON  bw.amb_context_code               = g_amb_context_code
5331            AND bw.analytical_criterion_type_code = bs.analytical_criterion_type_code
5332            AND bw.analytical_criterion_code      = bs.analytical_criterion_code
5333            JOIN xla_analytical_hdrs_tl tw
5334            ON  tw.amb_context_code               = bw.amb_context_code
5335            AND tw.analytical_criterion_type_code = bw.analytical_criterion_type_code
5336            AND tw.analytical_criterion_code      = bw.analytical_criterion_code
5337            AND tw.language                       = USERENV('LANG')
5338      WHERE bs.amb_context_code = g_staging_context_code
5339        AND (ts.name                        <> tw.name                        OR
5340             NVL(ts.description,C_CHAR)     <> NVL(tw.description,C_CHAR)     OR
5341             bs.balancing_flag              <> bw.balancing_flag              OR
5342             bs.display_order               <> bw.display_order               OR
5343             bs.enabled_flag                <> bw.enabled_flag                OR
5344             NVL(bs.year_end_carry_forward_code,C_CHAR) <>
5345                                               NVL(bw.year_end_carry_forward_code,C_CHAR) OR
5346             bs.display_in_inquiries_flag   <> bw.display_in_inquiries_flag     OR
5347             bs.criterion_value_code        <> bw.criterion_value_code);
5348 
5349   l_key                 VARCHAR2(240);
5350   l_log_module          VARCHAR2(240);
5351 BEGIN
5352   IF g_log_enabled THEN
5353     l_log_module := C_DEFAULT_MODULE||'.compare_acs';
5354   END IF;
5355 
5356   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5357     trace(p_msg    => 'BEGIN of function compare_acs',
5358           p_module => l_log_module,
5359           p_level  => C_LEVEL_PROCEDURE);
5360   END IF;
5361 
5362   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5363     trace(p_msg    => 'BEGIN LOOP: updated acs',
5364           p_module => l_log_module,
5365           p_level  => C_LEVEL_PROCEDURE);
5366   END IF;
5367 
5368   FOR l_comp in c_comp LOOP
5369 
5370     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
5371              l_comp.analytical_criterion_code;
5372 
5373     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5374       trace(p_msg    => 'LOOP: updated ac - '||l_key,
5375             p_module => l_log_module,
5376             p_level  => C_LEVEL_PROCEDURE);
5377     END IF;
5378 
5379     IF (l_comp.s_name <> l_comp.w_name) THEN
5380       record_updated_property
5381           (p_component_type          => 'AMB_AC'
5382           ,p_component_key           => l_key
5383           ,p_property                => 'NAME'
5384           ,p_old_value               => l_comp.w_name
5385           ,p_new_value               => l_comp.s_name);
5386     END IF;
5387 
5388     IF (l_comp.s_description <> l_comp.w_description) THEN
5389       record_updated_property
5390           (p_component_type          => 'AMB_AC'
5391           ,p_component_key           => l_key
5392           ,p_property                => 'DESCRIPTION'
5393           ,p_old_value               => l_comp.w_description
5394           ,p_new_value               => l_comp.s_description);
5395     END IF;
5396 
5397     IF (l_comp.s_balancing_flag <> l_comp.w_balancing_flag) THEN
5398       record_updated_property
5399           (p_component_type          => 'AMB_AC'
5400           ,p_component_key           => l_key
5401           ,p_property                => 'MAINTAIN_BALANCE'
5402           ,p_old_value               => l_comp.w_balancing_flag
5403           ,p_new_value               => l_comp.s_balancing_flag);
5404     END IF;
5405 
5406     IF (l_comp.s_display_order <> l_comp.w_display_order) THEN
5407       record_updated_property
5408           (p_component_type          => 'AMB_AC'
5409           ,p_component_key           => l_key
5410           ,p_property                => 'DISPLAY_ORDER'
5411           ,p_old_value               => l_comp.w_display_order
5412           ,p_new_value               => l_comp.s_display_order);
5413     END IF;
5414 
5415     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
5416       record_updated_property
5417           (p_component_type          => 'AMB_AC'
5418           ,p_component_key           => l_key
5419           ,p_property                => 'ENABLED'
5420           ,p_old_value               => l_comp.w_enabled_flag
5421           ,p_new_value               => l_comp.s_enabled_flag
5422           ,p_lookup_type             => 'XLA_YES_NO');
5423     END IF;
5424 
5425     IF (NVL(l_comp.s_year_end_carry_forward_code,C_CHAR) <>
5426         NVL(l_comp.w_year_end_carry_forward_code,C_CHAR)) THEN
5427       record_updated_property
5428           (p_component_type          => 'AMB_AC'
5429           ,p_component_key           => l_key
5430           ,p_property                => 'YEAR_END_CARRY_FORWARD'
5431           ,p_old_value               => l_comp.w_year_end_carry_forward_code
5432           ,p_new_value               => l_comp.s_year_end_carry_forward_code
5433           ,p_lookup_type             => 'XLA_YEAR_END_CARRY_FORWARD');
5434     END IF;
5435 
5436     IF (l_comp.s_display_in_inquiries_flag <> l_comp.w_display_in_inquiries_flag) THEN
5437       record_updated_property
5438           (p_component_type          => 'AMB_AC'
5439           ,p_component_key           => l_key
5440           ,p_property                => 'DISPLAY_IN_INQUIRIES_FLAG'
5441           ,p_old_value               => l_comp.w_display_in_inquiries_flag
5442           ,p_new_value               => l_comp.s_display_in_inquiries_flag
5443           ,p_lookup_type             => 'XLA_YES_NO');
5444     END IF;
5445 
5446     IF (l_comp.s_criterion_value_code <> l_comp.w_criterion_value_code) THEN
5447       record_updated_property
5448           (p_component_type          => 'AMB_AC'
5449           ,p_component_key           => l_key
5450           ,p_property                => 'CRITERION_VALUE_CODE'
5451           ,p_old_value               => l_comp.w_criterion_value_code
5452           ,p_new_value               => l_comp.s_criterion_value_code);
5453     END IF;
5454 
5455     record_updated_ac(p_ac_type_code => l_comp.analytical_criterion_type_code
5456                      ,p_ac_code      => l_comp.analytical_criterion_code
5457                      ,p_merge_impact => C_MERGE_IMPACT_UPDATED);
5458 
5459   END LOOP;
5460 
5461   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5462     trace(p_msg    => 'END LOOP: updated acs',
5463           p_module => l_log_module,
5464           p_level  => C_LEVEL_PROCEDURE);
5465   END IF;
5466 
5467   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5468     trace(p_msg    => 'END of function compare_acs',
5469           p_module => l_log_module,
5470           p_level  => C_LEVEL_PROCEDURE);
5471   END IF;
5472 
5473 EXCEPTION
5474   WHEN xla_exceptions_pkg.application_exception THEN
5475     RAISE;
5476   WHEN OTHERS THEN
5477    xla_exceptions_pkg.raise_message
5478       (p_location => l_log_module);
5479 END compare_acs;
5480 
5481 
5482 --=============================================================================
5483 --
5484 -- Name: compare_ac_details
5485 -- Description:
5486 --
5487 --=============================================================================
5488 PROCEDURE compare_ac_details
5489 IS
5490   CURSOR c_comp IS
5491     SELECT ts.analytical_criterion_type_code
5492           ,ts.analytical_criterion_code
5493           ,ts.analytical_detail_code
5494           ,CASE WHEN bw.analytical_detail_code IS NULL
5495                 THEN C_MERGE_IMPACT_NEW
5496                 ELSE C_MERGE_IMPACT_UPDATED
5497                 END                       merge_impact
5498           ,ts.name                        s_name
5499           ,tw.name                        w_name
5500           ,ts.description                 s_description
5501           ,tw.description                 w_description
5502           ,bs.grouping_order              s_grouping_order
5503           ,bw.grouping_order              w_grouping_order
5504           ,bs.data_type_code              s_data_type_code
5505           ,bw.data_type_code              w_data_type_code
5506       FROM xla_analytical_dtls_b bs
5507            JOIN xla_analytical_hdrs_b hw
5508            ON  hw.amb_context_code               = g_amb_context_code
5509            AND hw.analytical_criterion_type_code = bs.analytical_criterion_type_code
5510            AND hw.analytical_criterion_code      = bs.analytical_criterion_code
5511            JOIN xla_analytical_dtls_tl ts
5512            ON  ts.amb_context_code               = bs.amb_context_code
5513            AND ts.analytical_criterion_type_code = bs.analytical_criterion_type_code
5514            AND ts.analytical_criterion_code      = bs.analytical_criterion_code
5515            AND ts.analytical_detail_code         = bs.analytical_detail_code
5516            AND ts.language                       = USERENV('LANG')
5517            LEFT OUTER JOIN xla_analytical_dtls_b bw
5518            ON  bw.amb_context_code               = g_amb_context_code
5519            AND bw.analytical_criterion_type_code = bs.analytical_criterion_type_code
5520            AND bw.analytical_criterion_code      = bs.analytical_criterion_code
5521            AND bw.analytical_detail_code         = bs.analytical_detail_code
5522            LEFT OUTER JOIN xla_analytical_dtls_tl tw
5523            ON  tw.amb_context_code               = bw.amb_context_code
5524            AND tw.analytical_criterion_type_code = bw.analytical_criterion_type_code
5525            AND tw.analytical_criterion_code      = bw.analytical_criterion_code
5526            AND tw.analytical_detail_code         = bw.analytical_detail_code
5527            AND tw.language                       = USERENV('LANG')
5528      WHERE bs.amb_context_code     = g_staging_context_code
5529        AND (bw.analytical_detail_code IS NULL                                OR
5530             NVL(ts.name,C_CHAR)            <> NVL(tw.name,C_CHAR)            OR
5531             NVL(ts.description,C_CHAR)     <> NVL(tw.description,C_CHAR)     OR
5532             NVL(bs.grouping_order,C_NUM)   <> NVL(bw.grouping_order,C_NUM)   OR
5533             NVL(bs.data_type_code,C_CHAR)  <> NVL(bw.data_type_code,C_CHAR));
5534 
5535   l_key                 VARCHAR2(240);
5536   l_log_module          VARCHAR2(240);
5537 BEGIN
5538   IF g_log_enabled THEN
5539     l_log_module := C_DEFAULT_MODULE||'.compare_ac_details';
5540   END IF;
5541 
5542   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5543     trace(p_msg    => 'BEGIN of function compare_ac_details',
5544           p_module => l_log_module,
5545           p_level  => C_LEVEL_PROCEDURE);
5546   END IF;
5547 
5548   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5549     trace(p_msg    => 'BEGIN LOOP: updated ac details',
5550           p_module => l_log_module,
5551           p_level  => C_LEVEL_PROCEDURE);
5552   END IF;
5553 
5554   FOR l_comp in c_comp LOOP
5555 
5556     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5557       trace(p_msg    => 'LOOP: updated ac detail - '||
5558                         l_comp.analytical_criterion_type_code||C_CHAR||
5559                         l_comp.analytical_criterion_code||C_CHAR||
5560                         l_comp.analytical_detail_code||C_CHAR||
5561                         l_comp.merge_impact,
5562             p_module => l_log_module,
5563             p_level  => C_LEVEL_PROCEDURE);
5564     END IF;
5565 
5566     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
5567 
5568       l_key := l_comp.analytical_criterion_type_code||C_CHAR||
5569                l_comp.analytical_criterion_code||C_CHAR||
5570                l_comp.analytical_detail_code;
5571 
5572       IF (l_comp.s_name <> l_comp.w_name) THEN
5573         record_updated_property
5574             (p_component_type          => 'AMB_AC_DETAIL'
5575             ,p_component_key           => l_key
5576             ,p_property                => 'NAME'
5577             ,p_old_value               => l_comp.w_name
5578             ,p_new_value               => l_comp.s_name);
5579       END IF;
5580 
5581       IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
5582         record_updated_property
5583             (p_component_type          => 'AMB_AC_DETAIL'
5584             ,p_component_key           => l_key
5585             ,p_property                => 'DESCRIPTION'
5586             ,p_old_value               => l_comp.w_description
5587             ,p_new_value               => l_comp.s_description);
5588       END IF;
5589 
5590       IF (l_comp.s_grouping_order <> l_comp.w_grouping_order) THEN
5591         record_updated_property
5592             (p_component_type          => 'AMB_AC_DETAIL'
5593             ,p_component_key           => l_key
5594             ,p_property                => 'GROUPING_ORDER'
5595             ,p_old_value               => l_comp.w_grouping_order
5596             ,p_new_value               => l_comp.s_grouping_order);
5597       END IF;
5598 
5599       IF (NVL(l_comp.s_data_type_code,C_CHAR) <> NVL(l_comp.w_data_type_code,C_CHAR)) THEN
5600         record_updated_property
5601             (p_component_type          => 'AMB_AC_DETAIL'
5602             ,p_component_key           => l_key
5603             ,p_property                => 'DATA_TYPE'
5604             ,p_old_value               => l_comp.w_data_type_code
5605             ,p_new_value               => l_comp.s_data_type_code
5606             ,p_lookup_type             => 'XLA_DATA_TYPE');
5607       END IF;
5608 
5609     END IF;
5610 
5611     record_updated_ac_detail
5612           (p_ac_type_code   => l_comp.analytical_criterion_type_code
5613           ,p_ac_code        => l_comp.analytical_criterion_code
5614           ,p_ac_detail_code => l_comp.analytical_detail_code
5615           ,p_merge_impact   => l_comp.merge_impact);
5616 
5617   END LOOP;
5618 
5619   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5620     trace(p_msg    => 'END LOOP: updated ac details',
5621           p_module => l_log_module,
5622           p_level  => C_LEVEL_PROCEDURE);
5623   END IF;
5624 
5625   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5626     trace(p_msg    => 'END of function compare_ac_details',
5627           p_module => l_log_module,
5628           p_level  => C_LEVEL_PROCEDURE);
5629   END IF;
5630 
5631 EXCEPTION
5632   WHEN xla_exceptions_pkg.application_exception THEN
5633     RAISE;
5634   WHEN OTHERS THEN
5635    xla_exceptions_pkg.raise_message
5636       (p_location => l_log_module);
5637 END compare_ac_details;
5638 
5639 --=============================================================================
5640 --
5641 -- Name: compare_ac_sources
5642 -- Description:
5643 --
5644 --=============================================================================
5645 PROCEDURE compare_ac_sources
5646 IS
5647   CURSOR c_comp IS
5648     SELECT s.analytical_criterion_type_code
5649          , s.analytical_criterion_code
5650          , s.analytical_detail_code
5651          , s.entity_code
5652          , s.event_class_code
5653          , s.application_id
5654          , s.source_type_code        s_source_type_code
5655          , s.source_code             s_source_code
5656          , s.source_application_id   s_source_application_id
5657          , w.source_type_code        w_source_type_code
5658          , w.source_code             w_source_code
5659          , w.source_application_id   w_source_application_id
5660       FROM xla_analytical_sources s
5661            JOIN xla_analytical_dtls_b b
5662            ON  b.amb_context_code                = g_amb_context_code
5663            AND b.analytical_criterion_type_code  = s.analytical_criterion_type_code
5664            AND b.analytical_criterion_code       = s.analytical_criterion_code
5665            AND b.analytical_detail_code          = s.analytical_detail_code
5666            LEFT OUTER JOIN xla_analytical_sources w
5667            ON  w.amb_context_code               = g_amb_context_code
5668            AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
5669            AND w.analytical_criterion_code      = s.analytical_criterion_code
5670            AND w.analytical_detail_code         = s.analytical_detail_code
5671            AND w.entity_code                    = s.entity_code
5672            AND w.event_class_code               = s.event_class_code
5673            AND w.application_id                 = s.application_id
5674      WHERE s.amb_context_code                   = g_staging_context_code
5675        AND (w.source_application_id IS NULL OR
5676             NVL(w.source_type_code,C_CHAR)      <> NVL(s.source_type_code,C_CHAR) OR
5677             NVL(w.source_code,C_CHAR)           <> NVL(s.source_code,C_CHAR) OR
5678             NVL(w.source_application_id,C_NUM)  <> NVL(s.source_application_id,C_NUM))
5679      UNION
5680     SELECT w.analytical_criterion_type_code
5681          , w.analytical_criterion_code
5682          , w.analytical_detail_code
5683          , w.entity_code
5684          , w.event_class_code
5685          , w.application_id
5686          , NULL
5687          , NULL
5688          , NULL
5689          , w.source_type_code
5690          , w.source_code
5691          , w.source_application_id
5692       FROM xla_analytical_sources w
5693          , xla_analytical_dtls_b b
5694      WHERE w.amb_context_code                = g_amb_context_code
5695        AND b.amb_context_code                = g_staging_context_code
5696        AND b.analytical_criterion_type_code  = w.analytical_criterion_type_code
5697        AND b.analytical_criterion_code       = w.analytical_criterion_code
5698        AND b.analytical_detail_code          = w.analytical_detail_code
5699        AND NOT EXISTS
5700            (SELECT 1
5701               FROM xla_analytical_sources s
5702              WHERE s.amb_context_code               = g_staging_context_code
5703                AND s.analytical_criterion_type_code = w.analytical_criterion_type_code
5704                AND s.analytical_criterion_code      = w.analytical_criterion_code
5705                AND s.analytical_detail_code         = w.analytical_detail_code
5706                AND s.entity_code                    = w.entity_code
5707                AND s.event_class_code               = w.event_class_code
5708                AND s.application_id                 = w.application_id);
5709 
5710   l_key                 VARCHAR2(4000);
5711   l_parent_key          VARCHAR2(240);
5712   l_log_module          VARCHAR2(240);
5713 BEGIN
5714   IF g_log_enabled THEN
5715     l_log_module := C_DEFAULT_MODULE||'.compare_ac_sources';
5716   END IF;
5717 
5718   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5719     trace(p_msg    => 'BEGIN of function compare_ac_sources',
5720           p_module => l_log_module,
5721           p_level  => C_LEVEL_PROCEDURE);
5722   END IF;
5723 
5724   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5725     trace(p_msg    => 'BEGIN LOOP: updated ac sources',
5726           p_module => l_log_module,
5727           p_level  => C_LEVEL_PROCEDURE);
5728   END IF;
5729 
5730   FOR l_comp IN c_comp LOOP
5731     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5732       trace(p_msg    => 'LOOP 1: updated ac sources - '||l_comp.analytical_criterion_type_code,
5733             p_module => l_log_module,
5734             p_level  => C_LEVEL_PROCEDURE);
5735     END IF;
5736 
5737     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
5738              l_comp.analytical_criterion_code||C_CHAR||
5739              l_comp.analytical_detail_code||C_CHAR||
5740              l_comp.entity_code||C_CHAR||
5741              l_comp.event_class_code||C_CHAR||
5742              l_comp.application_id;
5743 
5744     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5745       trace(p_msg    => 'LOOP: updated ac sources - '||l_key,
5746             p_module => l_log_module,
5747             p_level  => C_LEVEL_PROCEDURE);
5748     END IF;
5749 
5750     record_updated_source(p_component_type       => 'AMB_AC_SOURCE'
5751                          ,p_component_key        => l_key
5752                          ,p_property             => 'SOURCE_CODE'
5753                          ,p_old_source_app_id    => l_comp.w_source_application_id
5754                          ,p_old_source_type_code => l_comp.w_source_type_code
5755                          ,p_old_source_code      => l_comp.w_source_code
5756                          ,p_new_source_app_id    => l_comp.s_source_application_id
5757                          ,p_new_source_type_code => l_comp.s_source_type_code
5758                          ,p_new_source_code      => l_comp.s_source_code);
5759 
5760     record_updated_component
5761             (p_parent_component_type => 'AMB_AC_DETAIL'
5762             ,p_parent_component_key  => l_comp.analytical_criterion_type_code||C_CHAR||
5763                                         l_comp.analytical_criterion_code||C_CHAR||
5764                                         l_comp.analytical_detail_code
5765             ,p_component_type        => 'AMB_AC_SOURCE'
5766             ,p_component_key         => l_key
5767             ,p_merge_impact          => C_MERGE_IMPACT_UPDATED
5768             ,p_event_class_code      => l_comp.event_class_code
5769             ,p_event_type_code       => NULL
5770             ,p_component_owner_code  => NULL
5771             ,p_component_code        => l_comp.event_class_code);
5772 
5773     record_updated_ac_detail
5774           (p_ac_type_code   => l_comp.analytical_criterion_type_code
5775           ,p_ac_code        => l_comp.analytical_criterion_code
5776           ,p_ac_detail_code => l_comp.analytical_detail_code
5777           ,p_merge_impact   => C_MERGE_IMPACT_UPDATED);
5778 
5779   END LOOP;
5780 
5781   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5782     trace(p_msg    => 'END LOOP: updated ac sources',
5783           p_module => l_log_module,
5784           p_level  => C_LEVEL_PROCEDURE);
5785   END IF;
5786 
5787   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5788     trace(p_msg    => 'END of function compare_ac_sources',
5789           p_module => l_log_module,
5790           p_level  => C_LEVEL_PROCEDURE);
5791   END IF;
5792 
5793 EXCEPTION
5794   WHEN xla_exceptions_pkg.application_exception THEN
5795     RAISE;
5796   WHEN OTHERS THEN
5797    xla_exceptions_pkg.raise_message
5798       (p_location => l_log_module);
5799 END compare_ac_sources;
5800 
5801 --=============================================================================
5802 --
5803 -- Name: compare_jlt_acct_attrs
5804 -- Description:
5805 --
5806 --=============================================================================
5807 PROCEDURE compare_jlt_acct_attrs
5808 IS
5809   CURSOR c_comp IS
5810     SELECT s.event_class_code
5811          , s.accounting_line_type_code
5812          , s.accounting_line_code
5813          , s.accounting_attribute_code
5814          , CASE WHEN w.application_id IS NULL
5815                 THEN C_MERGE_IMPACT_NEW
5816                 ELSE C_MERGE_IMPACT_UPDATED
5817                 END                    merge_impact
5818          , s.source_application_id     s_source_application_id
5819          , w.source_application_id     w_source_application_id
5820          , s.source_type_code          s_source_type_code
5821          , w.source_type_code          w_source_type_code
5822          , s.source_code               s_source_code
5823          , w.source_code               w_source_code
5824          , s.event_class_default_flag  s_event_class_default_flag
5825          , w.event_class_default_flag  w_event_class_default_flag
5826       FROM xla_jlt_acct_attrs s
5827            JOIN xla_acct_line_types_b b
5828            ON  b.application_id            = g_application_id
5829            AND b.amb_context_code          = g_amb_context_code
5830            AND b.event_class_code          = s.event_class_code
5831            AND b.accounting_line_type_code = s.accounting_line_type_code
5832            AND b.accounting_line_code      = s.accounting_line_code
5833            LEFT OUTER JOIN xla_jlt_acct_attrs w
5834            ON  w.application_id            = g_application_id
5835            AND w.amb_context_code          = g_amb_context_code
5836            AND w.event_class_code          = s.event_class_code
5837            AND w.accounting_line_type_code = s.accounting_line_type_code
5838            AND w.accounting_line_code      = s.accounting_line_code
5839            AND w.accounting_attribute_code = s.accounting_attribute_code
5840      WHERE s.application_id   = g_application_id
5841        AND s.amb_context_code = g_staging_context_code
5842        AND (w.application_id                       IS NULL OR
5843             NVL(s.event_class_default_flag,C_CHAR) <> NVL(w.event_class_default_flag,C_CHAR) OR
5844             NVL(s.source_application_id,C_NUM)     <> NVL(w.source_application_id,C_NUM) OR
5845             NVL(s.source_type_code,C_CHAR)         <> NVL(w.source_type_code,C_CHAR) OR
5846             NVL(s.source_code,C_CHAR)              <> NVL(w.source_code,C_CHAR));
5847 
5848   l_key                 VARCHAR2(240);
5849   l_log_module          VARCHAR2(240);
5850 BEGIN
5851   IF g_log_enabled THEN
5852     l_log_module := C_DEFAULT_MODULE||'.compare_jlt_acct_attrs';
5853   END IF;
5854 
5855   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5856     trace(p_msg    => 'BEGIN of function compare_jlt_acct_attrs',
5857           p_module => l_log_module,
5858           p_level  => C_LEVEL_PROCEDURE);
5859   END IF;
5860 
5861   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5862     trace(p_msg    => 'BEGIN LOOP: updated jlt acct attrs',
5863           p_module => l_log_module,
5864           p_level  => C_LEVEL_PROCEDURE);
5865   END IF;
5866 
5867   FOR l_comp IN c_comp LOOP
5868 
5869     l_key := l_comp.event_class_code||C_CHAR||
5870              l_comp.accounting_line_type_code||C_CHAR||
5871              l_comp.accounting_line_code||C_CHAR||
5872              l_comp.accounting_attribute_code;
5873 
5874     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5875       trace(p_msg    => 'LOOP: updated jlt acct attr - '||l_comp.merge_impact,
5876             p_module => l_log_module,
5877             p_level  => C_LEVEL_PROCEDURE);
5878       trace(p_msg    => 'l_key = '||l_key,
5879             p_module => l_log_module,
5880             p_level  => C_LEVEL_PROCEDURE);
5881     END IF;
5882 
5883     record_updated_jlt_acct_attr
5884           (p_event_class_code          => l_comp.event_class_code
5885           ,p_accounting_line_type_code => l_comp.accounting_line_type_code
5886           ,p_accounting_line_code      => l_comp.accounting_line_code
5887           ,p_accounting_attribute_code => l_comp.accounting_attribute_code
5888           ,p_merge_impact              => l_comp.merge_impact);
5889 
5890     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
5891 
5892       IF (l_comp.s_event_class_default_flag <> l_comp.w_event_class_default_flag) THEN
5893         record_updated_property
5894           (p_component_type          => 'AMB_JLT_ACCT_ATTR'
5895           ,p_component_key           => l_key
5896           ,p_property                => 'EVENT_CLASS_DEFAULT_FLAG'
5897           ,p_old_value               => l_comp.w_event_class_default_flag
5898           ,p_new_value               => l_comp.s_event_class_default_flag
5899           ,p_lookup_type             => 'XLA_YES_NO');
5900       END IF;
5901 
5902       IF (NVL(l_comp.w_source_application_id,C_NUM) <> NVL(l_comp.s_source_application_id,C_NUM) OR
5903           NVL(l_comp.w_source_type_code,C_CHAR) <> NVL(l_comp.s_source_type_code,C_CHAR) OR
5904           NVL(l_comp.w_source_code,C_CHAR)      <> NVL(l_comp.s_source_code,C_CHAR)) THEN
5905         record_updated_source(p_component_type       => 'AMB_JLT_ACCT_ATTR'
5906                            ,p_component_key        => l_key
5907                            ,p_property             => 'SOURCE_CODE'
5908                            ,p_old_source_app_id    => l_comp.w_source_application_id
5909                            ,p_old_source_type_code => l_comp.w_source_type_code
5910                            ,p_old_source_code      => l_comp.w_source_code
5911                            ,p_new_source_app_id    => l_comp.s_source_application_id
5912                            ,p_new_source_type_code => l_comp.s_source_type_code
5913                            ,p_new_source_code      => l_comp.s_source_code);
5914       END IF;
5915     END IF;
5916 
5917   END LOOP;
5918 
5919   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5920     trace(p_msg    => 'END LOOP: updated jlt acct attrs',
5921           p_module => l_log_module,
5922           p_level  => C_LEVEL_PROCEDURE);
5923   END IF;
5924 
5925   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5926     trace(p_msg    => 'END of function compare_jlt_acct_attrs',
5927           p_module => l_log_module,
5928           p_level  => C_LEVEL_PROCEDURE);
5929   END IF;
5930 
5931 EXCEPTION
5932   WHEN xla_exceptions_pkg.application_exception THEN
5933     RAISE;
5934   WHEN OTHERS THEN
5935    xla_exceptions_pkg.raise_message
5936       (p_location => l_log_module);
5937 END compare_jlt_acct_attrs;
5938 
5939 --=============================================================================
5940 --
5941 -- Name: compare_jlts
5942 -- Description:
5943 --
5944 --=============================================================================
5945 PROCEDURE compare_jlts
5946 IS
5947   CURSOR c_comp IS
5948     SELECT ts.entity_code
5949           ,ts.event_class_code
5950           ,ts.accounting_line_type_code acct_line_type_code
5951           ,ts.accounting_line_code      acct_line_code
5952           ,ts.name                      s_name
5953           ,tw.name                      w_name
5954           ,ts.description               s_description
5955           ,tw.description               w_description
5956           ,s.accounting_class_code      s_acct_class_code
5957           ,w.accounting_class_code      w_acct_class_code
5958           ,s.enabled_flag               s_enabled_flag
5959           ,w.enabled_flag               w_enabled_flag
5960           ,s.accounting_entry_type_code s_ae_type_code
5961           ,w.accounting_entry_type_code w_ae_type_code
5962           ,s.natural_side_code          s_natural_side_code
5963           ,w.natural_side_code          w_natural_side_code
5964           ,s.switch_side_flag           s_switch_side_flag
5965           ,w.switch_side_flag           w_switch_side_flag
5966           ,s.merge_duplicate_code       s_merge_duplicate_code
5967           ,w.merge_duplicate_code       w_merge_duplicate_code
5968           ,s.transaction_coa_id         s_trx_coa_id
5969           ,w.transaction_coa_id         w_trx_coa_id
5970           ,s.gl_transfer_mode_code      s_gl_transfer_mode_code
5971           ,w.gl_transfer_mode_code      w_gl_transfer_mode_code
5972           ,s.business_method_code       s_business_method_code
5973           ,w.business_method_code       w_business_method_code
5974           ,s.business_class_code        s_business_class_code
5975           ,w.business_class_code        w_business_class_code
5976           ,s.rounding_class_code        s_rounding_class_code
5977           ,w.rounding_class_code        w_rounding_class_code
5978           ,s.encumbrance_type_id        s_encumbrance_type_id
5979           ,w.encumbrance_type_id        w_encumbrance_type_id
5980           ,s.mpa_option_code            s_mpa_option_code
5981           ,w.mpa_option_code            w_mpa_option_code
5982       FROM xla_acct_line_types_b s
5983            JOIN xla_acct_line_types_tl ts
5984            ON  ts.application_id            = s.application_id
5985            AND ts.amb_context_code          = s.amb_context_code
5986            AND ts.entity_code               = s.entity_code
5987            AND ts.event_class_code          = s.event_class_code
5988            AND ts.accounting_line_type_code = s.accounting_line_type_code
5989            AND ts.accounting_line_code      = s.accounting_line_code
5990            AND ts.accounting_line_code      = s.accounting_line_code
5991            AND ts.language                  = USERENV('LANG')
5992            JOIN xla_acct_line_types_b w
5993            ON  w.application_id            = s.application_id
5994            AND w.entity_code               = s.entity_code
5995            AND w.event_class_code          = s.event_class_code
5996            AND w.accounting_line_type_code = s.accounting_line_type_code
5997            AND w.accounting_line_code      = s.accounting_line_code
5998            JOIN xla_acct_line_types_tl tw
5999            ON  tw.application_id            = w.application_id
6000            AND tw.amb_context_code          = w.amb_context_code
6001            AND tw.entity_code               = w.entity_code
6002            AND tw.event_class_code          = w.event_class_code
6003            AND tw.accounting_line_type_code = w.accounting_line_type_code
6004            AND tw.accounting_line_code      = w.accounting_line_code
6005            AND tw.language                  = USERENV('LANG')
6006      WHERE s.amb_context_code = g_staging_context_code
6007        AND w.amb_context_code = g_amb_context_code;
6008 
6009   l_key                     VARCHAR2(240);
6010   l_staging_condition       VARCHAR2(2000);
6011   l_working_condition       VARCHAR2(2000);
6012   l_updated                 BOOLEAN;
6013 
6014   l_log_module          VARCHAR2(240);
6015 BEGIN
6016   IF g_log_enabled THEN
6017     l_log_module := C_DEFAULT_MODULE||'.compare_jlts';
6018   END IF;
6019 
6020   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6021     trace(p_msg    => 'BEGIN of function compare_jlts',
6022           p_module => l_log_module,
6023           p_level  => C_LEVEL_PROCEDURE);
6024   END IF;
6025 
6026   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6027     trace(p_msg    => 'BEGIN LOOP: updated jlt',
6028           p_module => l_log_module,
6029           p_level  => C_LEVEL_PROCEDURE);
6030   END IF;
6031 
6032   l_updated    := FALSE;
6033   FOR l_comp in c_comp LOOP
6034 
6035     l_key := l_comp.event_class_code||C_CHAR||
6036              l_comp.acct_line_type_code||C_CHAR||
6037              l_comp.acct_line_code;
6038 
6039     IF (l_comp.s_name <> l_comp.w_name) THEN
6040       l_updated := TRUE;
6041       record_updated_property
6042           (p_component_type          => 'AMB_JLT'
6043           ,p_component_key           => l_key
6044           ,p_property                => 'NAME'
6045           ,p_old_value               => l_comp.w_name
6046           ,p_new_value               => l_comp.s_name);
6047     END IF;
6048 
6049     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
6050       l_updated := TRUE;
6051       record_updated_property
6052           (p_component_type          => 'AMB_JLT'
6053           ,p_component_key           => l_key
6054           ,p_property                => 'DESCRIPTION'
6055           ,p_old_value               => l_comp.w_description
6056           ,p_new_value               => l_comp.s_description);
6057     END IF;
6058 
6059     IF (l_comp.s_acct_class_code <> l_comp.w_acct_class_code) THEN
6060       l_updated := TRUE;
6061       record_updated_property
6062           (p_component_type          => 'AMB_JLT'
6063           ,p_component_key           => l_key
6064           ,p_property                => 'ACCOUNTING_CLASS'
6065           ,p_old_value               => l_comp.w_acct_class_code
6066           ,p_new_value               => l_comp.s_acct_class_code
6067           ,p_lookup_type             => 'XLA_ACCOUNTING_CLASS');
6068     END IF;
6069 
6070     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
6071       l_updated := TRUE;
6072       record_updated_property
6073           (p_component_type          => 'AMB_JLT'
6074           ,p_component_key           => l_key
6075           ,p_property                => 'ENABLED'
6076           ,p_old_value               => l_comp.w_enabled_flag
6077           ,p_new_value               => l_comp.s_enabled_flag
6078           ,p_lookup_type             => 'XLA_YES_NO');
6079     END IF;
6080 
6081     IF (l_comp.s_ae_type_code <> l_comp.w_ae_type_code) THEN
6082       l_updated := TRUE;
6083       record_updated_property
6084           (p_component_type          => 'AMB_JLT'
6085           ,p_component_key           => l_key
6086           ,p_property                => 'ACCOUNTING_ENTRY_TYPE'
6087           ,p_old_value               => l_comp.w_ae_type_code
6088           ,p_new_value               => l_comp.s_ae_type_code
6089           ,p_lookup_type             => 'XLA_BALANCE_TYPE');
6090     END IF;
6091 
6092     IF (l_comp.s_natural_side_code <> l_comp.w_natural_side_code) THEN
6093       l_updated := TRUE;
6094       record_updated_property
6095           (p_component_type          => 'AMB_JLT'
6096           ,p_component_key           => l_key
6097           ,p_property                => 'NATURAL_SIDE'
6098           ,p_old_value               => l_comp.w_natural_side_code
6099           ,p_new_value               => l_comp.s_natural_side_code
6100           ,p_lookup_type             => 'XLA_ACCT_NATURAL_SIDE');
6101     END IF;
6102 
6103     IF (NVL(l_comp.s_switch_side_flag,C_CHAR) <> NVL(l_comp.w_switch_side_flag,C_CHAR)) THEN
6104       l_updated := TRUE;
6105       record_updated_property
6106           (p_component_type          => 'AMB_JLT'
6107           ,p_component_key           => l_key
6108           ,p_property                => 'SWITCH_SIDE'
6109           ,p_old_value               => l_comp.w_switch_side_flag
6110           ,p_new_value               => l_comp.s_switch_side_flag
6111           ,p_lookup_type             => 'XLA_YES_NO');
6112     END IF;
6113 
6114     IF (l_comp.s_merge_duplicate_code <> l_comp.w_merge_duplicate_code) THEN
6115       l_updated := TRUE;
6116       record_updated_property
6117           (p_component_type          => 'AMB_JLT'
6118           ,p_component_key           => l_key
6119           ,p_property                => 'MERGE_DUPLICATE'
6120           ,p_old_value               => l_comp.w_merge_duplicate_code
6121           ,p_new_value               => l_comp.s_merge_duplicate_code
6122           ,p_lookup_type             => 'XLA_MERGE_MATCHING_TYPE');
6123     END IF;
6124 
6125     IF (NVL(l_comp.s_trx_coa_id,C_NUM) <> NVL(l_comp.w_trx_coa_id,C_NUM)) THEN
6126       l_updated := TRUE;
6127       record_updated_property
6128           (p_component_type          => 'AMB_JLT'
6129           ,p_component_key           => l_key
6130           ,p_property                => 'TRANSACTION_COA'
6131           ,p_old_value               => l_comp.w_trx_coa_id
6132           ,p_new_value               => l_comp.s_trx_coa_id);
6133     END IF;
6134 
6135     IF (l_comp.s_gl_transfer_mode_code <> l_comp.w_gl_transfer_mode_code) THEN
6136       l_updated := TRUE;
6137       record_updated_property
6138           (p_component_type          => 'AMB_JLT'
6139           ,p_component_key           => l_key
6140           ,p_property                => 'GL_TRANSFER_MODE'
6141           ,p_old_value               => l_comp.w_gl_transfer_mode_code
6142           ,p_new_value               => l_comp.s_gl_transfer_mode_code
6143           ,p_lookup_type             => 'XLA_ACCT_TRANSFER_MODE');
6144     END IF;
6145 
6146     IF (l_comp.s_business_method_code <> l_comp.w_business_method_code) THEN
6147       l_updated := TRUE;
6148       record_updated_property
6149           (p_component_type          => 'AMB_JLT'
6150           ,p_component_key           => l_key
6151           ,p_property                => 'BUSINESS_METHOD'
6152           ,p_old_value               => l_comp.w_business_method_code
6153           ,p_new_value               => l_comp.s_business_method_code
6154           ,p_lookup_type             => 'XLA_ACCT_TRANSFER_MODE');
6155     END IF;
6156 
6157     IF (NVL(l_comp.s_business_class_code,C_CHAR) <> NVL(l_comp.w_business_class_code,C_CHAR)) THEN
6158       l_updated := TRUE;
6159       record_updated_property
6160           (p_component_type          => 'AMB_JLT'
6161           ,p_component_key           => l_key
6162           ,p_property                => 'BUSINESS_CLASS'
6163           ,p_old_value               => l_comp.w_business_class_code
6164           ,p_new_value               => l_comp.s_business_class_code
6165           ,p_lookup_type             => 'XLA_ACCT_TRANSFER_MODE');
6166     END IF;
6167 
6168     IF (NVL(l_comp.s_encumbrance_type_id,C_NUM) <> NVL(l_comp.w_encumbrance_type_id,C_NUM)) THEN
6169       l_updated := TRUE;
6170       record_updated_property
6171           (p_component_type          => 'AMB_JLT'
6172           ,p_component_key           => l_key
6173           ,p_property                => 'ENCUMBRANCE_TYPE'
6174           ,p_old_value               => l_comp.w_encumbrance_type_id
6175           ,p_new_value               => l_comp.s_encumbrance_type_id);
6176     END IF;
6177 
6178     IF (NVL(l_comp.s_mpa_option_code,C_CHAR) <> NVL(l_comp.w_mpa_option_code,C_CHAR)) THEN
6179       l_updated := TRUE;
6180       record_updated_property
6181           (p_component_type          => 'AMB_JLT'
6182           ,p_component_key           => l_key
6183           ,p_property                => 'MPA_OPTION_CODE'
6184           ,p_old_value               => l_comp.w_mpa_option_code
6185           ,p_new_value               => l_comp.s_mpa_option_code
6186           ,p_lookup_type             => 'XLA_MPA_OPTION');
6187     END IF;
6188 
6189     IF (NVL(l_comp.s_rounding_class_code,C_CHAR) <> NVL(l_comp.w_rounding_class_code,C_CHAR)) THEN
6190       l_updated := TRUE;
6191       record_updated_property
6192           (p_component_type          => 'AMB_JLT'
6193           ,p_component_key           => l_key
6194           ,p_property                => 'ROUNDING_CLASS'
6195           ,p_old_value               => l_comp.w_rounding_class_code
6196           ,p_new_value               => l_comp.s_rounding_class_code
6197           ,p_lookup_type             => 'XLA_ACCOUNTING_CLASS');
6198     END IF;
6199 
6200     l_working_condition := xla_conditions_pkg.display_condition
6201               (p_application_id            => g_application_id
6202               ,p_amb_context_code          => g_amb_context_code
6203               ,p_entity_code               => l_comp.entity_code
6204               ,p_event_class_code          => l_comp.event_class_code
6205               ,p_accounting_line_type_code => l_comp.acct_line_type_code
6206               ,p_accounting_line_code      => l_comp.acct_line_code
6207               ,p_chart_of_accounts_id      => l_comp.w_trx_coa_id
6208               ,p_context                   => 'A');
6209 
6210     l_staging_condition := xla_conditions_pkg.display_condition
6211               (p_application_id            => g_application_id
6212               ,p_amb_context_code          => g_staging_context_code
6213               ,p_entity_code               => l_comp.entity_code
6214               ,p_event_class_code          => l_comp.event_class_code
6215               ,p_accounting_line_type_code => l_comp.acct_line_type_code
6216               ,p_accounting_line_code      => l_comp.acct_line_code
6217               ,p_chart_of_accounts_id      => l_comp.s_trx_coa_id
6218               ,p_context                   => 'A');
6219 
6220     IF (l_working_condition <> l_staging_condition) THEN
6221       l_updated := TRUE;
6222       record_updated_property
6223           (p_component_type          => 'AMB_JLT'
6224           ,p_component_key           => l_key
6225           ,p_property                => 'CONDITION'
6226           ,p_old_value               => l_working_condition
6227           ,p_new_value               => l_staging_condition);
6228     END IF;
6229 
6230     IF (l_updated) THEN
6231       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6232         trace(p_msg    => 'LOOP: updated ac sources - '||l_key,
6233               p_module => l_log_module,
6234               p_level  => C_LEVEL_PROCEDURE);
6235       END IF;
6236 
6237       record_updated_jlt(p_event_class_code          => l_comp.event_class_code
6238                         ,p_accounting_line_type_code => l_comp.acct_line_type_code
6239                         ,p_accounting_line_code      => l_comp.acct_line_code);
6240 
6241       l_updated := FALSE;
6242     END IF;
6243 
6244   END LOOP;
6245 
6246   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6247     trace(p_msg    => 'END LOOP: updated jlt',
6248           p_module => l_log_module,
6249           p_level  => C_LEVEL_PROCEDURE);
6250   END IF;
6251 
6252   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6253     trace(p_msg    => 'END of function compare_jlts',
6254           p_module => l_log_module,
6255           p_level  => C_LEVEL_PROCEDURE);
6256   END IF;
6257 
6258 EXCEPTION
6259   WHEN xla_exceptions_pkg.application_exception THEN
6260     RAISE;
6261   WHEN OTHERS THEN
6262    xla_exceptions_pkg.raise_message
6263       (p_location => l_log_module);
6264 END compare_jlts;
6265 
6266 --=============================================================================
6267 --
6268 -- Name: compare_line_adr_assgns
6269 -- Description:
6270 --
6271 --=============================================================================
6272 PROCEDURE compare_line_adr_assgns
6273 IS
6274   CURSOR c_comp IS
6275     SELECT s.event_class_code
6276          , s.event_type_code
6277          , s.line_definition_owner_code
6278          , s.line_definition_code
6279          , s.accounting_line_type_code
6280          , s.accounting_line_code
6281          , s.flexfield_segment_code
6282          , s.side_code
6283          , l.accounting_coa_id
6284          , CASE WHEN w.application_id IS NULL
6285                 THEN C_MERGE_IMPACT_NEW
6286                 ELSE C_MERGE_IMPACT_UPDATED
6287                 END                merge_impact
6288          , s.segment_rule_appl_id   s_segment_rule_appl_id
6289          , w.segment_rule_appl_id   w_segment_rule_appl_id
6290          , s.segment_rule_type_code s_segment_rule_type_code
6291          , w.segment_rule_type_code w_segment_rule_type_code
6292          , s.segment_rule_code      s_segment_rule_code
6293          , w.segment_rule_code      w_segment_rule_code
6294          , s.inherit_adr_flag       s_inherit_adr_flag
6295          , w.inherit_adr_flag       w_inherit_adr_flag
6296       FROM xla_line_defn_adr_assgns s
6297            JOIN xla_line_definitions_b l
6298            ON  l.application_id              = g_application_id
6299            AND l.amb_context_code            = g_amb_context_code
6300            AND l.event_class_code            = s.event_class_code
6301            AND l.event_type_code             = s.event_type_code
6302            AND l.line_definition_owner_code  = s.line_definition_owner_code
6303            AND l.line_definition_code        = s.line_definition_code
6304            JOIN xla_line_defn_jlt_assgns b
6305            ON  b.application_id              = g_application_id
6306            AND b.amb_context_code            = g_amb_context_code
6307            AND b.event_class_code            = s.event_class_code
6308            AND b.event_type_code             = s.event_type_code
6309            AND b.line_definition_owner_code  = s.line_definition_owner_code
6310            AND b.line_definition_code        = s.line_definition_code
6311            AND b.accounting_line_type_code   = s.accounting_line_type_code
6312            AND b.accounting_line_code        = s.accounting_line_code
6313            LEFT OUTER JOIN xla_line_defn_adr_assgns w
6314            ON  w.application_id                 = g_application_id
6315            AND w.amb_context_code               = g_amb_context_code
6316            AND w.event_class_code               = s.event_class_code
6317            AND w.event_type_code                = s.event_type_code
6318            AND w.line_definition_owner_code     = s.line_definition_owner_code
6319            AND w.line_definition_code           = s.line_definition_code
6320            AND w.accounting_line_type_code      = s.accounting_line_type_code
6321            AND w.accounting_line_code           = s.accounting_line_code
6322            AND w.flexfield_segment_code         = s.flexfield_segment_code
6323      WHERE s.application_id   = g_application_id
6324        AND s.amb_context_code = g_staging_context_code
6325        AND (w.application_id                     IS NULL                                 OR
6326             s.inherit_adr_flag                   <> w.inherit_adr_flag                   OR
6327             NVL(s.segment_rule_appl_id,C_NUM)    <> NVL(w.segment_rule_appl_id,C_NUM)    OR
6328             NVL(s.segment_rule_type_code,C_CHAR) <> NVL(w.segment_rule_type_code,C_CHAR) OR
6329             NVL(s.segment_rule_code,C_CHAR)      <> NVL(w.segment_rule_code,C_CHAR));
6330 
6331   l_key                 VARCHAR2(240);
6332   l_parent_key          VARCHAR2(240);
6333   l_log_module          VARCHAR2(240);
6334 BEGIN
6335   IF g_log_enabled THEN
6336     l_log_module := C_DEFAULT_MODULE||'.compare_line_adr_assgns';
6337   END IF;
6338 
6339   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6340     trace(p_msg    => 'BEGIN of function compare_line_adr_assgns',
6341           p_module => l_log_module,
6342           p_level  => C_LEVEL_PROCEDURE);
6343   END IF;
6344 
6345   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6346     trace(p_msg    => 'BEGIN LOOP: updated line adr assgns',
6347           p_module => l_log_module,
6348           p_level  => C_LEVEL_PROCEDURE);
6349   END IF;
6350 
6351   FOR l_comp IN c_comp LOOP
6352 
6353     l_parent_key := l_comp.event_class_code||C_CHAR||
6354                     l_comp.event_type_code||C_CHAR||
6355                     l_comp.line_definition_owner_code||C_CHAR||
6356                     l_comp.line_definition_code||C_CHAR||
6357                     l_comp.accounting_line_type_code||C_CHAR||
6358                     l_comp.accounting_line_code;
6359 
6360     l_key := l_parent_key||C_CHAR||
6361              l_comp.flexfield_segment_code||C_CHAR||
6362              l_comp.side_code;
6363 
6364     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6365       trace(p_msg    => 'LOOP: updated line adr assgn - '||l_key,
6366             p_module => l_log_module,
6367             p_level  => C_LEVEL_PROCEDURE);
6368     END IF;
6369 
6370     IF (NOT key_exists('LNADR'||C_CHAR||l_key)) THEN
6371       record_updated_component
6372           (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
6373           ,p_parent_component_key  => l_parent_key
6374           ,p_component_type        => 'AMB_ADR_ASSGN'
6375           ,p_component_key         => l_key
6376           ,p_merge_impact          => l_comp.merge_impact
6377           ,p_component_owner_code  => l_comp.accounting_coa_id
6378           ,p_component_code        => l_comp.flexfield_segment_code);
6379 
6380       record_updated_line_assgn
6381           (p_event_class_code           => l_comp.event_class_code
6382           ,p_event_type_code            => l_comp.event_type_code
6383           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6384           ,p_line_definition_code       => l_comp.line_definition_code
6385           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6386           ,p_accounting_line_code       => l_comp.accounting_line_code
6387           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
6388 
6389     END IF;
6390 
6391     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
6392 
6393       IF (l_comp.w_inherit_adr_flag <> l_comp.s_inherit_adr_flag) THEN
6394         record_updated_property
6395               (p_component_type => 'AMB_ADR_ASSGN'
6396               ,p_component_key  => l_key
6397               ,p_property       => 'INHERIT_ADR_FLAG'
6398               ,p_old_value      => l_comp.w_inherit_adr_flag
6399               ,p_new_value      => l_comp.s_inherit_adr_flag
6400               ,p_lookup_type    => 'XLA_YES_NO');
6401 
6402       END IF;
6403 
6404       IF (NVL(l_comp.w_segment_rule_appl_id,C_NUM)    <> NVL(l_comp.s_segment_rule_appl_id,C_NUM) OR
6405           NVL(l_comp.w_segment_rule_type_code,C_CHAR) <> NVL(l_comp.s_segment_rule_type_code,C_CHAR) OR
6406           NVL(l_comp.w_segment_rule_code,C_CHAR)      <> NVL(l_comp.s_segment_rule_code,C_CHAR)) THEN
6407 
6408         l_parent_key := l_key;
6409 
6410         IF (l_comp.s_segment_rule_code IS NOT NULL) THEN
6411 
6412           record_updated_component
6413                  (p_parent_component_type => 'AMB_ADR_ASSGN'
6414                  ,p_parent_component_key  => l_parent_key
6415                  ,p_component_type        => 'AMB_ADR'
6416                  ,p_component_key         => l_comp.s_segment_rule_type_code||C_CHAR||
6417                                              l_comp.s_segment_rule_code
6418                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
6419                  ,p_component_appl_id     => l_comp.s_segment_rule_appl_id
6420                  ,p_component_owner_code  => l_comp.s_segment_rule_type_code
6421                  ,p_component_code        => l_comp.s_segment_rule_code);
6422         END IF;
6423 
6424         IF (l_comp.w_segment_rule_code IS NOT NULL) THEN
6425 
6426           record_updated_component
6427                  (p_parent_component_type => 'AMB_ADR_ASSGN'
6428                  ,p_parent_component_key  => l_parent_key
6429                  ,p_component_type        => 'AMB_ADR'
6430                  ,p_component_key         => l_comp.w_segment_rule_type_code||C_CHAR||
6431                                              l_comp.w_segment_rule_code
6432                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
6433                  ,p_component_appl_id     => l_comp.s_segment_rule_appl_id
6434                  ,p_component_owner_code  => l_comp.w_segment_rule_type_code
6435                  ,p_component_code        => l_comp.w_segment_rule_code);
6436         END IF;
6437       END IF;
6438     END IF;
6439 
6440   END LOOP;
6441 
6442   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6443     trace(p_msg    => 'END LOOP: updated line adr assgns',
6444           p_module => l_log_module,
6445           p_level  => C_LEVEL_PROCEDURE);
6446   END IF;
6447 
6448   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6449     trace(p_msg    => 'END of function compare_line_adr_assgns',
6450           p_module => l_log_module,
6451           p_level  => C_LEVEL_PROCEDURE);
6452   END IF;
6453 
6454 EXCEPTION
6455   WHEN xla_exceptions_pkg.application_exception THEN
6456     RAISE;
6457   WHEN OTHERS THEN
6458    xla_exceptions_pkg.raise_message
6459       (p_location => l_log_module);
6460 END compare_line_adr_assgns;
6461 
6462 
6463 --=============================================================================
6464 --
6465 -- Name: compare_line_ac_assgns
6466 -- Description:
6467 --
6468 --=============================================================================
6469 PROCEDURE compare_line_ac_assgns
6470 IS
6471   CURSOR c_comp IS
6472     SELECT s.event_class_code
6473          , s.event_type_code
6474          , s.line_definition_owner_code
6475          , s.line_definition_code
6476          , s.accounting_line_type_code
6477          , s.accounting_line_code
6478          , s.analytical_criterion_type_code
6479          , s.analytical_criterion_code
6480          , C_MERGE_IMPACT_NEW merge_impact
6481       FROM xla_line_defn_ac_assgns s
6482          , xla_line_defn_jlt_assgns b
6483      WHERE s.application_id   = g_application_id
6484        AND s.amb_context_code = g_staging_context_code
6485        AND b.application_id              = g_application_id
6486        AND b.amb_context_code            = g_amb_context_code
6487        AND b.event_class_code            = s.event_class_code
6488        AND b.event_type_code             = s.event_type_code
6489        AND b.line_definition_owner_code  = s.line_definition_owner_code
6490        AND b.line_definition_code        = s.line_definition_code
6491        AND b.accounting_line_type_code   = s.accounting_line_type_code
6492        AND b.accounting_line_code        = s.accounting_line_code
6493        AND NOT EXISTS
6494            (SELECT 1
6495               FROM xla_line_defn_ac_assgns w
6496              WHERE w.application_id                 = g_application_id
6497                AND w.amb_context_code               = g_amb_context_code
6498                AND w.event_class_code               = s.event_class_code
6499                AND w.event_type_code                = s.event_type_code
6500                AND w.line_definition_owner_code     = s.line_definition_owner_code
6501                AND w.line_definition_code           = s.line_definition_code
6502                AND w.accounting_line_type_code      = s.accounting_line_type_code
6503                AND w.accounting_line_code           = s.accounting_line_code
6504                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
6505                AND w.analytical_criterion_code      = s.analytical_criterion_code);
6506 
6507   l_parent_key          VARCHAR2(240);
6508   l_key                 VARCHAR2(240);
6509   l_log_module          VARCHAR2(240);
6510 BEGIN
6511   IF g_log_enabled THEN
6512     l_log_module := C_DEFAULT_MODULE||'.compare_line_ac_assgns';
6513   END IF;
6514 
6515   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6516     trace(p_msg    => 'BEGIN of function compare_line_ac_assgns',
6517           p_module => l_log_module,
6518           p_level  => C_LEVEL_PROCEDURE);
6519   END IF;
6520 
6521   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6522     trace(p_msg    => 'BEGIN LOOP: updated line ac assgns',
6523           p_module => l_log_module,
6524           p_level  => C_LEVEL_PROCEDURE);
6525   END IF;
6526 
6527   FOR l_comp IN c_comp LOOP
6528 
6529     l_parent_key := l_comp.event_class_code||C_CHAR||
6530                     l_comp.event_type_code||C_CHAR||
6531                     l_comp.line_definition_owner_code||C_CHAR||
6532                     l_comp.line_definition_code||C_CHAR||
6533                     l_comp.accounting_line_type_code||C_CHAR||
6534                     l_comp.accounting_line_code;
6535 
6536     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
6537              l_comp.analytical_criterion_code;
6538 
6539     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6540       trace(p_msg    => 'LOOP: updated line ac assgn',
6541             p_module => l_log_module,
6542             p_level  => C_LEVEL_PROCEDURE);
6543       trace(p_msg    => 'l_parent_key = '||l_parent_key,
6544             p_module => l_log_module,
6545             p_level  => C_LEVEL_PROCEDURE);
6546       trace(p_msg    => 'l_key = '||l_key,
6547             p_module => l_log_module,
6548             p_level  => C_LEVEL_PROCEDURE);
6549     END IF;
6550 
6551     record_updated_component
6552           (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
6553           ,p_parent_component_key  => l_parent_key
6554           ,p_component_type        => 'AMB_AC'
6555           ,p_component_key         => l_key
6556           ,p_merge_impact          => l_comp.merge_impact
6557           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
6558           ,p_component_code        => l_comp.analytical_criterion_code);
6559 
6560     record_updated_line_assgn
6561           (p_event_class_code           => l_comp.event_class_code
6562           ,p_event_type_code            => l_comp.event_type_code
6563           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6564           ,p_line_definition_code       => l_comp.line_definition_code
6565           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6566           ,p_accounting_line_code       => l_comp.accounting_line_code
6567           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
6568 
6569   END LOOP;
6570 
6571   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6572     trace(p_msg    => 'END LOOP: updated line ac assgns',
6573           p_module => l_log_module,
6574           p_level  => C_LEVEL_PROCEDURE);
6575   END IF;
6576 
6577   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6578     trace(p_msg    => 'END of function compare_line_ac_assgns',
6579           p_module => l_log_module,
6580           p_level  => C_LEVEL_PROCEDURE);
6581   END IF;
6582 
6583 EXCEPTION
6584   WHEN xla_exceptions_pkg.application_exception THEN
6585     RAISE;
6586   WHEN OTHERS THEN
6587    xla_exceptions_pkg.raise_message
6588       (p_location => l_log_module);
6589 END compare_line_ac_assgns;
6590 
6591 
6592 --=============================================================================
6593 --
6594 -- Name: compare_mpa_hdr_ac_assgns
6595 -- Description:
6596 --
6597 --=============================================================================
6598 PROCEDURE compare_mpa_hdr_ac_assgns
6599 IS
6600   CURSOR c_comp IS
6601     SELECT s.event_class_code
6602          , s.event_type_code
6603          , s.line_definition_owner_code
6604          , s.line_definition_code
6605          , s.accounting_line_type_code
6606          , s.accounting_line_code
6607          , s.analytical_criterion_type_code
6608          , s.analytical_criterion_code
6609          , C_MERGE_IMPACT_NEW merge_impact
6610       FROM xla_mpa_header_ac_assgns s
6611          , xla_line_defn_jlt_assgns b
6612      WHERE s.application_id   = g_application_id
6613        AND s.amb_context_code = g_staging_context_code
6614        AND b.application_id              = g_application_id
6615        AND b.amb_context_code            = g_amb_context_code
6616        AND b.event_class_code            = s.event_class_code
6617        AND b.event_type_code             = s.event_type_code
6618        AND b.line_definition_owner_code  = s.line_definition_owner_code
6619        AND b.line_definition_code        = s.line_definition_code
6620        AND b.accounting_line_type_code   = s.accounting_line_type_code
6621        AND b.accounting_line_code        = s.accounting_line_code
6622        AND NOT EXISTS
6623            (SELECT 1
6624               FROM xla_mpa_header_ac_assgns w
6625              WHERE w.application_id                 = g_application_id
6626                AND w.amb_context_code               = g_amb_context_code
6627                AND w.event_class_code               = s.event_class_code
6628                AND w.event_type_code                = s.event_type_code
6629                AND w.line_definition_owner_code     = s.line_definition_owner_code
6630                AND w.line_definition_code           = s.line_definition_code
6631                AND w.accounting_line_type_code      = s.accounting_line_type_code
6632                AND w.accounting_line_code           = s.accounting_line_code
6633                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
6634                AND w.analytical_criterion_code      = s.analytical_criterion_code);
6635 
6636   l_parent_key          VARCHAR2(240);
6637   l_key                 VARCHAR2(240);
6638   l_log_module          VARCHAR2(240);
6639 BEGIN
6640   IF g_log_enabled THEN
6641     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_hdr_ac_assgns';
6642   END IF;
6643 
6644   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6645     trace(p_msg    => 'BEGIN of function compare_mpa_hdr_ac_assgns',
6646           p_module => l_log_module,
6647           p_level  => C_LEVEL_PROCEDURE);
6648   END IF;
6649 
6650   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6651     trace(p_msg    => 'BEGIN LOOP: updated mpa header ac assgns',
6652           p_module => l_log_module,
6653           p_level  => C_LEVEL_PROCEDURE);
6654   END IF;
6655 
6656   FOR l_comp IN c_comp LOOP
6657 
6658     l_parent_key := l_comp.event_class_code||C_CHAR||
6659                     l_comp.event_type_code||C_CHAR||
6660                     l_comp.line_definition_owner_code||C_CHAR||
6661                     l_comp.line_definition_code||C_CHAR||
6662                     l_comp.accounting_line_type_code||C_CHAR||
6663                     l_comp.accounting_line_code||C_CHAR||
6664                     'MPA';
6665 
6666     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
6667              l_comp.analytical_criterion_code;
6668 
6669     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6670       trace(p_msg    => 'LOOP: updated mpa header ac assgn',
6671             p_module => l_log_module,
6672             p_level  => C_LEVEL_PROCEDURE);
6673       trace(p_msg    => 'l_parent_key = '||l_parent_key,
6674             p_module => l_log_module,
6675             p_level  => C_LEVEL_PROCEDURE);
6676       trace(p_msg    => 'l_key = '||l_key,
6677             p_module => l_log_module,
6678             p_level  => C_LEVEL_PROCEDURE);
6679     END IF;
6680 
6681     record_updated_component
6682           (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
6683           ,p_parent_component_key  => l_parent_key
6684           ,p_component_type        => 'AMB_AC'
6685           ,p_component_key         => l_key
6686           ,p_merge_impact          => l_comp.merge_impact
6687           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
6688           ,p_component_code        => l_comp.analytical_criterion_code);
6689 
6690     record_updated_mpa_assgn
6691           (p_event_class_code           => l_comp.event_class_code
6692           ,p_event_type_code            => l_comp.event_type_code
6693           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6694           ,p_line_definition_code       => l_comp.line_definition_code
6695           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6696           ,p_accounting_line_code       => l_comp.accounting_line_code
6697           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
6698 
6699   END LOOP;
6700 
6701   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6702     trace(p_msg    => 'END LOOP: updated mpa header ac assgns',
6703           p_module => l_log_module,
6704           p_level  => C_LEVEL_PROCEDURE);
6705   END IF;
6706 
6707   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6708     trace(p_msg    => 'END of function compare_mpa_hdr_ac_assgns',
6709           p_module => l_log_module,
6710           p_level  => C_LEVEL_PROCEDURE);
6711   END IF;
6712 
6713 EXCEPTION
6714   WHEN xla_exceptions_pkg.application_exception THEN
6715     RAISE;
6716   WHEN OTHERS THEN
6717    xla_exceptions_pkg.raise_message
6718       (p_location => l_log_module);
6719 END compare_mpa_hdr_ac_assgns;
6720 
6721 --=============================================================================
6722 --
6723 -- Name: compare_mpa_hdr_assgns
6724 -- Description:
6725 --
6726 --=============================================================================
6727 PROCEDURE compare_mpa_hdr_assgns
6728 IS
6729   CURSOR c_comp IS
6730     SELECT s.event_class_code
6731          , s.event_type_code
6732          , s.line_definition_owner_code
6733          , s.line_definition_code
6734          , s.accounting_line_type_code
6735          , s.accounting_line_code
6736          , CASE WHEN sl.mpa_option_code = 'NONE'
6737                 THEN C_MERGE_IMPACT_DELETED
6738                 WHEN wl.mpa_option_code = 'NONE'
6739                 THEN C_MERGE_IMPACT_NEW
6740                 ELSE C_MERGE_IMPACT_UPDATED
6741                 END merge_impact
6742          , s.mpa_header_desc_type_code s_mpa_header_desc_type_code
6743          , w.mpa_header_desc_type_code w_mpa_header_desc_type_code
6744          , s.mpa_header_desc_code      s_mpa_header_desc_code
6745          , w.mpa_header_desc_code      w_mpa_header_desc_code
6746          , s.mpa_num_je_code           s_mpa_num_je_code
6747          , w.mpa_num_je_code           w_mpa_num_je_code
6748          , s.mpa_gl_dates_code         s_mpa_gl_dates_code
6749          , w.mpa_gl_dates_code         w_mpa_gl_dates_code
6750          , s.mpa_proration_code        s_mpa_proration_code
6751          , w.mpa_proration_code        w_mpa_proration_code
6752       FROM xla_line_defn_jlt_assgns s
6753            JOIN xla_line_defn_jlt_assgns w
6754            ON  w.application_id              = g_application_id
6755            AND w.amb_context_code            = g_amb_context_code
6756            AND w.event_class_code            = s.event_class_code
6757            AND w.event_type_code             = s.event_type_code
6758            AND w.line_definition_owner_code  = s.line_definition_owner_code
6759            AND w.line_definition_code        = s.line_definition_code
6760            AND w.accounting_line_type_code   = s.accounting_line_type_code
6761            AND w.accounting_line_code        = s.accounting_line_code
6762            JOIN xla_acct_line_types_b sl
6763            ON  sl.application_id             = s.application_id
6764            AND sl.amb_context_code           = s.amb_context_code
6765            AND sl.event_class_code           = s.event_class_code
6766            AND sl.accounting_line_type_code  = s.accounting_line_type_code
6767            AND sl.accounting_line_code       = s.accounting_line_code
6768            JOIN xla_acct_line_types_b wl
6769            ON  wl.application_id             = w.application_id
6770            AND wl.amb_context_code           = w.amb_context_code
6771            AND wl.event_class_code           = w.event_class_code
6772            AND wl.accounting_line_type_code  = w.accounting_line_type_code
6773            AND wl.accounting_line_code       = w.accounting_line_code
6774            --AND sl.mpa_option_code           <> wl.mpa_option_code
6775      WHERE s.application_id                  = g_application_id
6776        AND s.amb_context_code                = g_staging_context_code
6777        AND (sl.mpa_option_code               = 'ACCRUAL' OR
6778             wl.mpa_option_code               = 'ACCRUAL')
6779        AND (NVL(s.mpa_header_desc_type_code,C_CHAR) <> NVL(w.mpa_header_desc_type_code,C_CHAR) OR
6780             NVL(s.mpa_header_desc_code,C_CHAR)      <> NVL(w.mpa_header_desc_code,C_CHAR)      OR
6781             NVL(s.mpa_num_je_code,C_CHAR)           <> NVL(w.mpa_num_je_code,C_CHAR)           OR
6782             NVL(s.mpa_gl_dates_code,C_CHAR)         <> NVL(w.mpa_gl_dates_code,C_CHAR)         OR
6783             NVL(s.mpa_proration_code,C_CHAR)        <> NVL(w.mpa_proration_code,C_CHAR));
6784 
6785   l_parent_key          VARCHAR2(240);
6786   l_key                 VARCHAR2(240);
6787   l_log_module          VARCHAR2(240);
6788 BEGIN
6789   IF g_log_enabled THEN
6790     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_hdr_assgns';
6791   END IF;
6792 
6793   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6794     trace(p_msg    => 'BEGIN of function compare_mpa_hdr_assgns',
6795           p_module => l_log_module,
6796           p_level  => C_LEVEL_PROCEDURE);
6797   END IF;
6798 
6799   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6800     trace(p_msg    => 'BEGIN LOOP: updated mpa header assgns',
6801           p_module => l_log_module,
6802           p_level  => C_LEVEL_PROCEDURE);
6803   END IF;
6804 
6805   FOR l_comp IN c_comp LOOP
6806 
6807     l_parent_key := l_comp.event_class_code||C_CHAR||
6808                     l_comp.event_type_code||C_CHAR||
6809                     l_comp.line_definition_owner_code||C_CHAR||
6810                     l_comp.line_definition_code||C_CHAR||
6811                     l_comp.accounting_line_type_code||C_CHAR||
6812                     l_comp.accounting_line_code||C_CHAR||
6813                     'MPA';
6814 
6815     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6816       trace(p_msg    => 'LOOP: updated mpa header assgn - ',
6817             p_module => l_log_module,
6818             p_level  => C_LEVEL_PROCEDURE);
6819       trace(p_msg    => 'l_parent_key = '||l_parent_key,
6820             p_module => l_log_module,
6821             p_level  => C_LEVEL_PROCEDURE);
6822     END IF;
6823 
6824     record_updated_mpa_assgn
6825                 (p_event_class_code           => l_comp.event_class_code
6826                 ,p_event_type_code            => l_comp.event_type_code
6827                 ,p_line_definition_owner_code => l_comp.line_definition_owner_code
6828                 ,p_line_definition_code       => l_comp.line_definition_code
6829                 ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
6830                 ,p_accounting_line_code       => l_comp.accounting_line_code
6831                 ,p_merge_impact               => l_comp.merge_impact);
6832 
6833     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
6834 
6835       IF (l_comp.s_mpa_header_desc_type_code IS NOT NULL AND
6836           l_comp.w_mpa_header_desc_type_code IS NULL) OR
6837          (NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) <> NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) OR
6838           NVL(l_comp.w_mpa_header_desc_code,C_CHAR)      <> NVL(l_comp.s_mpa_header_desc_code,C_CHAR)) THEN
6839 
6840         l_key := l_comp.s_mpa_header_desc_type_code||C_CHAR||
6841                  l_comp.s_mpa_header_desc_code;
6842 
6843         record_updated_component
6844                  (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
6845                  ,p_parent_component_key  => l_parent_key
6846                  ,p_component_type        => 'AMB_DESCRIPTION'
6847                  ,p_component_key         => l_key
6848                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
6849                  ,p_component_owner_code  => l_comp.s_mpa_header_desc_type_code
6850                  ,p_component_code        => l_comp.s_mpa_header_desc_code);
6851 
6852       ELSIF (l_comp.w_mpa_header_desc_type_code IS NOT NULL AND
6853              l_comp.s_mpa_header_desc_type_code IS NULL) OR
6854             (NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) <> NVL(l_comp.s_mpa_header_desc_type_code,C_CHAR) OR
6855              NVL(l_comp.w_mpa_header_desc_code,C_CHAR)      <> NVL(l_comp.s_mpa_header_desc_code,C_CHAR)) THEN
6856 
6857         l_key := l_comp.w_mpa_header_desc_type_code||C_CHAR||
6858                  l_comp.w_mpa_header_desc_code;
6859 
6860         record_updated_component
6861                  (p_parent_component_type => 'AMB_MPA_ASSIGNMENT'
6862                  ,p_parent_component_key  => l_parent_key
6863                  ,p_component_type        => 'AMB_DESCRIPTION'
6864                  ,p_component_key         => l_key
6865                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
6866                  ,p_component_owner_code  => l_comp.s_mpa_header_desc_type_code
6867                  ,p_component_code        => l_comp.s_mpa_header_desc_code);
6868       END IF;
6869 
6870       IF (l_comp.w_mpa_num_je_code <> l_comp.s_mpa_num_je_code) THEN
6871         record_updated_property
6872               (p_component_type => 'AMB_MPA_ASSIGNMENT'
6873               ,p_component_key  => l_parent_key
6874               ,p_property       => 'MPA_NUM_JE'
6875               ,p_old_value      => l_comp.w_mpa_num_je_code
6876               ,p_new_value      => l_comp.s_mpa_num_je_code
6877               ,p_lookup_type    => 'XLA_MPA_NUM_OF_ENTRIES');
6878       END IF;
6879 
6880       IF (l_comp.w_mpa_gl_dates_code <> l_comp.s_mpa_gl_dates_code) THEN
6881         record_updated_property
6882               (p_component_type => 'AMB_MPA_ASSIGNMENT'
6883               ,p_component_key  => l_parent_key
6884               ,p_property       => 'MPA_GL_DATES'
6885               ,p_old_value      => l_comp.w_mpa_gl_dates_code
6886               ,p_new_value      => l_comp.s_mpa_gl_dates_code
6887               ,p_lookup_type    => 'XLA_MPA_GL_DATE');
6888       END IF;
6889 
6890       IF (NVL(l_comp.w_mpa_proration_code,C_CHAR) <> NVL(l_comp.s_mpa_proration_code,C_CHAR)) THEN
6891         record_updated_property
6892               (p_component_type => 'AMB_MPA_ASSIGNMENT'
6893               ,p_component_key  => l_parent_key
6894               ,p_property       => 'MPA_PRORATION'
6895               ,p_old_value      => l_comp.w_mpa_proration_code
6896               ,p_new_value      => l_comp.s_mpa_proration_code
6897               ,p_lookup_type    => 'XLA_MPA_PRORATION');
6898       END IF;
6899 
6900     END IF;
6901   END LOOP;
6902 
6903   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6904     trace(p_msg    => 'END LOOP: updated mpa header assgns',
6905           p_module => l_log_module,
6906           p_level  => C_LEVEL_PROCEDURE);
6907   END IF;
6908 
6909   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6910     trace(p_msg    => 'END of function compare_mpa_hdr_assgns',
6911           p_module => l_log_module,
6912           p_level  => C_LEVEL_PROCEDURE);
6913   END IF;
6914 
6915 EXCEPTION
6916   WHEN xla_exceptions_pkg.application_exception THEN
6917     RAISE;
6918   WHEN OTHERS THEN
6919    xla_exceptions_pkg.raise_message
6920       (p_location => l_log_module);
6921 END compare_mpa_hdr_assgns;
6922 
6923 --=============================================================================
6924 --
6925 -- Name: compare_mpa_jlt_adr_assgns
6926 -- Description:
6927 --
6928 --=============================================================================
6929 PROCEDURE compare_mpa_jlt_adr_assgns
6930 IS
6931   CURSOR c_comp IS
6932     SELECT s.event_class_code
6933          , s.event_type_code
6934          , s.line_definition_owner_code
6935          , s.line_definition_code
6936          , s.accounting_line_type_code
6937          , s.accounting_line_code
6938          , s.mpa_accounting_line_type_code
6939          , s.mpa_accounting_line_code
6940          , s.flexfield_segment_code
6941          , l.accounting_coa_id
6942          , CASE WHEN w.application_id IS NULL
6943                 THEN C_MERGE_IMPACT_NEW
6944                 ELSE C_MERGE_IMPACT_UPDATED
6945                 END                merge_impact
6946          , s.segment_rule_appl_id   s_segment_rule_appl_id
6947          , w.segment_rule_appl_id   w_segment_rule_appl_id
6948          , s.segment_rule_type_code s_segment_rule_type_code
6949          , w.segment_rule_type_code w_segment_rule_type_code
6950          , s.segment_rule_code      s_segment_rule_code
6951          , w.segment_rule_code      w_segment_rule_code
6952          , s.inherit_adr_flag       s_inherit_adr_flag
6953          , w.inherit_adr_flag       w_inherit_adr_flag
6954       FROM xla_mpa_jlt_adr_assgns s
6955            JOIN xla_line_definitions_b l
6956            ON  l.application_id              = g_application_id
6957            AND l.amb_context_code            = g_amb_context_code
6958            AND l.event_class_code            = s.event_class_code
6959            AND l.event_type_code             = s.event_type_code
6960            AND l.line_definition_owner_code  = s.line_definition_owner_code
6961            AND l.line_definition_code        = s.line_definition_code
6962            JOIN xla_mpa_jlt_assgns b
6963            ON  b.application_id                = g_application_id
6964            AND b.amb_context_code              = g_amb_context_code
6965            AND b.event_class_code              = s.event_class_code
6966            AND b.event_type_code               = s.event_type_code
6967            AND b.line_definition_owner_code    = s.line_definition_owner_code
6968            AND b.line_definition_code          = s.line_definition_code
6969            AND b.accounting_line_type_code     = s.accounting_line_type_code
6970            AND b.accounting_line_code          = s.accounting_line_code
6971            AND b.mpa_accounting_line_type_code = s.mpa_accounting_line_type_code
6972            AND b.mpa_accounting_line_code      = s.mpa_accounting_line_code
6973            LEFT OUTER JOIN xla_mpa_jlt_adr_assgns w
6974            ON  w.application_id                 = g_application_id
6975            AND w.amb_context_code               = g_amb_context_code
6976            AND w.event_class_code               = s.event_class_code
6977            AND w.event_type_code                = s.event_type_code
6978            AND w.line_definition_owner_code     = s.line_definition_owner_code
6979            AND w.line_definition_code           = s.line_definition_code
6980            AND w.accounting_line_type_code      = s.accounting_line_type_code
6981            AND w.accounting_line_code           = s.accounting_line_code
6982            AND w.mpa_accounting_line_type_code  = s.mpa_accounting_line_type_code
6983            AND w.mpa_accounting_line_code       = s.mpa_accounting_line_code
6984            AND w.flexfield_segment_code         = s.flexfield_segment_code
6985      WHERE s.application_id   = g_application_id
6986        AND s.amb_context_code = g_staging_context_code
6987        AND (w.application_id                     IS NULL OR
6988             s.inherit_adr_flag                   <> w.inherit_adr_flag OR
6989             NVL(s.segment_rule_appl_id,C_NUM)    <> NVL(w.segment_rule_appl_id,C_NUM) OR
6990             NVL(s.segment_rule_type_code,C_CHAR) <> NVL(w.segment_rule_type_code,C_CHAR) OR
6991             NVL(s.segment_rule_code,C_CHAR)      <> NVL(w.segment_rule_code,C_CHAR));
6992 
6993   l_parent_key          VARCHAR2(240);
6994   l_key                 VARCHAR2(240);
6995   l_log_module          VARCHAR2(240);
6996 BEGIN
6997   IF g_log_enabled THEN
6998     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_jlt_adr_assgns';
6999   END IF;
7000 
7001   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7002     trace(p_msg    => 'BEGIN of function compare_mpa_jlt_adr_assgns',
7003           p_module => l_log_module,
7004           p_level  => C_LEVEL_PROCEDURE);
7005   END IF;
7006 
7007   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7008     trace(p_msg    => 'BEGIN LOOP: updated mpa line adr assgns',
7009           p_module => l_log_module,
7010           p_level  => C_LEVEL_PROCEDURE);
7011   END IF;
7012 
7013   FOR l_comp IN c_comp LOOP
7014 
7015     l_parent_key := l_comp.event_class_code||C_CHAR||
7016                     l_comp.event_type_code||C_CHAR||
7017                     l_comp.line_definition_owner_code||C_CHAR||
7018                     l_comp.line_definition_code||C_CHAR||
7019                     l_comp.accounting_line_type_code||C_CHAR||
7020                     l_comp.accounting_line_code||C_CHAR||
7021                     'MPA'||C_CHAR||
7022                     l_comp.mpa_accounting_line_type_code||C_CHAR||
7023                     l_comp.mpa_accounting_line_code;
7024 
7025     l_key := l_parent_key||C_CHAR||
7026              l_comp.flexfield_segment_code;
7027 
7028     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7029       trace(p_msg    => 'LOOP: updated mpa line adr assgn',
7030             p_module => l_log_module,
7031             p_level  => C_LEVEL_PROCEDURE);
7032       trace(p_msg    => 'l_parent_key = '||l_key,
7033             p_module => l_log_module,
7034             p_level  => C_LEVEL_PROCEDURE);
7035       trace(p_msg    => 'l_key = '||l_key,
7036             p_module => l_log_module,
7037             p_level  => C_LEVEL_PROCEDURE);
7038     END IF;
7039 
7040     IF (NOT key_exists('LNADR'||C_CHAR||l_key)) THEN
7041       record_updated_component
7042           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7043           ,p_parent_component_key  => l_parent_key
7044           ,p_component_type        => 'AMB_MPA_ADR_ASSGN'
7045           ,p_component_key         => l_key
7046           ,p_merge_impact          => l_comp.merge_impact
7047           ,p_component_owner_code  => l_comp.accounting_coa_id
7048           ,p_component_code        => l_comp.flexfield_segment_code);
7049 
7050       record_updated_mpa_line_assgn
7051           (p_event_class_code              => l_comp.event_class_code
7052           ,p_event_type_code               => l_comp.event_type_code
7053           ,p_line_definition_owner_code    => l_comp.line_definition_owner_code
7054           ,p_line_definition_code          => l_comp.line_definition_code
7055           ,p_accounting_line_type_code     => l_comp.accounting_line_type_code
7056           ,p_accounting_line_code          => l_comp.accounting_line_code
7057           ,p_mpa_acct_line_type_code       => l_comp.mpa_accounting_line_type_code
7058           ,p_mpa_acct_line_code            => l_comp.mpa_accounting_line_code
7059           ,p_merge_impact                  => C_MERGE_IMPACT_UPDATED);
7060 
7061     END IF;
7062 
7063     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
7064 
7065       IF (l_comp.w_inherit_adr_flag <> l_comp.s_inherit_adr_flag) THEN
7066         record_updated_property
7067               (p_component_type => 'AMB_MPA_ADR_ASSGN'
7068               ,p_component_key  => l_key
7069               ,p_property       => 'INHERIT_ADR_FLAG'
7070               ,p_old_value      => l_comp.w_inherit_adr_flag
7071               ,p_new_value      => l_comp.s_inherit_adr_flag
7072               ,p_lookup_type    => 'XLA_YES_NO');
7073 
7074       END IF;
7075 
7076       IF (NVL(l_comp.w_segment_rule_appl_id,C_NUM)    <> NVL(l_comp.s_segment_rule_appl_id,C_NUM) OR
7077           NVL(l_comp.w_segment_rule_type_code,C_CHAR) <> NVL(l_comp.s_segment_rule_type_code,C_CHAR) OR
7078           NVL(l_comp.w_segment_rule_code,C_CHAR)      <> NVL(l_comp.s_segment_rule_code,C_CHAR)) THEN
7079 
7080         l_parent_key := l_key;
7081 
7082         IF (l_comp.s_segment_rule_code IS NOT NULL) THEN
7083 
7084           record_updated_component
7085                  (p_parent_component_type => 'AMB_MPA_ADR_ASSGN'
7086                  ,p_parent_component_key  => l_parent_key
7087                  ,p_component_type        => 'AMB_ADR'
7088                  ,p_component_key         => l_comp.s_segment_rule_type_code||C_CHAR||
7089                                              l_comp.s_segment_rule_code
7090                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
7091                  ,p_component_appl_id     => l_comp.s_segment_rule_appl_id
7092                  ,p_component_owner_code  => l_comp.s_segment_rule_type_code
7093                  ,p_component_code        => l_comp.s_segment_rule_code);
7094         END IF;
7095 
7096         IF (l_comp.w_segment_rule_code IS NOT NULL) THEN
7097 
7098           record_updated_component
7099                  (p_parent_component_type => 'AMB_MPA_ADR_ASSGN'
7100                  ,p_parent_component_key  => l_parent_key
7101                  ,p_component_type        => 'AMB_ADR'
7102                  ,p_component_key         => l_comp.w_segment_rule_type_code||C_CHAR||
7103                                              l_comp.w_segment_rule_code
7104                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
7105                  ,p_component_appl_id     => l_comp.w_segment_rule_appl_id
7106                  ,p_component_owner_code  => l_comp.s_segment_rule_type_code
7107                  ,p_component_code        => l_comp.w_segment_rule_code);
7108         END IF;
7109       END IF;
7110     END IF;
7111 
7112   END LOOP;
7113 
7114   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7115     trace(p_msg    => 'END LOOP: updated mpa line adr assgns',
7116           p_module => l_log_module,
7117           p_level  => C_LEVEL_PROCEDURE);
7118   END IF;
7119 
7120   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7121     trace(p_msg    => 'END of function compare_mpa_jlt_adr_assgns',
7122           p_module => l_log_module,
7123           p_level  => C_LEVEL_PROCEDURE);
7124   END IF;
7125 
7126 EXCEPTION
7127   WHEN xla_exceptions_pkg.application_exception THEN
7128     RAISE;
7129   WHEN OTHERS THEN
7130    xla_exceptions_pkg.raise_message
7131       (p_location => l_log_module);
7132 END compare_mpa_jlt_adr_assgns;
7133 
7134 --=============================================================================
7135 --
7136 -- Name: compare_mpa_jlt_ac_assgns
7137 -- Description:
7138 --
7139 --=============================================================================
7140 PROCEDURE compare_mpa_jlt_ac_assgns
7141 IS
7142   CURSOR c_comp IS
7143     SELECT s.event_class_code
7144          , s.event_type_code
7145          , s.line_definition_owner_code
7146          , s.line_definition_code
7147          , s.accounting_line_type_code
7148          , s.accounting_line_code
7149          , s.mpa_accounting_line_type_code
7150          , s.mpa_accounting_line_code
7151          , s.analytical_criterion_type_code
7152          , s.analytical_criterion_code
7153          , C_MERGE_IMPACT_NEW merge_impact
7154       FROM xla_mpa_jlt_ac_assgns s
7155          , xla_mpa_jlt_assgns b
7156      WHERE s.application_id                = g_application_id
7157        AND s.amb_context_code              = g_staging_context_code
7158        AND b.application_id                = g_application_id
7159        AND b.amb_context_code              = g_amb_context_code
7160        AND b.event_class_code              = s.event_class_code
7161        AND b.event_type_code               = s.event_type_code
7162        AND b.line_definition_owner_code    = s.line_definition_owner_code
7163        AND b.line_definition_code          = s.line_definition_code
7164        AND b.accounting_line_type_code     = s.accounting_line_type_code
7165        AND b.accounting_line_code          = s.accounting_line_code
7166        AND b.mpa_accounting_line_type_code = s.mpa_accounting_line_type_code
7167        AND b.mpa_accounting_line_code      = s.mpa_accounting_line_code
7168        AND NOT EXISTS
7169            (SELECT 1
7170               FROM xla_mpa_jlt_ac_assgns w
7171              WHERE w.application_id                 = g_application_id
7172                AND w.amb_context_code               = g_amb_context_code
7173                AND w.event_class_code               = s.event_class_code
7174                AND w.event_type_code                = s.event_type_code
7175                AND w.line_definition_owner_code     = s.line_definition_owner_code
7176                AND w.line_definition_code           = s.line_definition_code
7177                AND w.accounting_line_type_code      = s.accounting_line_type_code
7178                AND w.accounting_line_code           = s.accounting_line_code
7179                AND w.mpa_accounting_line_type_code  = s.mpa_accounting_line_type_code
7180                AND w.mpa_accounting_line_code       = s.mpa_accounting_line_code
7181                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
7182                AND w.analytical_criterion_code      = s.analytical_criterion_code);
7183 
7184   l_parent_key          VARCHAR2(240);
7185   l_key                 VARCHAR2(240);
7186   l_log_module          VARCHAR2(240);
7187 BEGIN
7188   IF g_log_enabled THEN
7189     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_jlt_ac_assgns';
7190   END IF;
7191 
7192   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7193     trace(p_msg    => 'BEGIN of function compare_mpa_jlt_ac_assgns',
7194           p_module => l_log_module,
7195           p_level  => C_LEVEL_PROCEDURE);
7196   END IF;
7197 
7198   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7199     trace(p_msg    => 'BEGIN LOOP: updated mpa line ac assgns',
7200           p_module => l_log_module,
7201           p_level  => C_LEVEL_PROCEDURE);
7202   END IF;
7203 
7204   FOR l_comp IN c_comp LOOP
7205 
7206     l_parent_key := l_comp.event_class_code||C_CHAR||
7207                     l_comp.event_type_code||C_CHAR||
7208                     l_comp.line_definition_owner_code||C_CHAR||
7209                     l_comp.line_definition_code||C_CHAR||
7210                     l_comp.accounting_line_type_code||C_CHAR||
7211                     l_comp.accounting_line_code||C_CHAR||
7212                     'MPA'||C_CHAR||
7213                     l_comp.mpa_accounting_line_type_code||C_CHAR||
7214                     l_comp.mpa_accounting_line_code;
7215 
7216     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
7217              l_comp.analytical_criterion_code;
7218 
7219     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7220       trace(p_msg    => 'LOOP: updated mpa line ac assgn',
7221             p_module => l_log_module,
7222             p_level  => C_LEVEL_PROCEDURE);
7223       trace(p_msg    => 'l_parent_key = '||l_parent_key,
7224             p_module => l_log_module,
7225             p_level  => C_LEVEL_PROCEDURE);
7226       trace(p_msg    => 'l_key = '||l_key,
7227             p_module => l_log_module,
7228             p_level  => C_LEVEL_PROCEDURE);
7229     END IF;
7230 
7231     record_updated_component
7232           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7233           ,p_parent_component_key  => l_parent_key
7234           ,p_component_type        => 'AMB_AC'
7235           ,p_component_key         => l_key
7236           ,p_merge_impact          => l_comp.merge_impact
7237           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
7238           ,p_component_code        => l_comp.analytical_criterion_code);
7239 
7240     record_updated_mpa_line_assgn
7241           (p_event_class_code           => l_comp.event_class_code
7242           ,p_event_type_code            => l_comp.event_type_code
7243           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
7244           ,p_line_definition_code       => l_comp.line_definition_code
7245           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
7246           ,p_accounting_line_code       => l_comp.accounting_line_code
7247           ,p_mpa_acct_line_type_code    => l_comp.mpa_accounting_line_type_code
7248           ,p_mpa_acct_line_code         => l_comp.mpa_accounting_line_code
7249           ,p_merge_impact               => C_MERGE_IMPACT_UPDATED);
7250 
7251   END LOOP;
7252 
7253   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7254     trace(p_msg    => 'END LOOP: updated mpa line ac assgns',
7255           p_module => l_log_module,
7256           p_level  => C_LEVEL_PROCEDURE);
7257   END IF;
7258 
7259   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7260     trace(p_msg    => 'END of function compare_mpa_jlt_ac_assgns',
7261           p_module => l_log_module,
7262           p_level  => C_LEVEL_PROCEDURE);
7263   END IF;
7264 
7265 EXCEPTION
7266   WHEN xla_exceptions_pkg.application_exception THEN
7267     RAISE;
7268   WHEN OTHERS THEN
7269    xla_exceptions_pkg.raise_message
7270       (p_location => l_log_module);
7271 END compare_mpa_jlt_ac_assgns;
7272 
7273 --=============================================================================
7274 --
7275 -- Name: compare_mpa_jlt_assgns
7276 -- Description:
7277 --
7278 --=============================================================================
7279 PROCEDURE compare_mpa_jlt_assgns
7280 IS
7281   CURSOR c_comp IS
7282     SELECT s.event_class_code
7283          , s.event_type_code
7284          , s.line_definition_owner_code
7285          , s.line_definition_code
7286          , s.accounting_line_type_code
7287          , s.accounting_line_code
7288          , s.mpa_accounting_line_type_code
7289          , s.mpa_accounting_line_code
7290          , CASE WHEN w.mpa_accounting_line_code IS NULL
7291                 THEN C_MERGE_IMPACT_NEW
7292                 ELSE C_MERGE_IMPACT_UPDATED
7293                 END                 merge_impact
7294          , s.description_type_code  s_description_type_code
7295          , w.description_type_code  w_description_type_code
7296          , s.description_code       s_description_code
7297          , w.description_code       w_description_code
7298       FROM xla_mpa_jlt_assgns       s
7299            JOIN xla_line_defn_jlt_assgns bw
7300            ON  bw.application_id              = g_application_id
7301            AND bw.amb_context_code            = g_amb_context_code
7302            AND bw.event_class_code            = s.event_class_code
7303            AND bw.event_type_code             = s.event_type_code
7304            AND bw.line_definition_owner_code  = s.line_definition_owner_code
7305            AND bw.line_definition_code        = s.line_definition_code
7306            AND bw.accounting_line_type_code   = s.accounting_line_type_code
7307            AND bw.accounting_line_code        = s.accounting_line_code
7308            LEFT OUTER JOIN xla_mpa_jlt_assgns w
7309            ON  w.application_id                = g_application_id
7310            AND w.amb_context_code              = g_amb_context_code
7311            AND w.event_class_code              = s.event_class_code
7312            AND w.event_type_code               = s.event_type_code
7313            AND w.line_definition_owner_code    = s.line_definition_owner_code
7314            AND w.line_definition_code          = s.line_definition_code
7315            AND w.accounting_line_type_code     = s.accounting_line_type_code
7316            AND w.accounting_line_code          = s.accounting_line_code
7317            AND w.mpa_accounting_line_type_code = s.mpa_accounting_line_type_code
7318            AND w.mpa_accounting_line_code      = s.mpa_accounting_line_code
7319      WHERE s.application_id   = g_application_id
7320        AND s.amb_context_code = g_staging_context_code
7321        AND (w.mpa_accounting_line_code IS NULL
7322         OR  s.description_type_code    <> w.description_type_code
7323         OR  s.description_code         <> w.description_code)
7324   UNION
7325     SELECT w.event_class_code
7326          , w.event_type_code
7327          , w.line_definition_owner_code
7328          , w.line_definition_code
7329          , w.accounting_line_type_code
7330          , w.accounting_line_code
7331          , w.mpa_accounting_line_type_code
7332          , w.mpa_accounting_line_code
7333          , C_MERGE_IMPACT_DELETED
7334          , NULL, NULL, NULL, NULL
7335       FROM xla_mpa_jlt_assgns       w
7336            JOIN xla_line_defn_jlt_assgns bs
7337            ON  bs.application_id              = g_application_id
7338            AND bs.amb_context_code            = g_staging_context_code
7339            AND bs.event_class_code            = w.event_class_code
7340            AND bs.event_type_code             = w.event_type_code
7341            AND bs.line_definition_owner_code  = w.line_definition_owner_code
7342            AND bs.line_definition_code        = w.line_definition_code
7343            AND bs.accounting_line_type_code   = w.accounting_line_type_code
7344            AND bs.accounting_line_code        = w.accounting_line_code
7345            LEFT OUTER JOIN xla_mpa_jlt_assgns s
7346            ON  s.application_id                = g_application_id
7347            AND s.amb_context_code              = g_staging_context_code
7348            AND s.event_class_code              = w.event_class_code
7349            AND s.event_type_code               = w.event_type_code
7350            AND s.line_definition_owner_code    = w.line_definition_owner_code
7351            AND s.line_definition_code          = w.line_definition_code
7352            AND s.accounting_line_type_code     = w.accounting_line_type_code
7353            AND s.accounting_line_code          = w.accounting_line_code
7354            AND s.mpa_accounting_line_type_code = w.mpa_accounting_line_type_code
7355            AND s.mpa_accounting_line_code      = w.mpa_accounting_line_code
7356      WHERE s.application_id   = g_application_id
7357        AND s.amb_context_code = g_amb_context_code
7358        AND w.mpa_accounting_line_code IS NULL;
7359 
7360   l_parent_key          VARCHAR2(240);
7361   l_key                 VARCHAR2(240);
7362   l_log_module          VARCHAR2(240);
7363 BEGIN
7364   IF g_log_enabled THEN
7365     l_log_module := C_DEFAULT_MODULE||'.compare_mpa_jlt_assgns';
7366   END IF;
7367 
7368   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7369     trace(p_msg    => 'BEGIN of function compare_mpa_jlt_assgns',
7370           p_module => l_log_module,
7371           p_level  => C_LEVEL_PROCEDURE);
7372   END IF;
7373 
7374   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7375     trace(p_msg    => 'BEGIN LOOP: updated mpa jlt assgns',
7376           p_module => l_log_module,
7377           p_level  => C_LEVEL_PROCEDURE);
7378   END IF;
7379 
7380   FOR l_comp IN c_comp LOOP
7381 
7382     l_parent_key := l_comp.event_class_code||C_CHAR||
7383                     l_comp.event_type_code||C_CHAR||
7384                     l_comp.line_definition_owner_code||C_CHAR||
7385                     l_comp.line_definition_code||C_CHAR||
7386                     l_comp.accounting_line_type_code||C_CHAR||
7387                     l_comp.accounting_line_code||C_CHAR||
7388                     'MPA'||C_CHAR||
7389                     l_comp.mpa_accounting_line_type_code||C_CHAR||
7390                     l_comp.mpa_accounting_line_code;
7391 
7392     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7393       trace(p_msg    => 'LOOP: updated mpa jlt assgn - merge_impact = '||l_comp.merge_impact,
7394             p_module => l_log_module,
7395             p_level  => C_LEVEL_PROCEDURE);
7396       trace(p_msg    => 'l_parent_key = '||l_parent_key,
7397             p_module => l_log_module,
7398             p_level  => C_LEVEL_PROCEDURE);
7399     END IF;
7400 
7401     IF (l_comp.merge_impact IN (C_MERGE_IMPACT_NEW, C_MERGE_IMPACT_DELETED)) THEN
7402 
7403       l_key := l_comp.mpa_accounting_line_type_code||C_CHAR||
7404                l_comp.mpa_accounting_line_code;
7405 
7406       IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7407         trace(p_msg    => 'l_key = '||l_key,
7408               p_module => l_log_module,
7409               p_level  => C_LEVEL_PROCEDURE);
7410       END IF;
7411 
7412       record_updated_component
7413           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7414           ,p_parent_component_key  => l_parent_key
7415           ,p_component_type        => 'AMB_JLT'
7416           ,p_component_key         => l_key
7417           ,p_merge_impact          => l_comp.merge_impact
7418           ,p_event_class_code      => l_comp.event_class_code
7419           ,p_event_type_code       => NULL
7420           ,p_component_owner_code  => l_comp.mpa_accounting_line_type_code
7421           ,p_component_code        => l_comp.mpa_accounting_line_code);
7422 
7423     ELSE
7424 
7425       IF (l_comp.s_description_type_code IS NOT NULL) THEN
7426 
7427         l_key := l_comp.s_description_type_code||C_CHAR||
7428                  l_comp.s_description_code;
7429 
7430         IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7431           trace(p_msg    => 'merge_impact = '||C_MERGE_IMPACT_NEW,
7432                 p_module => l_log_module,
7433                 p_level  => C_LEVEL_PROCEDURE);
7434           trace(p_msg    => 'l_key = '||l_key,
7435                 p_module => l_log_module,
7436                 p_level  => C_LEVEL_PROCEDURE);
7437         END IF;
7438 
7439         record_updated_component
7440           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7441           ,p_parent_component_key  => l_parent_key
7442           ,p_component_type        => 'AMB_DESCRIPTION'
7443           ,p_component_key         => l_key
7444           ,p_merge_impact          => C_MERGE_IMPACT_NEW
7445           ,p_component_owner_code  => l_comp.s_description_type_code
7446           ,p_component_code        => l_comp.s_description_code);
7447 
7448       END IF;
7449 
7450       IF (l_comp.w_description_type_code IS NOT NULL) THEN
7451 
7452         l_key := l_comp.w_description_type_code||C_CHAR||
7453                  l_comp.w_description_code;
7454 
7455         IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7456           trace(p_msg    => 'merge_impact = '||C_MERGE_IMPACT_DELETED,
7457                 p_module => l_log_module,
7458                 p_level  => C_LEVEL_PROCEDURE);
7459           trace(p_msg    => 'l_key = '||l_key,
7460                 p_module => l_log_module,
7461                 p_level  => C_LEVEL_PROCEDURE);
7462         END IF;
7463 
7464         record_updated_component
7465           (p_parent_component_type => 'AMB_MPA_LINE_ASSIGNMENT'
7466           ,p_parent_component_key  => l_parent_key
7467           ,p_component_type        => 'AMB_DESCRIPTION'
7468           ,p_component_key         => l_key
7469           ,p_merge_impact          => C_MERGE_IMPACT_DELETED
7470           ,p_component_owner_code  => l_comp.w_description_type_code
7471           ,p_component_code        => l_comp.w_description_code);
7472       END IF;
7473 
7474     END IF;
7475 
7476     record_updated_mpa_line_assgn
7477           (p_event_class_code               => l_comp.event_class_code
7478           ,p_event_type_code                => l_comp.event_type_code
7479           ,p_line_definition_owner_code     => l_comp.line_definition_owner_code
7480           ,p_line_definition_code           => l_comp.line_definition_code
7481           ,p_accounting_line_type_code      => l_comp.accounting_line_type_code
7482           ,p_accounting_line_code           => l_comp.accounting_line_code
7483           ,p_mpa_acct_line_type_code        => l_comp.mpa_accounting_line_type_code
7484           ,p_mpa_acct_line_code             => l_comp.mpa_accounting_line_code
7485           ,p_merge_impact                   => C_MERGE_IMPACT_UPDATED);
7486 
7487   END LOOP;
7488 
7489   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7490     trace(p_msg    => 'END LOOP: updated mpa jlt assgns',
7491           p_module => l_log_module,
7492           p_level  => C_LEVEL_PROCEDURE);
7493   END IF;
7494 
7495   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7496     trace(p_msg    => 'END of function compare_mpa_jlt_assgns',
7497           p_module => l_log_module,
7498           p_level  => C_LEVEL_PROCEDURE);
7499   END IF;
7500 
7501 EXCEPTION
7502   WHEN xla_exceptions_pkg.application_exception THEN
7503     RAISE;
7504   WHEN OTHERS THEN
7505    xla_exceptions_pkg.raise_message
7506       (p_location => l_log_module);
7507 END compare_mpa_jlt_assgns;
7508 
7509 
7510 --=============================================================================
7511 --
7512 -- Name: compare_jld_jlt_assgns
7513 -- Description:
7514 --
7515 --=============================================================================
7516 PROCEDURE compare_jld_jlt_assgns
7517 IS
7518   CURSOR c_comp IS
7519     SELECT s.event_class_code
7520          , s.event_type_code
7521          , s.line_definition_owner_code
7522          , s.line_definition_code
7523          , s.accounting_line_type_code
7524          , s.accounting_line_code
7525          , CASE WHEN w.application_id IS NULL
7526                 THEN C_MERGE_IMPACT_NEW
7527                 ELSE C_MERGE_IMPACT_UPDATED
7528                 END                    merge_impact
7529          , s.active_flag               s_active_flag
7530          , w.active_flag               w_active_flag
7531          , s.description_type_code     s_description_type_code
7532          , w.description_type_code     w_description_type_code
7533          , s.description_code          s_description_code
7534          , w.description_code          w_description_code
7535          , s.inherit_desc_flag         s_inherit_desc_flag
7536          , w.inherit_desc_flag         w_inherit_desc_flag
7537       FROM xla_line_defn_jlt_assgns s
7538            JOIN xla_line_definitions_b b
7539            ON  b.application_id             = g_application_id
7540            AND b.amb_context_code           = g_amb_context_code
7541            AND b.event_class_code           = s.event_class_code
7542            AND b.event_type_code            = s.event_type_code
7543            AND b.line_definition_owner_code = s.line_definition_owner_code
7544            AND b.line_definition_code       = s.line_definition_code
7545            LEFT OUTER JOIN xla_line_defn_jlt_assgns w
7546            ON  w.application_id             = g_application_id
7547            AND w.amb_context_code           = g_amb_context_code
7548            AND w.event_class_code           = s.event_class_code
7549            AND w.event_type_code            = s.event_type_code
7550            AND w.line_definition_owner_code = s.line_definition_owner_code
7551            AND w.line_definition_code       = s.line_definition_code
7552            AND w.accounting_line_type_code  = s.accounting_line_type_code
7553            AND w.accounting_line_code       = s.accounting_line_code
7554      WHERE s.application_id   = g_application_id
7555        AND s.amb_context_code = g_staging_context_code
7556        AND (w.application_id IS NULL
7557         OR  NVL(s.active_flag,C_CHAR)               <> NVL(w.active_flag,C_CHAR)
7558         OR  NVL(s.inherit_desc_flag,C_CHAR)         <> NVL(w.inherit_desc_flag,C_CHAR)
7559         OR  NVL(s.description_type_code,C_CHAR)     <> NVL(w.description_type_code,C_CHAR)
7560         OR  NVL(s.description_code,C_CHAR)          <> NVL(w.description_code,C_CHAR)
7561         );
7562 
7563   l_parent_key          VARCHAR2(240);
7564   l_key                 VARCHAR2(240);
7565   l_merge_impact        VARCHAR2(30);
7566   l_log_module          VARCHAR2(240);
7567 BEGIN
7568   IF g_log_enabled THEN
7569     l_log_module := C_DEFAULT_MODULE||'.compare_jld_jlt_assgns';
7570   END IF;
7571 
7572   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7573     trace(p_msg    => 'BEGIN of function compare_jld_jlt_assgns',
7574           p_module => l_log_module,
7575           p_level  => C_LEVEL_PROCEDURE);
7576   END IF;
7577 
7578   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7579     trace(p_msg    => 'END LOOP: updated jld jlt assgns',
7580           p_module => l_log_module,
7581           p_level  => C_LEVEL_PROCEDURE);
7582   END IF;
7583 
7584   FOR l_comp IN c_comp LOOP
7585 
7586     record_updated_line_assgn
7587           (p_event_class_code           => l_comp.event_class_code
7588           ,p_event_type_code            => l_comp.event_type_code
7589           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
7590           ,p_line_definition_code       => l_comp.line_definition_code
7591           ,p_accounting_line_type_code  => l_comp.accounting_line_type_code
7592           ,p_accounting_line_code       => l_comp.accounting_line_code
7593           ,p_merge_impact               => l_comp.merge_impact);
7594 
7595     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
7596 
7597       l_parent_key := l_comp.event_class_code||C_CHAR||
7598                l_comp.event_type_code||C_CHAR||
7599                l_comp.line_definition_owner_code||C_CHAR||
7600                l_comp.line_definition_code||C_CHAR||
7601                l_comp.accounting_line_type_code||C_CHAR||
7602                l_comp.accounting_line_code;
7603 
7604       IF (l_comp.w_active_flag <> l_comp.s_active_flag) THEN
7605         record_updated_property
7606               (p_component_type => 'AMB_LINE_ASSIGNMENT'
7607               ,p_component_key  => l_parent_key
7608               ,p_property       => 'ACTIVE'
7609               ,p_old_value      => l_comp.w_active_flag
7610               ,p_new_value      => l_comp.s_active_flag
7611               ,p_lookup_type    => 'XLA_YES_NO');
7612 
7613       END IF;
7614 
7615       IF (l_comp.w_inherit_desc_flag <> l_comp.s_inherit_desc_flag) THEN
7616         record_updated_property
7617               (p_component_type => 'AMB_LINE_ASSIGNMENT'
7618               ,p_component_key  => l_parent_key
7619               ,p_property       => 'INHERIT_DESC'
7620               ,p_old_value      => l_comp.w_inherit_desc_flag
7621               ,p_new_value      => l_comp.s_inherit_desc_flag
7622               ,p_lookup_type    => 'XLA_YES_NO');
7623 
7624       END IF;
7625 
7626       IF (NVL(l_comp.w_description_type_code,C_CHAR) <> NVL(l_comp.s_description_type_code,C_CHAR) OR
7627           NVL(l_comp.w_description_code,C_CHAR)      <> NVL(l_comp.s_description_code,C_CHAR)) THEN
7628 
7629         IF (l_comp.s_description_code IS NOT NULL) THEN
7630 
7631           l_key := l_comp.s_description_type_code||C_CHAR||
7632                    l_comp.s_description_code;
7633 
7634           IF (NOT key_exists('LDESC'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
7635 
7636             record_updated_component
7637                  (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
7638                  ,p_parent_component_key  => l_parent_key
7639                  ,p_component_type        => 'AMB_DESCRIPTION'
7640                  ,p_component_key         => l_key
7641                  ,p_merge_impact          => C_MERGE_IMPACT_NEW
7642                  ,p_component_owner_code  => l_comp.s_description_type_code
7643                  ,p_component_code        => l_comp.s_description_code);
7644           END IF;
7645         END IF;
7646 
7647         IF (l_comp.w_description_code IS NOT NULL) THEN
7648 
7649           l_key := l_comp.w_description_type_code||C_CHAR||
7650                    l_comp.w_description_code;
7651 
7652           IF (NOT key_exists('LDESC'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
7653 
7654             record_updated_component
7655                  (p_parent_component_type => 'AMB_LINE_ASSIGNMENT'
7656                  ,p_parent_component_key  => l_parent_key
7657                  ,p_component_type        => 'AMB_DESCRIPTION'
7658                  ,p_component_key         => l_key
7659                  ,p_merge_impact          => C_MERGE_IMPACT_DELETED
7660                  ,p_component_owner_code  => l_comp.w_description_type_code
7661                  ,p_component_code        => l_comp.w_description_code);
7662           END IF;
7663         END IF;
7664       END IF; -- updated description
7665 
7666     END IF; -- l_comp.merge_impact = C_MERGE_IMPACT_UPDATED
7667 
7668   END LOOP;
7669 
7670   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7671     trace(p_msg    => 'END LOOP: updated jld jlt assgns',
7672           p_module => l_log_module,
7673           p_level  => C_LEVEL_PROCEDURE);
7674   END IF;
7675 
7676   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7677     trace(p_msg    => 'END of function compare_jld_jlt_assgns',
7678           p_module => l_log_module,
7679           p_level  => C_LEVEL_PROCEDURE);
7680   END IF;
7681 
7682 EXCEPTION
7683   WHEN xla_exceptions_pkg.application_exception THEN
7684     RAISE;
7685   WHEN OTHERS THEN
7686    xla_exceptions_pkg.raise_message
7687       (p_location => l_log_module);
7688 END compare_jld_jlt_assgns;
7689 
7690 
7691 --=============================================================================
7692 --
7693 -- Name: compare_jlds
7694 -- Description:
7695 --
7696 --=============================================================================
7697 PROCEDURE compare_jlds
7698 IS
7699   CURSOR c_comp IS
7700     SELECT ts.event_class_code
7701           ,ts.event_type_code
7702           ,ts.line_definition_owner_code
7703           ,ts.line_definition_code
7704           ,ts.name                       s_name
7705           ,tw.name                       w_name
7706           ,ts.description                s_description
7707           ,tw.description                w_description
7708           ,bs.enabled_flag               s_enabled_flag
7709           ,bw.enabled_flag               w_enabled_flag
7710           ,bs.accounting_coa_id          s_acct_coa_id
7711           ,bw.accounting_coa_id          w_acct_coa_id
7712           ,bs.transaction_coa_id         s_trx_coa_id
7713           ,bw.transaction_coa_id         w_trx_coa_id
7714           ,bs.budgetary_control_flag     s_budgetary_control_flag
7715           ,bw.budgetary_control_flag     w_budgetary_control_flag
7716       FROM xla_line_definitions_b bs
7717            JOIN xla_line_definitions_tl ts
7718            ON  ts.application_id             = bs.application_id
7719            AND ts.amb_context_code           = bs.amb_context_code
7720            AND ts.event_class_code           = bs.event_class_code
7721            AND ts.event_type_code            = bs.event_type_code
7722            AND ts.line_definition_owner_code = bs.line_definition_owner_code
7723            AND ts.line_definition_code       = bs.line_definition_code
7724            AND ts.language                   = USERENV('LANG')
7725            JOIN xla_line_definitions_b bw
7726            ON  bw.application_id             = bs.application_id
7727            AND bw.amb_context_code           = g_amb_context_code
7728            AND bw.event_class_code           = bs.event_class_code
7729            AND bw.event_type_code            = bs.event_type_code
7730            AND bw.line_definition_owner_code = bs.line_definition_owner_code
7731            AND bw.line_definition_code       = bs.line_definition_code
7732            JOIN xla_line_definitions_tl tw
7733            ON  tw.application_id             = bw.application_id
7734            AND tw.amb_context_code           = bw.amb_context_code
7735            AND tw.event_class_code           = bw.event_class_code
7736            AND tw.event_type_code            = bw.event_type_code
7737            AND tw.line_definition_owner_code = bw.line_definition_owner_code
7738            AND tw.line_definition_code       = bw.line_definition_code
7739            AND tw.language                   = USERENV('LANG')
7740      WHERE bs.amb_context_code = g_staging_context_code
7741        AND bw.amb_context_code = g_amb_context_code
7742        AND (ts.name                          <> tw.name                          OR
7743             NVL(ts.description,C_CHAR)       <> NVL(tw.description,C_CHAR)       OR
7744             bs.enabled_flag                  <> bw.enabled_flag                  OR
7745             bs.budgetary_control_flag        <> bw.budgetary_control_flag        OR
7746             NVL(bs.transaction_coa_id,C_NUM) <> NVL(bw.transaction_coa_id,C_NUM) OR
7747             NVL(bs.accounting_coa_id,C_NUM)  <> NVL(bw.accounting_coa_id,C_NUM));
7748 
7749   l_key                 VARCHAR2(240);
7750   l_log_module          VARCHAR2(240);
7751 BEGIN
7752   IF g_log_enabled THEN
7753     l_log_module := C_DEFAULT_MODULE||'.compare_jlds';
7754   END IF;
7755 
7756   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7757     trace(p_msg    => 'BEGIN of function compare_jlds',
7758           p_module => l_log_module,
7759           p_level  => C_LEVEL_PROCEDURE);
7760   END IF;
7761 
7762   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7763     trace(p_msg    => 'BEGIN LOOP: updated jlds',
7764           p_module => l_log_module,
7765           p_level  => C_LEVEL_PROCEDURE);
7766   END IF;
7767 
7768   FOR l_comp in c_comp LOOP
7769 
7770     l_key := l_comp.event_class_code||C_CHAR||
7771                     l_comp.event_type_code||C_CHAR||
7772                     l_comp.line_definition_owner_code||C_CHAR||
7773                     l_comp.line_definition_code;
7774 
7775     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7776       trace(p_msg    => 'LOOP: updated jld - '||l_key,
7777             p_module => l_log_module,
7778             p_level  => C_LEVEL_PROCEDURE);
7779     END IF;
7780 
7781     record_updated_jld
7782           (p_event_class_code           => l_comp.event_class_code
7783           ,p_event_type_code            => l_comp.event_type_code
7784           ,p_line_definition_owner_code => l_comp.line_definition_owner_code
7785           ,p_line_definition_code       => l_comp.line_definition_code);
7786 
7787     IF (l_comp.s_name <> l_comp.w_name) THEN
7788       record_updated_property
7789           (p_component_type          => 'AMB_JLD'
7790           ,p_component_key           => l_key
7791           ,p_property                => 'NAME'
7792           ,p_old_value               => l_comp.w_name
7793           ,p_new_value               => l_comp.s_name);
7794     END IF;
7795 
7796     IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
7797       record_updated_property
7798           (p_component_type          => 'AMB_JLD'
7799           ,p_component_key           => l_key
7800           ,p_property                => 'DESCRIPTION'
7801           ,p_old_value               => l_comp.w_description
7802           ,p_new_value               => l_comp.s_description);
7803     END IF;
7804 
7805     IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
7806       record_updated_property
7807           (p_component_type          => 'AMB_JLD'
7808           ,p_component_key           => l_key
7809           ,p_property                => 'ENABLED'
7810           ,p_old_value               => l_comp.w_enabled_flag
7811           ,p_new_value               => l_comp.s_enabled_flag
7812           ,p_lookup_type             => 'XLA_YES_NO');
7813     END IF;
7814 
7815     IF (l_comp.s_budgetary_control_flag <> l_comp.w_budgetary_control_flag) THEN
7816       record_updated_property
7817           (p_component_type          => 'AMB_JLD'
7818           ,p_component_key           => l_key
7819           ,p_property                => 'BUDGETARY_CONTROL'
7820           ,p_old_value               => l_comp.w_budgetary_control_flag
7821           ,p_new_value               => l_comp.s_budgetary_control_flag
7822           ,p_lookup_type             => 'XLA_YES_NO');
7823     END IF;
7824 
7825     IF (NVL(l_comp.s_acct_coa_id,C_NUM) <> NVL(l_comp.w_acct_coa_id,C_NUM)) THEN
7826       record_updated_property
7827           (p_component_type          => 'AMB_JLD'
7828           ,p_component_key           => l_key
7829           ,p_property                => 'ACCOUNTING_COA'
7830           ,p_old_value               => l_comp.w_acct_coa_id
7831           ,p_new_value               => l_comp.s_acct_coa_id);
7832     END IF;
7833 
7834     IF (NVL(l_comp.s_trx_coa_id,C_NUM) <> NVL(l_comp.w_trx_coa_id,C_NUM)) THEN
7835       record_updated_property
7836           (p_component_type          => 'AMB_JLD'
7837           ,p_component_key           => l_key
7838           ,p_property                => 'TRANSACTION_COA'
7839           ,p_old_value               => l_comp.w_trx_coa_id
7840           ,p_new_value               => l_comp.s_trx_coa_id);
7841     END IF;
7842 
7843   END LOOP;
7844 
7845   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7846     trace(p_msg    => 'END LOOP: updated jlds',
7847           p_module => l_log_module,
7848           p_level  => C_LEVEL_PROCEDURE);
7849   END IF;
7850 
7851   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7852     trace(p_msg    => 'END of function compare_jlds',
7853           p_module => l_log_module,
7854           p_level  => C_LEVEL_PROCEDURE);
7855   END IF;
7856 
7857 EXCEPTION
7858   WHEN xla_exceptions_pkg.application_exception THEN
7859     RAISE;
7860   WHEN OTHERS THEN
7861    xla_exceptions_pkg.raise_message
7862       (p_location => l_log_module);
7863 END compare_jlds;
7864 
7865 
7866 --=============================================================================
7867 --
7868 -- Name: compare_jld_assgns
7869 -- Description:
7870 --
7871 --=============================================================================
7872 PROCEDURE compare_jld_assgns
7873 IS
7874   -- Retrieve new or deleted JLD assignment to the event class/evnet type
7875   CURSOR c_comp IS
7876     SELECT s.product_rule_type_code
7877          , s.product_rule_code
7878          , s.event_class_code
7879          , s.event_type_code
7880          , s.line_definition_owner_code
7881          , s.line_definition_code
7882          , C_MERGE_IMPACT_NEW merge_impact
7883       FROM xla_aad_line_defn_assgns s
7884          , xla_prod_acct_headers    b
7885      WHERE s.application_id         = g_application_id
7886        AND s.amb_context_code       = g_staging_context_code
7887        AND b.application_id         = g_application_id
7888        AND b.amb_context_code       = g_amb_context_code
7889        AND b.product_rule_type_code = s.product_rule_type_code
7890        AND b.product_rule_code      = s.product_rule_code
7891        AND b.event_class_code       = s.event_class_code
7892        AND b.event_type_code        = s.event_type_code
7893        AND NOT EXISTS
7894            (SELECT 1
7895               FROM xla_aad_line_defn_assgns w
7896              WHERE w.application_id             = g_application_id
7897                AND w.amb_context_code           = g_amb_context_code
7898                AND s.product_rule_type_code     = w.product_rule_type_code
7899                AND s.product_rule_code          = w.product_rule_code
7900                AND s.event_class_code           = w.event_class_code
7901                AND s.event_type_code            = w.event_type_code
7902                AND s.line_definition_owner_code = w.line_definition_owner_code
7903                AND s.line_definition_code       = w.line_definition_code);
7904 
7905   l_log_module          VARCHAR2(240);
7906 BEGIN
7907   IF g_log_enabled THEN
7908     l_log_module := C_DEFAULT_MODULE||'.compare_jld_assgns';
7909   END IF;
7910 
7911   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7912     trace(p_msg    => 'BEGIN of function compare_jld_assgns',
7913           p_module => l_log_module,
7914           p_level  => C_LEVEL_PROCEDURE);
7915   END IF;
7916 
7917   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7918     trace(p_msg    => 'BEGIN LOOP: updated jld assgns',
7919           p_module => l_log_module,
7920           p_level  => C_LEVEL_PROCEDURE);
7921   END IF;
7922 
7923   FOR l_comp IN c_comp LOOP
7924 
7925     record_updated_jld_assgn
7926           (p_product_rule_type_code     => l_comp.product_rule_type_code
7927           ,p_product_rule_code          => l_comp.product_rule_code
7928           ,p_event_class_code           => l_comp.event_class_code
7929           ,p_event_type_code            => l_comp.event_type_code
7930           ,p_line_defn_owner_code       => l_comp.line_definition_owner_code
7931           ,p_line_defn_code             => l_comp.line_definition_code
7932           ,p_merge_impact               => l_comp.merge_impact);
7933 
7934   END LOOP;
7935 
7936   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7937     trace(p_msg    => 'END LOOP: updated jld assgns',
7938           p_module => l_log_module,
7939           p_level  => C_LEVEL_PROCEDURE);
7940   END IF;
7941 
7942   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7943     trace(p_msg    => 'END of function compare_jld_assgns',
7944           p_module => l_log_module,
7945           p_level  => C_LEVEL_PROCEDURE);
7946   END IF;
7947 
7948 EXCEPTION
7949   WHEN xla_exceptions_pkg.application_exception THEN
7950     RAISE;
7951   WHEN OTHERS THEN
7952    xla_exceptions_pkg.raise_message
7953       (p_location => l_log_module);
7954 END compare_jld_assgns;
7955 
7956 --=============================================================================
7957 --
7958 -- Name: compare_hdr_ac_assgns
7959 -- Description:
7960 --
7961 --=============================================================================
7962 PROCEDURE compare_hdr_ac_assgns
7963 IS
7964   CURSOR c_comp IS
7965     SELECT s.product_rule_type_code
7966          , s.product_rule_code
7967          , s.event_class_code
7968          , s.event_type_code
7969          , s.analytical_criterion_type_code
7970          , s.analytical_criterion_code
7971          , C_MERGE_IMPACT_NEW merge_impact
7972       FROM xla_aad_header_ac_assgns s
7973          , xla_prod_acct_headers b
7974      WHERE s.application_id              = g_application_id
7975        AND s.amb_context_code            = g_staging_context_code
7976        AND b.application_id              = g_application_id
7977        AND b.amb_context_code            = g_amb_context_code
7978        AND b.product_rule_type_code      = s.product_rule_type_code
7979        AND b.product_rule_code           = s.product_rule_code
7980        AND b.event_class_code            = s.event_class_code
7981        AND b.event_type_code             = s.event_type_code
7982        AND NOT EXISTS
7983            (SELECT 1
7984               FROM xla_aad_header_ac_assgns w
7985              WHERE w.application_id                 = g_application_id
7986                AND w.amb_context_code               = g_amb_context_code
7987                AND w.product_rule_type_code         = s.product_rule_type_code
7988                AND w.product_rule_code              = s.product_rule_code
7989                AND w.event_class_code               = s.event_class_code
7990                AND w.event_type_code                = s.event_type_code
7991                AND w.analytical_criterion_type_code = s.analytical_criterion_type_code
7992                AND w.analytical_criterion_code      = s.analytical_criterion_code);
7993 
7994   l_parent_key          VARCHAR2(240);
7995   l_key                 VARCHAR2(240);
7996   l_log_module          VARCHAR2(240);
7997 BEGIN
7998   IF g_log_enabled THEN
7999     l_log_module := C_DEFAULT_MODULE||'.compare_hdr_ac_assgns';
8000   END IF;
8001 
8002   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8003     trace(p_msg    => 'BEGIN of function compare_hdr_ac_assgns',
8004           p_module => l_log_module,
8005           p_level  => C_LEVEL_PROCEDURE);
8006   END IF;
8007 
8008   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8009     trace(p_msg    => 'BEGIN LOOP: updated header ac assgns',
8010           p_module => l_log_module,
8011           p_level  => C_LEVEL_PROCEDURE);
8012   END IF;
8013 
8014   FOR l_comp IN c_comp LOOP
8015 
8016     l_parent_key := l_comp.product_rule_type_code||C_CHAR||
8017                     l_comp.product_rule_code||C_CHAR||
8018                     l_comp.event_class_code||C_CHAR||
8019                     l_comp.event_type_code;
8020 
8021     l_key := l_comp.analytical_criterion_type_code||C_CHAR||
8022              l_comp.analytical_criterion_code;
8023 
8024     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8025       trace(p_msg    => 'LOOP: updated header ac assgn - '||l_key,
8026             p_module => l_log_module,
8027             p_level  => C_LEVEL_PROCEDURE);
8028     END IF;
8029 
8030     IF (NOT key_exists('HAC'||C_CHAR||l_parent_key||C_CHAR||l_key)) THEN
8031       record_updated_component
8032           (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
8033           ,p_parent_component_key  => l_parent_key
8034           ,p_component_type        => 'AMB_AC'
8035           ,p_component_key         => l_key
8036           ,p_merge_impact          => l_comp.merge_impact
8037           ,p_component_owner_code  => l_comp.analytical_criterion_type_code
8038           ,p_component_code        => l_comp.analytical_criterion_code);
8039 
8040       record_updated_header_assgn
8041           (p_product_rule_type_code => l_comp.product_rule_type_code
8042           ,p_product_rule_code      => l_comp.product_rule_code
8043           ,p_event_class_code       => l_comp.event_class_code
8044           ,p_event_type_code        => l_comp.event_type_code
8045           ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
8046     END IF;
8047   END LOOP;
8048 
8049   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8050     trace(p_msg    => 'END LOOP: updated header ac assgns',
8051           p_module => l_log_module,
8052           p_level  => C_LEVEL_PROCEDURE);
8053   END IF;
8054 
8055   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8056     trace(p_msg    => 'END of function compare_hdr_ac_assgns',
8057           p_module => l_log_module,
8058           p_level  => C_LEVEL_PROCEDURE);
8059   END IF;
8060 
8061 EXCEPTION
8062   WHEN xla_exceptions_pkg.application_exception THEN
8063     RAISE;
8064   WHEN OTHERS THEN
8065    xla_exceptions_pkg.raise_message
8066       (p_location => l_log_module);
8067 END compare_hdr_ac_assgns;
8068 
8069 
8070 --=============================================================================
8071 --
8072 -- Name: compare_hdr_acct_attrs
8073 -- Description:
8074 --
8075 --=============================================================================
8076 PROCEDURE compare_hdr_acct_attrs
8077 IS
8078   CURSOR c_comp IS
8079     SELECT s.product_rule_type_code
8080          , s.product_rule_code
8081          , s.event_class_code
8082          , s.event_type_code
8083          , s.accounting_attribute_code
8084          , CASE WHEN w.accounting_attribute_code IS NULL
8085                 THEN C_MERGE_IMPACT_NEW
8086                 ELSE C_MERGE_IMPACT_UPDATED END merge_impact
8087          ,s.event_class_default_flag s_event_class_default_flag
8088          ,w.event_class_default_flag w_event_class_default_flag
8089          ,s.source_application_id    s_source_application_id
8090          ,w.source_application_id    w_source_application_id
8091          ,s.source_type_code         s_source_type_code
8092          ,w.source_type_code         w_source_type_code
8093          ,s.source_code              s_source_code
8094          ,w.source_code              w_source_code
8095       FROM xla_aad_hdr_acct_attrs s
8096            JOIN xla_prod_acct_headers b
8097            ON  b.application_id              = g_application_id
8098            AND b.amb_context_code            = g_amb_context_code
8099            AND b.product_rule_type_code      = s.product_rule_type_code
8100            AND b.product_rule_code           = s.product_rule_code
8101            AND b.event_class_code            = s.event_class_code
8102            AND b.event_type_code             = s.event_type_code
8103            LEFT OUTER JOIN xla_aad_hdr_acct_attrs w
8104            ON  w.application_id                 = g_application_id
8105            AND w.amb_context_code               = g_amb_context_code
8106            AND w.product_rule_type_code         = s.product_rule_type_code
8107            AND w.product_rule_code              = s.product_rule_code
8108            AND w.event_class_code               = s.event_class_code
8109            AND w.event_type_code                = s.event_type_code
8110            AND w.accounting_attribute_code      = s.accounting_attribute_code
8111      WHERE s.application_id              = g_application_id
8112        AND s.amb_context_code            = g_staging_context_code
8113        AND (w.accounting_attribute_code IS NULL OR
8114             s.event_class_default_flag <> w.event_class_default_flag OR
8115             s.source_application_id    <> w.source_application_id OR
8116             s.source_type_code         <> w.source_type_code OR
8117             s.source_code              <> w.source_code);
8118 
8119   l_key                 VARCHAR2(240);
8120   l_log_module          VARCHAR2(240);
8121 BEGIN
8122   IF g_log_enabled THEN
8123     l_log_module := C_DEFAULT_MODULE||'.compare_hdr_acct_attrs';
8124   END IF;
8125 
8126   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8127     trace(p_msg    => 'BEGIN of function compare_hdr_acct_attrs',
8128           p_module => l_log_module,
8129           p_level  => C_LEVEL_PROCEDURE);
8130   END IF;
8131 
8132   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8133     trace(p_msg    => 'BEGIN LOOP: updated header acct attrs',
8134           p_module => l_log_module,
8135           p_level  => C_LEVEL_PROCEDURE);
8136   END IF;
8137 
8138   FOR l_comp IN c_comp LOOP
8139 
8140     l_key := l_comp.product_rule_type_code||C_CHAR||
8141              l_comp.product_rule_code||C_CHAR||
8142              l_comp.event_class_code||C_CHAR||
8143              l_comp.event_type_code||C_CHAR||
8144              l_comp.accounting_attribute_code;
8145 
8146     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8147       trace(p_msg    => 'LOOP: updated header acct attr - '||l_key,
8148             p_module => l_log_module,
8149             p_level  => C_LEVEL_PROCEDURE);
8150     END IF;
8151 
8152     IF (NOT key_exists('HAA'||C_CHAR||l_key)) THEN
8153 
8154       record_updated_header_assgn
8155           (p_product_rule_type_code => l_comp.product_rule_type_code
8156           ,p_product_rule_code      => l_comp.product_rule_code
8157           ,p_event_class_code       => l_comp.event_class_code
8158           ,p_event_type_code        => l_comp.event_type_code
8159           ,p_merge_impact           => C_MERGE_IMPACT_UPDATED);
8160 
8161       IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
8162 
8163         IF (l_comp.s_event_class_default_flag <> l_comp.w_event_class_default_flag) THEN
8164 
8165           record_updated_property
8166             (p_component_type          => 'AMB_AAD_EVENT_TYPE'
8167             ,p_component_key           => l_key
8168             ,p_property                => 'ACCOUNTING_REQUIRED_FLAG'
8169             ,p_old_value               => l_comp.w_event_class_default_flag
8170             ,p_new_value               => l_comp.s_event_class_default_flag
8171             ,p_lookup_type             => 'XLA_YES_NO');
8172 
8173         END IF;
8174 
8175         IF (l_comp.s_source_application_id <> l_comp.w_source_application_id OR
8176             l_comp.s_source_type_code      <> l_comp.s_source_type_code OR
8177             l_comp.s_source_code           <> l_comp.s_source_code) THEN
8178           record_updated_source
8179             (p_component_type          => 'AMB_AAD_EVENT_TYPE'
8180             ,p_component_key           => l_key
8181             ,p_property                => 'SOURCE_CODE'
8182             ,p_old_source_app_id       => l_comp.w_source_application_id
8183             ,p_old_source_type_code    => l_comp.w_source_type_code
8184             ,p_old_source_code         => l_comp.w_source_code
8185             ,p_new_source_app_id       => l_comp.s_source_application_id
8186             ,p_new_source_type_code    => l_comp.s_source_type_code
8187             ,p_new_source_code         => l_comp.s_source_code);
8188 
8189         END IF;
8190       END IF;
8191 
8192     END IF;
8193 
8194   END LOOP;
8195 
8196   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8197     trace(p_msg    => 'END LOOP: updated header acct attrs',
8198           p_module => l_log_module,
8199           p_level  => C_LEVEL_PROCEDURE);
8200   END IF;
8201 
8202   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8203     trace(p_msg    => 'END of function compare_hdr_acct_attrs',
8204           p_module => l_log_module,
8205           p_level  => C_LEVEL_PROCEDURE);
8206   END IF;
8207 
8208 EXCEPTION
8209   WHEN xla_exceptions_pkg.application_exception THEN
8210     RAISE;
8211   WHEN OTHERS THEN
8212    xla_exceptions_pkg.raise_message
8213       (p_location => l_log_module);
8214 END compare_hdr_acct_attrs;
8215 
8216 
8217 
8218 
8219 --=============================================================================
8220 --
8221 -- Name: compare_header_assgns
8222 -- Description:
8223 --
8224 --=============================================================================
8225 PROCEDURE compare_header_assgns
8226 IS
8227   CURSOR c_comp IS
8228     -- Retreive new, deleted, and updated event class/event type assignment
8229     SELECT s.product_rule_type_code
8230          , s.product_rule_code
8231          , s.event_class_code
8232          , s.event_type_code
8233          , CASE WHEN w.event_type_code IS NULL
8234                 THEN C_MERGE_IMPACT_NEW
8235                 ELSE C_MERGE_IMPACT_UPDATED
8236                 END                    merge_impact
8237          , s.accounting_required_flag  s_accounting_required_flag
8238          , w.accounting_required_flag  w_accounting_required_flag
8239          , s.description_type_code     s_description_type_code
8240          , w.description_type_code     w_description_type_code
8241          , s.description_code          s_description_code
8242          , w.description_code          w_description_code
8243       FROM xla_prod_acct_headers s
8244            JOIN xla_product_rules_b b
8245            ON  b.application_id         = g_application_id
8246            AND b.amb_context_code       = g_amb_context_code
8247            AND b.product_rule_type_code = s.product_rule_type_code
8248            AND b.product_rule_code      = s.product_rule_code
8249            LEFT OUTER JOIN xla_prod_acct_headers w
8250            ON  w.application_id         = g_application_id
8251            AND w.amb_context_code       = g_amb_context_code
8252            AND w.product_rule_type_code = s.product_rule_type_code
8253            AND w.product_rule_code      = s.product_rule_code
8254            AND w.event_class_code       = s.event_class_code
8255            AND w.event_type_code        = s.event_type_code
8256      WHERE s.application_id             = g_application_id
8257        AND s.amb_context_code           = g_staging_context_code
8258        AND (w.event_type_code                   IS NULL OR
8259             NVL(s.accounting_required_flag,C_CHAR) <> NVL(w.accounting_required_flag,C_CHAR) OR
8260             NVL(s.description_type_code,C_CHAR)    <> NVL(w.description_type_code,C_CHAR) OR
8261             NVL(s.description_code,C_CHAR)         <> NVL(w.description_code,C_CHAR));
8262 
8263   l_key                 VARCHAR2(240);
8264   l_parent_key          VARCHAR2(240);
8265   l_log_module          VARCHAR2(240);
8266 BEGIN
8267   IF g_log_enabled THEN
8268     l_log_module := C_DEFAULT_MODULE||'.compare_header_assgns';
8269   END IF;
8270 
8271   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8272     trace(p_msg    => 'BEGIN of function compare_header_assgns',
8273           p_module => l_log_module,
8274           p_level  => C_LEVEL_PROCEDURE);
8275   END IF;
8276 
8277   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8278     trace(p_msg    => 'BEGIN LOOP: updated header assgns',
8279           p_module => l_log_module,
8280           p_level  => C_LEVEL_PROCEDURE);
8281   END IF;
8282 
8283   FOR l_comp IN c_comp LOOP
8284 
8285     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8286       trace(p_msg    => 'LOOP: updated header assgn - '||
8287                         l_comp.product_rule_type_code||C_CHAR||
8288                         l_comp.product_rule_code||C_CHAR||
8289                         l_comp.event_class_code||C_CHAR||
8290                         l_comp.event_type_code||C_CHAR||
8291                         l_comp.merge_impact,
8292             p_module => l_log_module,
8293             p_level  => C_LEVEL_PROCEDURE);
8294     END IF;
8295 
8296     record_updated_header_assgn
8297           (p_product_rule_type_code => l_comp.product_rule_type_code
8298           ,p_product_rule_code      => l_comp.product_rule_code
8299           ,p_event_class_code       => l_comp.event_class_code
8300           ,p_event_type_code        => l_comp.event_type_code
8301           ,p_merge_impact           => l_comp.merge_impact);
8302 
8303     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
8304 
8305       l_key := l_comp.product_rule_type_code||C_CHAR||
8306                l_comp.product_rule_code||C_CHAR||
8307                l_comp.event_class_code||C_CHAR||
8308                l_comp.event_type_code;
8309 
8310       IF (l_comp.s_accounting_required_flag <> l_comp.w_accounting_required_flag) THEN
8311         record_updated_property
8312           (p_component_type          => 'AMB_AAD_EVENT_TYPE'
8313           ,p_component_key           => l_key
8314           ,p_property                => 'ACCOUNTING_REQUIRED_FLAG'
8315           ,p_old_value               => l_comp.w_accounting_required_flag
8316           ,p_new_value               => l_comp.s_accounting_required_flag
8317           ,p_lookup_type             => 'XLA_YES_NO');
8318       END IF;
8319 
8320       IF (NVL(l_comp.s_description_type_code,C_CHAR) <> NVL(l_comp.w_description_type_code,C_CHAR) OR
8321           NVL(l_comp.s_description_code,C_CHAR)      <> NVL(l_comp.w_description_code,C_CHAR)) THEN
8322 
8323         IF (l_comp.s_description_code IS NOT NULL) THEN
8324           l_parent_key := l_key;
8325           l_key := l_comp.s_description_type_code||C_CHAR||
8326                    l_comp.s_description_code;
8327 
8328           IF (NOT key_exists('HDESC'||C_CHAR||l_key)) THEN
8329             record_updated_component
8330               (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
8331               ,p_parent_component_key  => l_parent_key
8332               ,p_component_type        => 'AMB_DESCRIPTION'
8333               ,p_component_key         => l_key
8334               ,p_merge_impact          => C_MERGE_IMPACT_NEW
8335               ,p_component_owner_code  => l_comp.s_description_type_code
8336               ,p_component_code        => l_comp.s_description_code);
8337           END IF;
8338         END IF;
8339 
8340         IF (l_comp.w_description_code IS NOT NULL) THEN
8341           l_key := l_comp.s_description_type_code||C_CHAR||
8342                    l_comp.s_description_code;
8343 
8344           IF (NOT key_exists('HDESC'||C_CHAR||l_key)) THEN
8345             record_updated_component
8346               (p_parent_component_type => 'AMB_AAD_EVENT_TYPE'
8347               ,p_parent_component_key  => l_parent_key
8348               ,p_component_type        => 'AMB_DESCRIPTION'
8349               ,p_component_key         => l_key
8350               ,p_merge_impact          => C_MERGE_IMPACT_DELETED
8351               ,p_component_owner_code  => l_comp.w_description_type_code
8352               ,p_component_code        => l_comp.w_description_code);
8353           END IF;
8354         END IF;
8355       END IF;
8356 
8357     END IF;
8358 
8359   END LOOP;
8360 
8361   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8362     trace(p_msg    => 'END LOOP: updated header assgns',
8363           p_module => l_log_module,
8364           p_level  => C_LEVEL_PROCEDURE);
8365   END IF;
8366 
8367   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8368     trace(p_msg    => 'END of function compare_header_assgns',
8369           p_module => l_log_module,
8370           p_level  => C_LEVEL_PROCEDURE);
8371   END IF;
8372 
8373 EXCEPTION
8374   WHEN xla_exceptions_pkg.application_exception THEN
8375     RAISE;
8376   WHEN OTHERS THEN
8377    xla_exceptions_pkg.raise_message
8378       (p_location => l_log_module);
8379 END compare_header_assgns;
8380 
8381 
8382 --=============================================================================
8383 --
8384 -- Name: compare_aads
8385 -- Description:
8386 --
8387 --=============================================================================
8388 PROCEDURE compare_aads
8389 IS
8390   -- Retrieve new, deleted, and updated AAD
8391   CURSOR c_comps IS
8392     SELECT bs.product_rule_type_code
8393          , bs.product_rule_code
8394          , CASE WHEN bw.application_id IS NULL
8395                 THEN C_MERGE_IMPACT_NEW
8396                 ELSE C_MERGE_IMPACT_UPDATED
8397                 END                merge_impact
8398          , ts.name                 s_name
8399          , tw.name                 w_name
8400          , ts.description          s_description
8401          , tw.description          w_description
8402          , bs.transaction_coa_id   s_transaction_coa_id
8403          , bw.transaction_coa_id   w_transaction_coa_id
8404          , bs.accounting_coa_id    s_accounting_coa_id
8405          , bw.accounting_coa_id    w_accounting_coa_id
8406          , bs.enabled_flag         s_enabled_flag
8407          , bw.enabled_flag         w_enabled_flag
8408          , bs.locking_status_flag  s_locking_status_flag
8409          , bw.locking_status_flag  w_locking_status_flag
8410          , bs.product_rule_version s_product_rule_version
8411          , bw.product_rule_version w_product_rule_version
8412          , bs.version_num          s_version_num
8413          , bw.version_num          w_version_num
8414       FROM xla_product_rules_b bs
8415            JOIN xla_product_rules_tl ts
8416            ON  ts.application_id         = bs.application_id
8417            AND ts.amb_context_code       = bs.amb_context_code
8418            AND ts.product_rule_type_code = bs.product_rule_type_code
8419            AND ts.product_rule_code      = bs.product_rule_code
8420            AND ts.language               = USERENV('LANG')
8421            LEFT OUTER JOIN xla_product_rules_b bw
8422            ON  bw.application_id         = bs.application_id
8423            AND bw.amb_context_code       = g_amb_context_code
8424            AND bw.product_rule_type_code = bs.product_rule_type_code
8425            AND bw.product_rule_code      = bs.product_rule_code
8426            LEFT OUTER JOIN xla_product_rules_tl tw
8427            ON  tw.application_id         = bw.application_id
8428            AND tw.amb_context_code       = bw.amb_context_code
8429            AND tw.product_rule_type_code = bw.product_rule_type_code
8430            AND tw.product_rule_code      = bw.product_rule_code
8431            AND tw.language               = USERENV('LANG')
8432      WHERE bs.application_id    = g_application_id
8433        AND bs.amb_context_code  = g_staging_context_code
8434        AND (bw.application_id                  IS NULL                                 OR
8435             NVL(ts.name,C_CHAR)                <> NVL(tw.name, C_CHAR)                 OR
8436             NVL(ts.description,C_CHAR)         <> NVL(tw.description, C_CHAR)          OR
8437             NVL(bs.transaction_coa_id,C_NUM)   <> NVL(bw.transaction_coa_id, C_NUM)    OR
8438             NVL(bs.accounting_coa_id,C_NUM)    <> NVL(bw.accounting_coa_id, C_NUM)     OR
8439             NVL(bs.enabled_flag,C_CHAR)        <> NVL(bw.enabled_flag, C_CHAR)         OR
8440             NVL(bs.locking_status_flag,C_CHAR) <> NVL(bw.locking_status_flag, C_CHAR)  OR
8441             NVL(bs.product_rule_version,C_CHAR)<> NVL(bw.product_rule_version, C_CHAR) OR
8442             NVL(bs.version_num,C_NUM)          <> NVL(bw.version_num, C_NUM));
8443 
8444   l_key                 VARCHAR2(240);
8445   l_log_module          VARCHAR2(240);
8446 BEGIN
8447   IF g_log_enabled THEN
8448     l_log_module := C_DEFAULT_MODULE||'.compare_aads';
8449   END IF;
8450 
8451   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8452     trace(p_msg    => 'BEGIN of function compare_aads',
8453           p_module => l_log_module,
8454           p_level  => C_LEVEL_PROCEDURE);
8455   END IF;
8456 
8457   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8458     trace(p_msg    => 'BEGIN LOOP: updated aads',
8459           p_module => l_log_module,
8460           p_level  => C_LEVEL_PROCEDURE);
8461   END IF;
8462 
8463   FOR l_comp IN c_comps LOOP
8464 
8465     l_key := l_comp.product_rule_type_code||C_CHAR||
8466              l_comp.product_rule_code;
8467 
8468     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8469       trace(p_msg    => 'LOOP: updated aad - '||l_key,
8470             p_module => l_log_module,
8471             p_level  => C_LEVEL_PROCEDURE);
8472     END IF;
8473 
8474     record_updated_aad
8475           (p_product_rule_type_code => l_comp.product_rule_type_code
8476           ,p_product_rule_code      => l_comp.product_rule_code
8477           ,p_merge_impact           => l_comp.merge_impact);
8478 
8479     IF (l_comp.merge_impact = C_MERGE_IMPACT_UPDATED) THEN
8480 
8481       IF (l_comp.s_name <> l_comp.w_name) THEN
8482         record_updated_property
8483           (p_component_type          => 'AMB_AAD'
8484           ,p_component_key           => l_key
8485           ,p_property                => 'NAME'
8486           ,p_old_value               => l_comp.w_name
8487           ,p_new_value               => l_comp.s_name);
8488       END IF;
8489 
8490       IF (NVL(l_comp.s_description,C_CHAR) <> NVL(l_comp.w_description,C_CHAR)) THEN
8491         record_updated_property
8492           (p_component_type          => 'AMB_AAD'
8493           ,p_component_key           => l_key
8494           ,p_property                => 'DESCRIPTION'
8495           ,p_old_value               => l_comp.w_description
8496           ,p_new_value               => l_comp.s_description);
8497       END IF;
8498 
8499       IF (NVL(l_comp.s_transaction_coa_id,C_NUM) <> NVL(l_comp.w_transaction_coa_id,C_NUM)) THEN
8500         record_updated_property
8501           (p_component_type          => 'AMB_AAD'
8502           ,p_component_key           => l_key
8503           ,p_property                => 'TRANSACTION_COA'
8504           ,p_old_value               => l_comp.w_transaction_coa_id
8505           ,p_new_value               => l_comp.s_transaction_coa_id);
8506       END IF;
8507 
8508       IF (NVL(l_comp.s_accounting_coa_id,C_NUM) <> NVL(l_comp.w_accounting_coa_id,C_NUM)) THEN
8509         record_updated_property
8510           (p_component_type          => 'AMB_AAD'
8511           ,p_component_key           => l_key
8512           ,p_property                => 'ACCOUNTING_COA'
8513           ,p_old_value               => l_comp.w_accounting_coa_id
8514           ,p_new_value               => l_comp.s_accounting_coa_id);
8515       END IF;
8516 
8517       IF (l_comp.s_enabled_flag <> l_comp.w_enabled_flag) THEN
8518         record_updated_property
8519           (p_component_type          => 'AMB_AAD'
8520           ,p_component_key           => l_key
8521           ,p_property                => 'ENABLED'
8522           ,p_old_value               => l_comp.w_enabled_flag
8523           ,p_new_value               => l_comp.s_enabled_flag
8524           ,p_lookup_type             => 'XLA_YES_NO');
8525       END IF;
8526 
8527       IF (l_comp.s_locking_status_flag <> l_comp.w_locking_status_flag) THEN
8528         record_updated_property
8529           (p_component_type          => 'AMB_AAD'
8530           ,p_component_key           => l_key
8531           ,p_property                => 'LOCKED'
8532           ,p_old_value               => l_comp.w_locking_status_flag
8533           ,p_new_value               => l_comp.s_locking_status_flag
8534           ,p_lookup_type             => 'XLA_YES_NO');
8535       END IF;
8536 
8537       IF (NVL(l_comp.s_product_rule_version,C_CHAR) <> NVL(l_comp.w_product_rule_version,C_CHAR)) THEN
8538         record_updated_property
8539           (p_component_type          => 'AMB_AAD'
8540           ,p_component_key           => l_key
8541           ,p_property                => 'PRODUCT_RULE_VERSION'
8542           ,p_old_value               => l_comp.w_product_rule_version
8543           ,p_new_value               => l_comp.s_product_rule_version);
8544       END IF;
8545 
8546       IF (NVL(l_comp.s_version_num,C_NUM) <> NVL(l_comp.w_version_num,C_NUM)) THEN
8547         record_updated_property
8548           (p_component_type          => 'AMB_AAD'
8549           ,p_component_key           => l_key
8550           ,p_property                => 'VERSION_NUM'
8551           ,p_old_value               => l_comp.w_version_num
8552           ,p_new_value               => l_comp.s_version_num);
8553       END IF;
8554 
8555     END IF;
8556   END LOOP;
8557 
8558   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8559     trace(p_msg    => 'END LOOP: updated aads',
8560           p_module => l_log_module,
8561           p_level  => C_LEVEL_PROCEDURE);
8562   END IF;
8563 
8564   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8565     trace(p_msg    => 'END of function compare_aads',
8566           p_module => l_log_module,
8567           p_level  => C_LEVEL_PROCEDURE);
8568   END IF;
8569 
8570 EXCEPTION
8571   WHEN xla_exceptions_pkg.application_exception THEN
8572     RAISE;
8573   WHEN OTHERS THEN
8574    xla_exceptions_pkg.raise_message
8575       (p_location => l_log_module);
8576 END compare_aads;
8577 
8578 --=============================================================================
8579 --
8580 -- Name; analyze_aads
8581 -- Description:
8582 --
8583 --=============================================================================
8584 PROCEDURE analyze_aads
8585 IS
8586   l_log_module    VARCHAR2(240);
8587 BEGIN
8588   IF g_log_enabled THEN
8589     l_log_module := C_DEFAULT_MODULE||'.analyze_aads';
8590   END IF;
8591 
8592   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8593     trace(p_msg    => 'BEGIN of function analyze_aads',
8594           p_module => l_log_module,
8595           p_level  => C_LEVEL_PROCEDURE);
8596   END IF;
8597 
8598   IF (g_user_mode = 'C') THEN
8599     analyze_deleted_oracle_comps;
8600     compare_mapping_set_values;
8601     compare_mapping_sets;
8602   END IF;
8603 
8604   -- compare journal entry setups
8605   compare_jlt_acct_attrs;
8606   compare_jlts;
8607 
8608   compare_ac_sources;
8609   compare_ac_details;
8610   compare_acs;
8611 
8612   compare_desc_priorities;
8613   compare_descs;
8614 
8615   compare_adr_details;
8616   compare_adrs;
8617 
8618   -- compare journal entry definition assignments
8619   compare_mpa_jlt_adr_assgns;
8620   compare_mpa_jlt_ac_assgns;
8621   compare_mpa_jlt_assgns;
8622   compare_mpa_hdr_ac_assgns;
8623   compare_mpa_hdr_assgns;
8624   compare_line_adr_assgns;
8625   compare_line_ac_assgns;
8626   compare_jld_jlt_assgns;
8627   compare_jlds;
8628 
8629   -- compare header assignments
8630   compare_jld_assgns;
8631   compare_hdr_ac_assgns;
8632   compare_hdr_acct_attrs;
8633   compare_header_assgns;
8634 
8635   -- compare aads
8636   compare_aads;
8637 
8638   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8639     trace(p_msg    => 'END of function analyze_aads',
8640           p_module => l_log_module,
8641           p_level  => C_LEVEL_PROCEDURE);
8642   END IF;
8643 
8644 EXCEPTION
8645 WHEN OTHERS THEN
8646   xla_aad_loader_util_pvt.stack_error
8647                (p_appli_s_name    => 'XLA'
8648                ,p_msg_name        => 'XLA_COMMON_ERROR'
8649                ,p_token_1         => 'LOCATION'
8650                ,p_value_1         => 'xla_aad_merge_analysis_pvt.analyze_aads'
8651                ,p_token_2         => 'ERROR'
8652                ,p_value_2         => 'Unhandled exception');
8653   RAISE;
8654 
8655 END analyze_aads;
8656 
8657 
8658 
8659 --=============================================================================
8660 --
8661 -- Name: group_aads
8662 -- Description: This API groups the AAD with the same group number if they
8663 --              shares any commom components.  The group number information is
8664 --              stored in the g_aad_groups global array.
8665 --
8666 --=============================================================================
8667 /*
8668 PROCEDURE group_aads
8669 IS
8670   l_curr_group_num     INTEGER;
8671 
8672   -- Cursor to return all AADs to be grouped
8673   CURSOR c_aad IS
8674     SELECT product_rule_type_code
8675           ,product_rule_code
8676           ,decode(min(decode(amb_context_code,g_amb_context_code,1,2)),1,'Y','N') required_flag
8677       FROM xla_product_rules_b
8678      WHERE application_id   = g_application_id
8679        AND amb_context_code IN (g_amb_context_code,g_staging_context_code)
8680      GROUP BY product_rule_type_code, product_rule_code;
8681 
8682   -- Cursor to return AADs that shares any common component with the AADs that
8683   -- was assigned with the group l_curr_group_num
8684   CURSOR c_aad_group IS
8685   SELECT h.product_rule_type_code, h.product_rule_code
8686     FROM xla_prod_acct_headers h
8687    WHERE h.application_id      = g_application_id
8688      AND h.amb_context_code    IN (g_amb_context_code,g_staging_context_code)
8689      AND EXISTS (SELECT 1
8690                    FROM xla_prod_acct_headers pah
8691                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8692                   WHERE pah.application_id         = g_application_id
8693                     AND pah.amb_context_code       IN (g_amb_context_code,g_staging_context_code)
8694                     AND pah.description_type_code  = h.description_type_code
8695                     AND pah.description_code       = h.description_code
8696                     AND pah.product_rule_type_code = grp.product_rule_type_code
8697                     AND pah.product_rule_code      = grp.product_rule_code
8698                     AND grp.group_num              = l_curr_group_num
8699                   UNION
8700                  SELECT 1
8701                    FROM xla_aad_line_defn_assgns xal
8702                        ,xla_line_defn_jlt_assgns xjl
8703                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8704                   WHERE xjl.application_id             = g_application_id
8705                     AND xjl.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8706                     AND xjl.description_type_code      = h.description_type_code
8707                     AND xjl.description_code           = h.description_code
8708                     AND xal.application_id             = g_application_id
8709                     AND xal.amb_context_code           = xjl.amb_context_code
8710                     AND xal.product_rule_type_code     = grp.product_rule_type_code
8711                     AND xal.product_rule_code          = grp.product_rule_code
8712                     AND xal.event_class_code           = xjl.event_class_code
8713                     AND xal.event_type_code            = xjl.event_type_code
8714                     AND xal.line_definition_owner_code = xjl.line_definition_owner_code
8715                     AND xal.line_definition_code       = xjl.line_definition_code
8716                     AND grp.group_num                  = l_curr_group_num)
8717    UNION
8718   SELECT xal.product_rule_type_code, xal.product_rule_code
8719     FROM xla_line_defn_jlt_assgns h
8720         ,xla_aad_line_defn_assgns xal
8721    WHERE h.application_id             = xal.application_id
8722      AND h.amb_context_code           = xal.amb_context_code
8723      AND h.event_class_code           = xal.event_class_code
8724      AND h.event_type_code            = xal.event_type_code
8725      AND h.line_definition_owner_code = xal.line_definition_owner_code
8726      AND h.line_definition_code       = xal.line_definition_code
8727      AND h.application_id             = g_application_id
8728      AND h.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8729      AND EXISTS (SELECT 1
8730                    FROM xla_prod_acct_headers pah
8731                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8732                   WHERE pah.application_id         = g_application_id
8733                     AND pah.amb_context_code       IN (g_amb_context_code,g_staging_context_code)
8734                     AND pah.description_type_code  = h.description_type_code
8735                     AND pah.description_code       = h.description_code
8736                     AND pah.product_rule_type_code = grp.product_rule_type_code
8737                     AND pah.product_rule_code      = grp.product_rule_code
8738                     AND grp.group_num              = l_curr_group_num
8739                   UNION
8740                  SELECT 1
8741                    FROM xla_aad_line_defn_assgns xal
8742                        ,xla_line_defn_jlt_assgns xjl
8743                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8744                   WHERE xjl.application_id             = g_application_id
8745                     AND xjl.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8746                     AND xjl.description_type_code      = h.description_type_code
8747                     AND xjl.description_code           = h.description_code
8748                     AND xal.application_id             = xjl.application_id
8749                     AND xal.amb_context_code           = xjl.amb_context_code
8750                     AND xal.product_rule_type_code     = grp.product_rule_type_code
8751                     AND xal.product_rule_code          = grp.product_rule_code
8752                     AND xal.event_class_code           = xjl.event_class_code
8753                     AND xal.event_type_code            = xjl.event_type_code
8754                     AND xal.line_definition_owner_code = xjl.line_definition_owner_code
8755                     AND xal.line_definition_code       = xjl.line_definition_code
8756                     AND grp.group_num                  = l_curr_group_num)
8757   UNION
8758   SELECT xal.product_rule_type_code, xal.product_rule_code
8759     FROM xla_line_defn_jlt_assgns h
8760         ,xla_aad_line_defn_assgns xal
8761    WHERE h.application_id             = xal.application_id
8762      AND h.amb_context_code           = xal.amb_context_code
8763      AND h.event_class_code           = xal.event_class_code
8764      AND h.event_type_code            = xal.event_type_code
8765      AND h.line_definition_owner_code = xal.line_definition_owner_code
8766      AND h.line_definition_code       = xal.line_definition_code
8767      AND h.application_id             = g_application_id
8768      AND h.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8769      AND EXISTS (SELECT 1
8770                    FROM xla_aad_line_defn_assgns xad
8771                        ,xla_line_defn_jlt_assgns xjl
8772                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8773                   WHERE xjl.application_id             = g_application_id
8774                     AND xjl.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8775                     AND xjl.event_class_code           = h.event_class_code
8776                     AND xjl.accounting_line_type_code  = h.accounting_line_type_code
8777                     AND xjl.accounting_line_code       = h.accounting_line_code
8778                     AND xad.event_class_code           = xjl.event_class_code
8779                     AND xad.event_type_code            = xjl.event_type_code
8780                     AND xad.line_definition_owner_code = xjl.line_definition_owner_code
8781                     AND xad.line_definition_code       = xjl.line_definition_code
8782                     AND xad.application_id             = xjl.application_id
8783                     AND xad.amb_context_code           = xjl.amb_context_code
8784                     AND xad.product_rule_type_code     = grp.product_rule_type_code
8785                     AND xad.product_rule_code          = grp.product_rule_code
8786                     AND grp.group_num                  = l_curr_group_num)
8787   UNION
8788   SELECT h.product_rule_type_code, h.product_rule_code
8789     FROM xla_aad_header_ac_assgns h
8790    WHERE h.application_id      = g_application_id
8791      AND h.amb_context_code    IN (g_amb_context_code,g_staging_context_code)
8792      AND EXISTS (SELECT 1
8793                    FROM xla_aad_header_ac_assgns xah
8794                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8795                   WHERE xah.analytical_criterion_type_code = h.analytical_criterion_type_code
8796                     AND xah.analytical_criterion_code      = h.analytical_criterion_code
8797                     AND xah.application_id                 = g_application_id
8798                     AND xah.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8799                     AND xah.product_rule_type_code         = grp.product_rule_type_code
8800                     AND xah.product_rule_code              = grp.product_rule_code
8801                     AND grp.group_num                      = l_curr_group_num
8802                   UNION
8803                  SELECT 1
8804                    FROM xla_line_defn_ac_assgns  xac
8805                        ,xla_aad_line_defn_assgns xal
8806                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8807                   WHERE xac.analytical_criterion_type_code = h.analytical_criterion_type_code
8808                     AND xac.analytical_criterion_code      = h.analytical_criterion_code
8809                     AND xac.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8810                     AND xac.application_id                 = g_application_id
8811                     AND xac.event_class_code               = xal.event_class_code
8812                     AND xac.event_type_code                = xal.event_type_code
8813                     AND xac.line_definition_owner_code     = xal.line_definition_owner_code
8814                     AND xac.line_definition_code           = xal.line_definition_code
8815                     AND xal.application_id                 = xac.application_id
8816                     AND xal.amb_context_code               = xac.amb_context_code
8817                     AND xal.product_rule_type_code         = grp.product_rule_type_code
8818                     AND xal.product_rule_code              = grp.product_rule_code
8819                     AND grp.group_num                      = l_curr_group_num)
8820    UNION
8821   SELECT xad.product_rule_type_code, xad.product_rule_code
8822     FROM xla_line_defn_ac_assgns  h
8823         ,xla_aad_line_defn_assgns xad
8824    WHERE h.application_id             = xad.application_id
8825      AND h.amb_context_code           = xad.amb_context_code
8826      AND h.event_class_code           = xad.event_class_code
8827      AND h.event_type_code            = xad.event_type_code
8828      AND h.line_definition_owner_code = xad.line_definition_owner_code
8829      AND h.line_definition_code       = xad.line_definition_code
8830      AND xad.application_id           = g_application_id
8831      AND xad.amb_context_code         = g_amb_context_code
8832      AND EXISTS (SELECT 1
8833                    FROM xla_aad_header_ac_assgns xah
8834                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8835                   WHERE xah.analytical_criterion_type_code = h.analytical_criterion_type_code
8836                     AND xah.analytical_criterion_code      = h.analytical_criterion_code
8837                     AND xah.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8838                     AND xah.application_id                 = g_application_id
8839                     AND xah.product_rule_type_code         = grp.product_rule_type_code
8840                     AND xah.product_rule_code              = grp.product_rule_code
8841                     AND grp.group_num                      = l_curr_group_num
8842                   UNION
8843                  SELECT 1
8844                    FROM xla_line_defn_ac_assgns  xac
8845                        ,xla_aad_line_defn_assgns xal
8846                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8847                   WHERE xac.analytical_criterion_type_code = h.analytical_criterion_type_code
8848                     AND xac.analytical_criterion_code      = h.analytical_criterion_code
8849                     AND xac.amb_context_code               IN (g_amb_context_code,g_staging_context_code)
8850                     AND xac.application_id                 = g_application_id
8851                     AND xac.event_class_code               = xal.event_class_code
8852                     AND xac.event_type_code                = xal.event_type_code
8853                     AND xac.line_definition_owner_code     = xal.line_definition_owner_code
8854                     AND xac.line_definition_code           = xal.line_definition_code
8855                     AND xal.application_id                 = xac.application_id
8856                     AND xal.amb_context_code               = xac.amb_context_code
8857                     AND xal.product_rule_type_code         = grp.product_rule_type_code
8858                     AND xal.product_rule_code              = grp.product_rule_code
8859                     AND grp.group_num                      = l_curr_group_num)
8860   UNION
8861   SELECT xad.product_rule_type_code, xad.product_rule_code
8862     FROM xla_line_defn_adr_assgns h
8863         ,xla_aad_line_defn_assgns xad
8864    WHERE h.application_id             = xad.application_id
8865      AND h.amb_context_code           = xad.amb_context_code
8866      AND h.event_class_code           = xad.event_class_code
8867      AND h.event_type_code            = xad.event_type_code
8868      AND h.line_definition_owner_code = xad.line_definition_owner_code
8869      AND h.line_definition_code       = xad.line_definition_code
8870      AND h.application_id             = g_application_id
8871      AND h.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8872      AND EXISTS (SELECT 1
8873                    FROM xla_line_defn_adr_assgns xac
8874                        ,xla_aad_line_defn_assgns xal
8875                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8876                   WHERE xac.application_id             = g_application_id
8877                     AND xac.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8878                     AND xac.segment_rule_type_code     = h.segment_rule_type_code
8879                     AND xac.segment_rule_code          = h.segment_rule_code
8880                     AND xac.event_class_code           = xal.event_class_code
8881                     AND xac.event_type_code            = xal.event_type_code
8882                     AND xac.line_definition_owner_code = xal.line_definition_owner_code
8883                     AND xac.line_definition_code       = xal.line_definition_code
8884                     AND xal.application_id             = xac.application_id
8885                     AND xal.amb_context_code           = xac.amb_context_code
8886                     AND xal.product_rule_type_code     = grp.product_rule_type_code
8887                     AND xal.product_rule_code          = grp.product_rule_code
8888                     AND grp.group_num                  = l_curr_group_num)
8889   UNION
8890   SELECT xal.product_rule_type_code, xal.product_rule_code
8891     FROM xla_line_defn_adr_assgns adr
8892         ,xla_aad_line_defn_assgns xal
8893         ,xla_seg_rule_details     xsr
8894    WHERE xal.application_id             = adr.application_id
8895      AND xal.amb_context_code           = adr.amb_context_code
8896      AND xal.event_class_code           = adr.event_class_code
8897      AND xal.event_type_code            = adr.event_type_code
8898      AND xal.line_definition_owner_code = adr.line_definition_owner_code
8899      AND xal.line_definition_code       = adr.line_definition_code
8900      AND adr.application_id             = xsr.application_id
8901      AND adr.amb_context_code           = xsr.amb_context_code
8902      AND adr.segment_rule_type_code     = xsr.segment_rule_type_code
8903      AND adr.segment_rule_code          = xsr.segment_rule_code
8904      AND xsr.application_id             = g_application_id
8905      AND xsr.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8906      AND EXISTS (SELECT 1
8907                    FROM xla_line_defn_adr_assgns adr2
8908                        ,xla_aad_line_defn_assgns xal2
8909                        ,xla_seg_rule_details     xsr2
8910                        ,TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type)) grp
8911                   WHERE xsr2.value_mapping_set_code     = xsr.value_mapping_set_code
8912                     AND xsr2.application_id             = adr2.application_id
8913                     AND xsr2.amb_context_code           = adr2.amb_context_code
8914                     AND xsr2.segment_rule_type_code     = adr2.segment_rule_type_code
8915                     AND xsr2.segment_rule_code          = adr2.segment_rule_code
8916                     AND adr2.application_id             = xal2.application_id
8917                     AND adr2.amb_context_code           = xal2.amb_context_code
8918                     AND adr2.event_class_code           = xal2.event_class_code
8919                     AND adr2.event_type_code            = xal2.event_type_code
8920                     AND adr2.line_definition_owner_code = xal2.line_definition_owner_code
8921                     AND adr2.line_definition_code       = xal2.line_definition_code
8922                     AND xal2.application_id             = g_application_id
8923                     AND xal2.amb_context_code           IN (g_amb_context_code,g_staging_context_code)
8924                     AND xal2.product_rule_type_code     = grp.product_rule_type_code
8925                     AND xal2.product_rule_code          = grp.product_rule_code
8926                     AND grp.group_num                   = l_curr_group_num);
8927 
8928   -- Cursor to return the next AAD that is not grouped
8929   CURSOR c_next_aad IS
8930     SELECT product_rule_type_code, product_rule_code
8931       FROM TABLE(CAST(g_aad_groups AS xla_aad_group_tbl_type))
8932      WHERE group_num = 0;
8933 
8934   l_aad_group        xla_aad_group_rec_type;
8935   l_updated          BOOLEAN;
8936   l_type_code        VARCHAR2(30);
8937   l_code             VARCHAR2(30);
8938   l_count            INTEGER;
8939   l_log_module       VARCHAR2(240);
8940 BEGIN
8941   IF g_log_enabled THEN
8942     l_log_module := C_DEFAULT_MODULE||'.group_aads';
8943   END IF;
8944 
8945   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8946     trace(p_msg      => 'BEGIN of procedure group_aads'
8947          ,p_level    => C_LEVEL_PROCEDURE
8948          ,p_module   => l_log_module);
8949   END IF;
8950 
8951   g_aad_groups := xla_aad_group_tbl_type();
8952 
8953   l_count := 0;
8954   l_curr_group_num := 1;
8955 
8956   -- Initialize the AAD array
8957   IF (C_LEVEL_EVENT >= g_log_level) THEN
8958     trace(p_msg    => 'BEGIN LOOP - retrieve AADs',
8959           p_module => l_log_module,
8960           p_level  => C_LEVEL_EVENT);
8961   END IF;
8962 
8963   FOR l_aad IN c_aad LOOP
8964     IF (C_LEVEL_ERROR >= g_log_level) THEN
8965       trace(p_msg    => 'LOOP - AAD:'||
8966                         ' product_rule_type_code='||l_aad.product_rule_type_code||
8967                         ',product_rule_code='||l_aad.product_rule_code||
8968                         ',required_flag='||l_aad.required_flag
8969            ,p_module => l_log_module
8970            ,p_level  => C_LEVEL_ERROR);
8971     END IF;
8972 
8973     l_aad_group := xla_aad_group_rec_type
8974                       (l_aad.product_rule_type_code
8975                       ,l_aad.product_rule_code
8976                       ,0
8977                       ,NULL
8978                       ,NULL
8979                       ,NULL
8980                       ,l_aad.required_flag);
8981 
8982     l_count := l_count + 1;
8983     g_aad_groups.EXTEND;
8984     g_aad_groups(l_count) := l_aad_group;
8985   END LOOP;
8986 
8987   IF (C_LEVEL_EVENT >= g_log_level) THEN
8988     trace(p_msg    => 'END LOOP - retrieve AADs',
8989           p_module => l_log_module,
8990           p_level  => C_LEVEL_EVENT);
8991   END IF;
8992 
8993   -- Assign group #1 to the first AAD
8994   IF (g_aad_groups.COUNT > 0) THEN
8995     g_aad_groups(1).group_num := l_curr_group_num;
8996   END IF;
8997 
8998   --
8999   -- Loop until all application accounting definitions are assigned
9000   -- with a group number
9001   --
9002   LOOP
9003     IF (C_LEVEL_ERROR >= g_log_level) THEN
9004       trace(p_msg    => 'LOOP - current group number = '||l_curr_group_num,
9005             p_module => l_log_module,
9006             p_level  => C_LEVEL_ERROR);
9007     END IF;
9008     --
9009     -- Loop until no more new application accounting definitions is
9010     -- found to be sharing any journal entry setups with the
9011     -- definitions in the current group.
9012     --
9013     LOOP
9014       OPEN c_aad_group;
9015       l_updated := FALSE;
9016 
9017       --
9018       -- Loop until all application accounting definitions that
9019       -- shares journal entry sets with the definitions in the
9020       -- current group are marked with the current group number.
9021       LOOP
9022         FETCH c_aad_group INTO l_type_code, l_code;
9023         EXIT WHEN c_aad_group%NOTFOUND;
9024 
9025         IF (update_group_number(l_type_code
9026                                ,l_code
9027                                ,l_curr_group_num)) THEN
9028           l_updated := TRUE;
9029         END IF;
9030       END LOOP;
9031       CLOSE c_aad_group;
9032       IF (NOT l_updated) THEN
9033         EXIT;
9034       END IF;
9035     END LOOP;
9036 
9037     OPEN c_next_aad;
9038     FETCH c_next_aad INTO l_type_code, l_code;
9039     EXIT WHEN c_next_aad%NOTFOUND;
9040 
9041     CLOSE c_next_aad;
9042     l_curr_group_num := l_curr_group_num + 1;
9043     l_updated := update_group_number(l_type_code
9044                                     ,l_code
9045                                     ,l_curr_group_num);
9046   END LOOP;
9047   CLOSE c_next_aad;
9048 
9049   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9050     FOR i IN 1 .. g_aad_groups.COUNT LOOP
9051       trace(p_msg    => 'group='||g_aad_groups(i).group_num||
9052                         ' '||g_aad_groups(i).product_rule_code
9053            ,p_module => l_log_module
9054            ,p_level  => C_LEVEL_PROCEDURE);
9055     END LOOP;
9056   END IF;
9057 
9058   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9059     trace(p_msg    => 'END of procedure group_aads'
9060          ,p_module => l_log_module
9061          ,p_level  => C_LEVEL_PROCEDURE);
9062   END IF;
9063 EXCEPTION
9064 WHEN xla_exceptions_pkg.application_exception THEN
9065   RAISE;
9066 
9067 WHEN OTHERS THEN
9068   xla_exceptions_pkg.raise_message
9069       (p_location => 'xla_aad_merge_analysis_pvt.group_aads');
9070 
9071 END group_aads;
9072 
9073 
9074 --=============================================================================
9075 --
9076 -- Name:
9077 -- Description:
9078 --
9079 --=============================================================================
9080 PROCEDURE analyze_merge_dependency
9081 (p_application_id    INTEGER
9082 ,p_amb_context_code  VARCHAR2)
9083 IS
9084   l_log_module    VARCHAR2(240);
9085 BEGIN
9086   IF g_log_enabled THEN
9087     l_log_module := C_DEFAULT_MODULE||'.analyze_merge_dependency';
9088   END IF;
9089 
9090   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9091     trace(p_msg    => 'BEGIN of procedure analyze_merge_dependency',
9092           p_module => l_log_module,
9093           p_level  => C_LEVEL_PROCEDURE);
9094   END IF;
9095 
9096   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9097     trace(p_msg    => 'END of procedure analyze_merge_dependency',
9098           p_module => l_log_module,
9099           p_level  => C_LEVEL_PROCEDURE);
9100   END IF;
9101 
9102 EXCEPTION
9103 WHEN xla_exceptions_pkg.application_exception THEN
9104   RAISE;
9105 
9106 WHEN OTHERS THEN
9107   xla_exceptions_pkg.raise_message
9108       (p_location => 'xla_aad_merge_analysis_pvt.analyze_merge_dependency');
9109 
9110 END analyze_merge_dependency;
9111 */
9112 
9113 --=============================================================================
9114 ---- Name:
9115 -- Description:
9116 --
9117 --=============================================================================
9118 PROCEDURE post_analysis
9119 IS
9120   l_merge_impact  VARCHAR2(30);
9121   l_log_module    VARCHAR2(240);
9122 BEGIN
9123   IF g_log_enabled THEN
9124     l_log_module := C_DEFAULT_MODULE||'.post_analysis';
9125   END IF;
9126 
9127   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9128     trace(p_msg    => 'BEGIN of procedure post_analysis',
9129           p_module => l_log_module,
9130           p_level  => C_LEVEL_PROCEDURE);
9131   END IF;
9132 
9133   INSERT INTO xla_amb_updated_comps
9134     (amb_updated_comp_id
9135     ,application_id
9136     ,amb_context_code
9137     ,component_type_code
9138     ,component_key
9139     ,parent_component_type_code
9140     ,parent_component_key
9141     ,merge_impact_code
9142     ,event_class_code
9143     ,event_type_code
9144     ,component_owner_code
9145     ,component_code
9146     ,parent_component_owner_code
9147     ,parent_component_code
9148     ,property_code
9149     ,old_value
9150     ,old_source_app_id
9151     ,old_source_type_code
9152     ,old_source_code
9153     ,new_value
9154     ,new_source_app_id
9155     ,new_source_type_code
9156     ,new_source_code
9157     ,lookup_type
9158     ,merge_enabled_flag
9159     ,object_version_number
9160     ,creation_date
9161     ,created_by
9162     ,last_update_date
9163     ,last_updated_by
9164     ,last_update_login
9165     ,program_update_date
9166     ,program_application_id
9167     ,program_id
9168     ,request_id)
9169     SELECT xla_amb_updated_comps_s.nextval
9170           ,g_application_id
9171           ,g_amb_context_code
9172           ,component_type
9173           ,component_key
9174           ,parent_component_type
9175           ,parent_component_key
9176           ,merge_impact
9177           ,event_class_code
9178           ,event_type_code
9179           ,component_owner_code
9180           ,component_code
9181           ,parent_component_owner_code
9182           ,parent_component_code
9183           ,property
9184           ,old_value
9185           ,old_source_app_id
9186           ,old_source_type_code
9187           ,old_source_code
9188           ,new_value
9189           ,new_source_app_id
9190           ,new_source_type_code
9191           ,new_source_code
9192           ,lookup_type
9193           ,'N'
9194           ,1
9195           ,sysdate
9196           ,xla_environment_pkg.g_usr_id
9197           ,sysdate
9198           ,xla_environment_pkg.g_usr_id
9199           ,xla_environment_pkg.g_login_id
9200           ,sysdate
9201           ,xla_environment_pkg.g_prog_appl_id
9202           ,xla_environment_pkg.g_prog_id
9203           ,xla_environment_pkg.g_req_Id
9204       FROM (SELECT component_type
9205                   ,component_key
9206                   ,parent_component_type
9207                   ,parent_component_key
9208                   ,merge_impact
9209                   ,event_class_code
9210                   ,event_type_code
9211                   ,component_owner_code
9212                   ,component_code
9213                   ,parent_component_owner_code
9214                   ,parent_component_code
9215                   ,NULL property
9216                   ,NULL old_value
9217                   ,NULL old_source_app_id
9218                   ,NULL old_source_type_code
9219                   ,NULL old_source_code
9220                   ,NULL new_value
9221                   ,NULL new_source_app_id
9222                   ,NULL new_source_type_code
9223                   ,NULL new_source_code
9224                   ,NULL lookup_type
9225               FROM TABLE(CAST(g_updated_comps AS xla_amb_updated_comp_tbl_type))
9226              UNION
9227             SELECT NULL
9228                   ,NULL
9229                   ,component_type
9230                   ,component_key
9231                   ,C_MERGE_IMPACT_UPDATED
9232                   ,NULL
9233                   ,NULL
9234                   ,NULL
9235                   ,NULL
9236                   ,NULL
9237                   ,NULL
9238                   ,property
9239                   ,old_value
9240                   ,old_source_app_id
9241                   ,old_source_type_code
9242                   ,old_source_code
9243                   ,new_value
9244                   ,new_source_app_id
9245                   ,new_source_type_code
9246                   ,new_source_code
9247                   ,lookup_type
9248               FROM TABLE(CAST(g_updated_props AS xla_amb_updated_prop_tbl_type)));
9249 
9250   IF (SQL%ROWCOUNT > 0) THEN
9251     l_merge_impact := C_MERGE_IMPACT_UPDATED;
9252   ELSE
9253     l_merge_impact := C_MERGE_IMPACT_UNCHANGED;
9254   END IF;
9255 
9256   INSERT INTO xla_amb_updated_comps
9257       (amb_updated_comp_id
9258       ,application_id
9259       ,amb_context_code
9260       ,component_type_code
9261       ,component_key
9262       ,merge_impact_code
9263       ,merge_enabled_flag
9264       ,object_version_number
9265       ,creation_date
9266       ,created_by
9267       ,last_update_date
9268       ,last_updated_by
9269       ,last_update_login
9270       ,program_update_date
9271       ,program_application_id
9272       ,program_id
9273       ,request_id)
9274     SELECT xla_amb_updated_comps_s.nextval
9275           ,g_application_id
9276           ,g_amb_context_code
9277           ,'APPLICATION'
9278           ,TO_CHAR(g_application_id)
9279           ,l_merge_impact
9280           ,'N'
9281           ,1
9282           ,sysdate
9283           ,xla_environment_pkg.g_usr_id
9284           ,sysdate
9285           ,xla_environment_pkg.g_usr_id
9286           ,xla_environment_pkg.g_login_id
9287           ,sysdate
9288           ,xla_environment_pkg.g_prog_appl_id
9289           ,xla_environment_pkg.g_prog_id
9290           ,xla_environment_pkg.g_req_Id
9291       FROM DUAL;
9292 
9293   UPDATE xla_appli_amb_contexts
9294      SET updated_flag       = 'N'
9295        , batch_name         = g_batch_name
9296        , last_analyzed_date = sysdate
9297        , last_update_date   = sysdate
9298        , last_updated_by    = xla_environment_pkg.g_usr_id
9299        , last_update_login  = xla_environment_pkg.g_login_id
9300    WHERE application_id     = g_application_id
9301      AND amb_context_code   = g_amb_context_code;
9302 
9303   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9304     trace(p_msg    => 'END of procedure post_analysis',
9305           p_module => l_log_module,
9306           p_level  => C_LEVEL_PROCEDURE);
9307   END IF;
9308 
9309 EXCEPTION
9310 WHEN xla_exceptions_pkg.application_exception THEN
9311   RAISE;
9312 
9313 WHEN OTHERS THEN
9314   xla_exceptions_pkg.raise_message
9315       (p_location => 'xla_aad_merge_analysis_pvt.post_analysis');
9316 
9317 END post_analysis;
9318 
9319 --=============================================================================
9320 --
9321 --
9322 --
9323 --
9324 --
9325 --          *********** public procedures and functions **********
9326 --
9327 --
9328 --
9329 --
9330 --
9331 --=============================================================================
9332 
9333 --=============================================================================
9334 --
9335 -- Name:
9336 -- Description:
9337 --
9338 --=============================================================================
9339 PROCEDURE analysis
9340 (p_api_version        IN NUMBER
9341 ,x_return_status      IN OUT NOCOPY VARCHAR2
9342 ,p_application_id     INTEGER
9343 ,p_amb_context_code   VARCHAR2
9344 ,p_batch_name         VARCHAR2
9345 ,x_analysis_status    IN OUT NOCOPY VARCHAR2)
9346 IS
9347   l_api_name          CONSTANT VARCHAR2(30) := 'analysis';
9348   l_api_version       CONSTANT NUMBER       := 1.0;
9349 
9350   l_staging_context_code VARCHAR2(30);
9351   l_retcode              VARCHAR2(30);
9352   l_log_module           VARCHAR2(240);
9353 BEGIN
9354   IF g_log_enabled THEN
9355     l_log_module := C_DEFAULT_MODULE||'.analysis';
9356   END IF;
9357 
9358   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9359     trace(p_msg    => 'BEGIN of function analysis: '||
9360                       'p_batch_name = '||p_batch_name,
9361           p_module => l_log_module,
9362           p_level  => C_LEVEL_PROCEDURE);
9363   END IF;
9364 
9365   l_staging_context_code := xla_aad_loader_util_pvt.get_staging_context_code
9366                                 (p_application_id   => p_application_id
9367                                 ,p_amb_context_code => p_amb_context_code);
9368 
9369   xla_aad_merge_analysis_pvt.analysis
9370              (p_api_version          => p_api_version
9371              ,x_return_status        => x_return_status
9372              ,p_application_id       => p_application_id
9373              ,p_amb_context_code     => p_amb_context_code
9374              ,p_staging_context_code => l_staging_context_code
9375              ,p_batch_name           => p_batch_name
9376              ,x_analysis_status      => x_analysis_status);
9377 
9378   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9379     trace(p_msg    => 'END of function analysis - Return value = '||x_analysis_status,
9380           p_module => l_log_module,
9381           p_level  => C_LEVEL_PROCEDURE);
9382   END IF;
9383 
9384 EXCEPTION
9385 WHEN FND_API.G_EXC_ERROR THEN
9386 RAISE;
9387   x_return_status := FND_API.G_RET_STS_ERROR ;
9388   x_analysis_status := 'ERROR';
9389 
9390 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9391   ROLLBACK;
9392 RAISE;
9393   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9394   x_analysis_status := 'ERROR';
9395 
9396 WHEN OTHERS THEN
9397   ROLLBACK;
9398 RAISE;
9399   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9400   x_analysis_status := 'ERROR';
9401 
9402   xla_aad_loader_util_pvt.stack_error
9403                (p_appli_s_name    => 'XLA'
9404                ,p_msg_name        => 'XLA_COMMON_ERROR'
9405                ,p_token_1         => 'LOCATION'
9406                ,p_value_1         => 'xla_aad_merge_analysis_pvt.analysis'
9407                ,p_token_2         => 'ERROR'
9408                ,p_value_2         => 'unhandled exception');
9409 
9410 
9411 END analysis;
9412 
9413 
9414 --=============================================================================
9415 --
9416 -- Name:
9417 -- Description:
9418 --
9419 --=============================================================================
9420 PROCEDURE analysis
9421 (p_api_version          IN NUMBER
9422 ,x_return_status        IN OUT NOCOPY VARCHAR2
9423 ,p_application_id       INTEGER
9424 ,p_amb_context_code     VARCHAR2
9425 ,p_staging_context_code VARCHAR2
9426 ,p_batch_name           VARCHAR2
9427 ,x_analysis_status      IN OUT NOCOPY VARCHAR2)
9428 IS
9429   l_api_name          CONSTANT VARCHAR2(30) := 'analysis';
9430   l_api_version       CONSTANT NUMBER       := 1.0;
9431 
9432   l_retcode       VARCHAR2(30);
9433   l_log_module    VARCHAR2(240);
9434 BEGIN
9435   IF g_log_enabled THEN
9436     l_log_module := C_DEFAULT_MODULE||'.analysis';
9437   END IF;
9438 
9439   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9440     trace(p_msg    => 'BEGIN of function analysis: '||
9441                       'p_batch_name = '||p_batch_name,
9442           p_module => l_log_module,
9443           p_level  => C_LEVEL_PROCEDURE);
9444   END IF;
9445 
9446   -- Standard call to check for call compatibility.
9447   IF (NOT xla_aad_loader_util_pvt.compatible_api_call
9448                  (p_current_version_number => l_api_version
9449                  ,p_caller_version_number  => p_api_version
9450                  ,p_api_name               => l_api_name
9451                  ,p_pkg_name               => C_DEFAULT_MODULE))
9452   THEN
9453     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
9454   END IF;
9455 
9456   --  Initialize global variables
9457   x_return_status        := FND_API.G_RET_STS_SUCCESS;
9458 
9459   g_application_id       := p_application_id;
9460   g_amb_context_code     := p_amb_context_code;
9461   g_staging_context_code := p_staging_context_code;
9462   g_batch_name           := p_batch_name;
9463   g_user_mode            := NVL(fnd_profile.value('XLA_SETUP_USER_MODE'),'C');
9464 
9465   g_num_updated_comps    := 0;
9466   g_num_updated_props    := 0;
9467 
9468   -- API Logic
9469   x_analysis_status := pre_analysis;
9470   IF (x_analysis_status = 'ERROR') THEN
9471     RAISE FND_API.G_EXC_ERROR;
9472   END IF;
9473 
9474   x_analysis_status := validation;
9475   IF (x_analysis_status = 'ERROR') THEN
9476     RAISE FND_API.G_EXC_ERROR;
9477   END IF;
9478 
9479   analyze_aads;
9480   post_analysis;
9481 
9482   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9483     trace(p_msg    => 'END of function analysis - Return value = '||x_analysis_status,
9484           p_module => l_log_module,
9485           p_level  => C_LEVEL_PROCEDURE);
9486   END IF;
9487 
9488 EXCEPTION
9489 WHEN FND_API.G_EXC_ERROR THEN
9490 RAISE;
9491   x_return_status := FND_API.G_RET_STS_ERROR ;
9492   x_analysis_status := 'ERROR';
9493 
9494 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9495   ROLLBACK;
9496 RAISE;
9497   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9498   x_analysis_status := 'ERROR';
9499 
9500 WHEN OTHERS THEN
9501   ROLLBACK;
9502 RAISE;
9503   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9504   x_analysis_status := 'ERROR';
9505 
9506   xla_aad_loader_util_pvt.stack_error
9507                (p_appli_s_name    => 'XLA'
9508                ,p_msg_name        => 'XLA_COMMON_ERROR'
9509                ,p_token_1         => 'LOCATION'
9510                ,p_value_1         => 'xla_aad_merge_analysis_pvt.analysis'
9511                ,p_token_2         => 'ERROR'
9512                ,p_value_2         => 'unhandled exception');
9513 
9514 
9515 END analysis;
9516 
9517 --=============================================================================
9518 --
9519 -- Following code is executed when the package body is referenced for the first
9520 -- time
9521 --
9522 --=============================================================================
9523 BEGIN
9524    g_log_level          := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
9525    g_log_enabled        := fnd_log.test
9526                           (log_level  => g_log_level
9527                           ,module     => C_DEFAULT_MODULE);
9528 
9529    IF NOT g_log_enabled THEN
9530       g_log_level := C_LEVEL_LOG_DISABLED;
9531    END IF;
9532 
9533 END xla_aad_merge_analysis_pvt;