DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_RPT_SARDLR_PKG

Source


1 PACKAGE BODY XLA_RPT_SARDLR_PKG AS
2 /* $Header: xlasardlr.pkb 120.0.12010000.3 2009/09/14 10:51:29 kapkumar noship $ */
3 /*======================================================================+
4 |             Copyright (c) 2009-2010 Oracle Corporation                |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | PACKAGE NAME                                                          |
9 |    xla_rpt_sardlr_pkg                                                     |
10 |                                                                       |
11 |                                                                       |
12 | DESCRIPTION                                                           |
13 |  Package for Subledger Accounting Rules Detail Listing Report         |
14 |  to retrieve line-level information for ADR details                   |
15 |                                                                       |
16 | HISTORY                                                               |
17 |    AUG-09  Kapil Kumar                          Created               |
18 |                                                                       |
19 +======================================================================*/
20 
21 
22 --=============================================================================
23 --               *********** Local Trace Routine **********
24 --=============================================================================
25 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
26 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
27 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
28 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
29 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
30 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
31 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
32 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240):= 'xla.plsql.xla_rpt_sardlr_pkg';
33 
34 g_log_level           NUMBER;
35 g_log_enabled         BOOLEAN;
36 
37 
38 
39 PROCEDURE trace
40        (p_msg                        IN VARCHAR2
41        ,p_level                      IN NUMBER
42        ,p_module                     IN VARCHAR2) IS
43 BEGIN
44       IF (p_msg IS NULL AND p_level >= g_log_level) THEN
45          fnd_log.message(p_level, NVL(p_module,C_DEFAULT_MODULE));
46       ELSIF p_level >= g_log_level THEN
47          fnd_log.string(p_level, NVL(p_module,C_DEFAULT_MODULE), p_msg);
48       END IF;
49 
50 EXCEPTION
51       WHEN xla_exceptions_pkg.application_exception THEN
52          RAISE;
53       WHEN OTHERS THEN
54          xla_exceptions_pkg.raise_message
55             (p_location   => 'xla_rpt_sardlr_pkg.trace');
56 END trace;
57 
58 
59 
60 
61 
62 FUNCTION beforeReport  RETURN BOOLEAN IS
63 
64 l_log_module                    VARCHAR2(240);
65 
66 BEGIN
67 
68 
69 	IF g_log_enabled THEN
70 		l_log_module := C_DEFAULT_MODULE||'.beforeReport';
71 	END IF;
72 
73 	IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74 		trace('Begin of beforeReport',C_LEVEL_PROCEDURE,l_log_module);
75 	END IF;
76 
77 	IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78 
79 		trace('P_APPLICATION_ID = '|| to_char(P_APPLICATION_ID),
80 		       C_LEVEL_STATEMENT, l_log_module);
81 		trace('P_SLAM_CODE = '|| P_SLAM_CODE,
82 		       C_LEVEL_STATEMENT, l_log_module);
83 		trace('P_SLAM_TYPE_CODE = '|| P_SLAM_TYPE_CODE,
84 		       C_LEVEL_STATEMENT, l_log_module);
85 		trace('P_EVENT_CLASS_CODE = '|| P_EVENT_CLASS_CODE,
86 		       C_LEVEL_STATEMENT, l_log_module);
87 		trace('P_EVENT_TYPE_CODE = '|| P_EVENT_TYPE_CODE,
88 		       C_LEVEL_STATEMENT, l_log_module);
89 		trace('P_AMB_CONTEXT_CODE = '|| P_AMB_CONTEXT_CODE,
90 		       C_LEVEL_STATEMENT, l_log_module);
91 		trace('P_EVENT_CLASS_NAME = '|| P_EVENT_CLASS_NAME,
92 		       C_LEVEL_STATEMENT, l_log_module);
93 		trace('P_EVENT_TYPE_NAME = '|| P_EVENT_TYPE_NAME,
94 		       C_LEVEL_STATEMENT, l_log_module);
95 
96 
97 	END IF;
98 
99 	IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100 		 trace('End of beforeReport'
101 		       ,C_LEVEL_PROCEDURE, l_log_module);
102 	END IF;
103 
104    RETURN TRUE;
105 
106 EXCEPTION
107    WHEN OTHERS THEN
108       xla_exceptions_pkg.raise_message
109          (p_location  => 'xla_rpt_sardlr_pkg.beforeReport');
110 END beforeReport;
111 
112 
113 
114 
115 
116 
117 
118 FUNCTION populate_fields
119     (value_type_code                IN  VARCHAR2,
120      value_source_application_id    IN  NUMBER,
121      value_source_type_code         IN  VARCHAR2,
122      value_source_code              IN  VARCHAR2,
123      value_mapping_set_code         IN  VARCHAR2,
124      value_code_combination_id      IN  NUMBER,
125      amb_context_code               IN  VARCHAR2,
126      value_segment_rule_appl_id     IN  NUMBER,
127      value_segment_rule_type_code   IN  VARCHAR2,
128      value_segment_rule_code        IN  VARCHAR2,
129      flexfield_assign_mode_code     IN  VARCHAR2,
130      value_constant                 IN  VARCHAR2,
131      flex_value_set_id              IN  NUMBER,
132      input_source_code              IN  VARCHAR2,
133      input_source_application_id    IN  NUMBER,
134      input_source_type_code         IN  VARCHAR2,
135      value_flexfield_segment_code   IN  VARCHAR2,
136      transaction_coa_id             IN  NUMBER,
137      accounting_coa_id              IN  NUMBER,
138      p_mode                         IN  NUMBER
139     )
140 RETURN VARCHAR2
141 
142 IS
143 
144 
145 --=============================================================================
146 --               *********** Function Variables **********
147 --=============================================================================
148 
149 input_source_view_appl_id       NUMBER;
150 input_source_lookup_type        VARCHAR2(250);
151 input_source_value_set_id       NUMBER;
152 input_source_flex_appl_id       NUMBER;
153 input_source_id_flex_code       VARCHAR2(250);
154 input_source_segment_code       VARCHAR2(250);
155 input_source_id_flex_num        NUMBER;
156 input_source_name               VARCHAR2(250);
157 
158 value_flexfield_segment_name    VARCHAR2(250);
159 value_dsp                       VARCHAR2(250);
160 value_source_flex_appl_id       NUMBER;
161 value_source_id_flex_code       VARCHAR2(250);
162 value_source_segment_code       VARCHAR2(250);
163 value_ms_view_application_id    NUMBER;
164 value_ms_lookup_type            VARCHAR2(250);
165 value_ms_value_set_id           NUMBER;
166 
167 l_log_module                    VARCHAR2(240);
168 --=============================================================================
169 --               *********** Cursors **********
170 --=============================================================================
171 
172 
173     CURSOR c_source_name
174       (p_source_application_id  IN  NUMBER
175       ,p_source_type_code       IN  VARCHAR2
176       ,p_source_code            IN  VARCHAR2)
177     IS
178     SELECT name
179       FROM xla_sources_vl
180      WHERE application_id   = p_source_application_id
181        AND source_type_code = p_source_type_code
182        AND source_code      = p_source_code;
183 
184     CURSOR c_value_sources
185       (p_source_application_id  IN  NUMBER
186       ,p_source_type_code       IN  VARCHAR2
187       ,p_source_code            IN  VARCHAR2)
188     IS
189     SELECT name, flexfield_application_id, id_flex_code, segment_code
190       FROM xla_sources_vl
191      WHERE application_id   = p_source_application_id
192        AND source_type_code = p_source_type_code
193        AND source_code      = p_source_code;
194 
195     CURSOR c_input_source_name
196       (p_source_application_id  IN  NUMBER
197       ,p_source_type_code       IN  VARCHAR2
198       ,p_source_code            IN  VARCHAR2)
199     IS
200     SELECT name, view_application_id, lookup_type, flex_value_set_id,
201            flexfield_application_id, id_flex_code, segment_code
202       FROM xla_sources_vl
203      WHERE application_id   = p_source_application_id
204        AND source_type_code = p_source_type_code
205        AND source_code      = p_source_code;
206 
207 
208     CURSOR c_mapping_set
209       (p_mapping_set_code  IN  VARCHAR2)
210     IS
211     SELECT name, view_application_id, lookup_type, value_set_id
212       FROM xla_mapping_sets_vl
213      WHERE mapping_set_code  = p_mapping_set_code;
214 
215     CURSOR c_adr
216       (p_amb_context_code             IN VARCHAR2
217       ,p_value_segment_rule_appl_id   IN VARCHAR2
218       ,p_value_segment_rule_type_code IN VARCHAR2
219       ,p_value_segment_rule_code      IN VARCHAR2)
220     IS
221     SELECT name
222       FROM xla_seg_rules_fvl
223      WHERE amb_context_code       = p_amb_context_code
224        AND application_id         = p_value_segment_rule_appl_id
225        AND segment_rule_type_code = p_value_segment_rule_type_code
226        AND segment_rule_code      = p_value_segment_rule_code;
227 
228 BEGIN
229 
230 
231 
232 
233 IF g_log_enabled THEN
234 	l_log_module := C_DEFAULT_MODULE||'.populate_fields';
235 END IF;
236 
237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
238 	trace('Begin of populate_fields',C_LEVEL_PROCEDURE,l_log_module);
239 END IF;
240 
241 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
242 
243 	trace('value_source_application_id = '|| to_char(value_source_application_id),
244 		C_LEVEL_STATEMENT, l_log_module);
245 	trace('value_segment_rule_appl_id = '|| to_char(value_segment_rule_appl_id),
246 		C_LEVEL_STATEMENT, l_log_module);
247 	trace('flex_value_set_id = '|| to_char(flex_value_set_id),
248 		C_LEVEL_STATEMENT, l_log_module);
249 	trace('input_source_application_id = '|| to_char(input_source_application_id),
250 		C_LEVEL_STATEMENT, l_log_module);
251 	trace('transaction_coa_id = '|| to_char(transaction_coa_id),
252 		C_LEVEL_STATEMENT, l_log_module);
253 	trace('value_type_code = '|| value_type_code,
254 		C_LEVEL_STATEMENT, l_log_module);
255 	trace('value_source_type_code = '|| value_source_type_code,
256 		C_LEVEL_STATEMENT, l_log_module);
257 	trace('value_source_code = '|| value_source_code,
258 		C_LEVEL_STATEMENT, l_log_module);
259 	trace('value_mapping_set_code = '|| value_mapping_set_code,
260 		C_LEVEL_STATEMENT, l_log_module);
261 	trace('amb_context_code = '|| amb_context_code,
262 		C_LEVEL_STATEMENT, l_log_module);
263 	trace('value_segment_rule_type_code = '|| value_segment_rule_type_code,
264 		C_LEVEL_STATEMENT, l_log_module);
265 	trace('value_segment_rule_code = '|| value_segment_rule_code,
266 		C_LEVEL_STATEMENT, l_log_module);
267 	trace('flexfield_assign_mode_code = '|| flexfield_assign_mode_code,
268 		C_LEVEL_STATEMENT, l_log_module);
269 	trace('value_constant = '|| value_constant,
270 		C_LEVEL_STATEMENT, l_log_module);
271 	trace('input_source_code = '|| input_source_code,
272 		C_LEVEL_STATEMENT, l_log_module);
273 	trace('input_source_type_code = '|| input_source_type_code,
274 		C_LEVEL_STATEMENT, l_log_module);
275 	trace('value_flexfield_segment_code = '|| value_flexfield_segment_code,
276 		C_LEVEL_STATEMENT, l_log_module);
277 END IF;
278 
279 
280 
281 IF value_type_code = 'S' THEN
282 
283 	OPEN c_value_sources
284 	(value_source_application_id
285 	,value_source_type_code
286 	,value_source_code);
287 	FETCH c_value_sources
288 	INTO value_dsp, value_source_flex_appl_id,
289 	value_source_id_flex_code, value_source_segment_code;
290 	CLOSE c_value_sources;
291 
292 ELSIF value_type_code = 'M' THEN
293 
294 	OPEN c_mapping_set
295 	(value_mapping_set_code);
296 	FETCH c_mapping_set
297 	INTO value_dsp
298 	, value_ms_view_application_id
299 	, value_ms_lookup_type
300 	, value_ms_value_set_id;
301 	CLOSE c_mapping_set;
302 
303 ELSIF  value_type_code = 'A' THEN
304 
305 	OPEN c_adr
306 	(amb_context_code
307 	,value_segment_rule_appl_id
308 	,value_segment_rule_type_code
309 	,value_segment_rule_code);
310 	FETCH c_adr
311 	INTO value_dsp;
312 	CLOSE c_adr;
313 
314 
315 ELSIF value_type_code = 'C' THEN
316 
317 	IF flexfield_assign_mode_code = 'S' THEN
318 		value_dsp := value_constant;
319 	ELSIF  flexfield_assign_mode_code = 'V' THEN
320 		IF  value_constant IS NOT NULL THEN
321 			IF flex_value_set_id IS NOT NULL    THEN
322 				value_dsp := xla_flex_pkg.get_flex_value_meaning
323 							(p_flex_value_set_id => flex_value_set_id
324 							,p_flex_value        => value_constant);
325 			END IF;
326 		END IF;
327 	ELSIF  flexfield_assign_mode_code = 'A' THEN
328 	    value_dsp := FND_FLEX_EXT.GET_SEGS('SQLGL', 'GL#', accounting_coa_id, value_code_combination_id);
329 	END IF;
330 
331 ELSE value_dsp := NULL;
332 END IF;
333 
334 
335 IF p_mode = 1 THEN    --ADR_VALUE field
336 
337 	IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
338 		 trace('End of populate_fields (1) return' || value_dsp
339 		       ,C_LEVEL_PROCEDURE, l_log_module);
340 	END IF;
341 
342   RETURN value_dsp;
343 
344 END IF;
345 
346 
347 
348 input_source_name := NULL;   -- default null value for ADR_INPUT
349 value_flexfield_segment_name := NULL;   -- default null value for ADR_SEGMENT
350 
351 
352 IF input_source_code IS NOT NULL THEN
353 
354 	OPEN c_input_source_name
355 	( input_source_application_id
356 	, input_source_type_code
357 	, input_source_code);
358 	FETCH c_input_source_name
359 	INTO  input_source_name
360 	, input_source_view_appl_id
361 	, input_source_lookup_type
362 	, input_source_value_set_id
363 	, input_source_flex_appl_id
364 	, input_source_id_flex_code
365 	, input_source_segment_code;
366 	CLOSE c_input_source_name;
367 
368 	IF (input_source_flex_appl_id IS NOT NULL AND input_source_segment_code IS NULL) THEN
369 		IF (input_source_flex_appl_id = 101 AND input_source_id_flex_code = 'GL#') THEN
370 			input_source_id_flex_num := NULL;
371 		ELSE
372 			input_source_id_flex_num := xla_flex_pkg.get_flexfield_structure
373 								(p_application_id   => input_source_flex_appl_id
374 								,p_id_flex_code     => input_source_id_flex_code);
375 		END IF;
376 	END IF;
377 END IF;
378 
379 
380 IF P_MODE = 2 THEN   -- ADR_INPUT field
381 
382 	IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
383 		 trace('End of populate_fields (2) return' || input_source_name
384 		       ,C_LEVEL_PROCEDURE, l_log_module);
385 	END IF;
386 
387 	RETURN input_source_name;
388 END IF;
389 
390 
391 
392 
393 IF value_flexfield_segment_code IS NOT NULL THEN
394 	IF (value_source_flex_appl_id IS NOT NULL OR (input_source_flex_appl_id = 101 AND input_source_id_flex_code = 'GL#')) THEN
395 		IF transaction_coa_id IS NOT NULL THEN
396 
397 			value_flexfield_segment_name := xla_flex_pkg.get_flexfield_segment_name
398 								(p_application_id         => 101
399 								,p_flex_code              => 'GL#'
400 								,p_chart_of_accounts_id   => transaction_coa_id
401 								,p_flexfield_segment_code => value_flexfield_segment_code);
402 
403 		ELSE
404 			value_flexfield_segment_name := xla_flex_pkg.get_qualifier_name
405 								(p_application_id         => 101
406 								,p_id_flex_code              => 'GL#'
407 								,p_qualifier_segment      => value_flexfield_segment_code);
408 
409 		END IF;
410 	ELSE
411 		value_flexfield_segment_name := xla_flex_pkg.get_flexfield_segment_name
412 								(p_application_id         => input_source_flex_appl_id
413 								,p_flex_code              => input_source_id_flex_code
414 								,p_chart_of_accounts_id   => input_source_id_flex_num
415 								,p_flexfield_segment_code => value_flexfield_segment_code);
416 
417 	END IF;
418 END IF;
419 
420 
421 IF P_MODE = 3 THEN    --ADR_SEGMENT field
422 
423 	IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
424 		 trace('End of populate_fields (3) return' || value_flexfield_segment_name
425 		       ,C_LEVEL_PROCEDURE, l_log_module);
426 	END IF;
427 
428 
429 	RETURN value_flexfield_segment_name;
430 END IF;
431 
432 
433 
434 
435 EXCEPTION
436    WHEN OTHERS THEN
437       xla_exceptions_pkg.raise_message
438          (p_location  => 'xla_rpt_sardlr_pkg.beforeReport');
439 
440 END populate_fields;
441 
442 
443 
444 BEGIN
445    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
446    g_log_enabled    := fnd_log.test
447                        (log_level  => g_log_level
448                        ,MODULE     => C_DEFAULT_MODULE);
449 
450    IF NOT g_log_enabled  THEN
451       g_log_level := C_LEVEL_LOG_DISABLED;
452    END IF;
453 
454 END xla_rpt_sardlr_pkg;