[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_MPA_JLT_PKG
Source
1 PACKAGE BODY xla_cmp_mpa_jlt_pkg AS
2 /* $Header: xlacpmlt.pkb 120.8 2007/05/04 00:21:20 masada ship $ */
3 /*============================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +=============================================================================+
8 | PACKAGE NAME |
9 | xla_cmp_mpa_jlt_pkg |
10 | |
11 | DESCRIPTION |
12 | This is a XLA private package, which contains all the logic required |
13 | to generate Recognition Accounting line type procedures from AMB |
14 | specifications. |
15 | |
16 | |
17 | HISTORY |
18 | 11-Jul-2005 A.Wan Created for MPA project |
19 | 18-Oct-2005 V. Kumar Removed code for Analytical Criteria |
20 | 30-Jan-2006 A.Wan Bug 4655713 - in GenerateCallADR, process |
21 | ALL segments first |
22 | 02-Feb-2006 A.Wan Bug 4655713b - handle MPA with bflow method |
23 | 13-Feb-2006 A.Wan Bug 4955764 - set g_rec_lines.array_gl_date. |
24 | 16-Apr-2006 A.Wan Bug 5132303 - Gain/Loss change for bflow. |
25 +============================================================================*/
26 --
27 --+==========================================================================+
28 --| |
29 --| |
30 --| Global Constants |
31 --| |
32 --| |
33 --+==========================================================================+
34
35
36 C_RECOG_JLT_BODY CONSTANT VARCHAR2(10000):= '
37 ---------------------------------------
38 --
39 -- PRIVATE FUNCTION
40 -- RecognitionJLT_$alt_hash_id$
41 --
42 ---------------------------------------
43 FUNCTION RecognitionJLT_$alt_hash_id$ (
44 p_application_id INTEGER
45 ,p_event_id INTEGER
46 ,p_hdr_idx INTEGER
47 ,p_period_num INTEGER
48 ,p_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs
49 ,p_calculate_acctd_flag VARCHAR2
50 ,p_calculate_g_l_flag VARCHAR2
51 ,p_bflow_applied_to_amt NUMBER -- 5132302
52 $parameters$
53 ) RETURN INTEGER
54 IS
55 l_component_type VARCHAR2(80) ;
56 l_component_code VARCHAR2(30) ;
57 l_component_type_code VARCHAR2(1) ;
58 l_component_appl_id INTEGER ;
59 l_amb_context_code VARCHAR2(30) ;
60 l_entity_code VARCHAR2(30) ;
61 l_event_class_code VARCHAR2(30) ;
62 l_ae_header_id NUMBER ;
63 l_event_type_code VARCHAR2(30) ;
64 l_line_definition_code VARCHAR2(30) ;
65 l_line_definition_owner_code VARCHAR2(1) ;
66 l_accrual_jlt_type_code VARCHAR2(1) ;
67 l_accrual_jlt_code VARCHAR2(30) ;
68 l_balance_type_code VARCHAR2(1) ;
69 l_acc_rev_natural_side_code VARCHAR2(1) ;
70 l_segment VARCHAR2(30) ;
71 l_ccid NUMBER;
72 l_adr_transaction_coa_id NUMBER ;
73 l_adr_accounting_coa_id NUMBER ;
74 l_adr_value_type_code VARCHAR2(30);
75 l_adr_value_segment_code VARCHAR2(30);
76 l_adr_flexfield_segment_code VARCHAR2(30);
77 l_adr_flex_value_set_id NUMBER ;
78 l_adr_value_combination_id NUMBER ;
79
80 l_bflow_method_code VARCHAR2(30); -- 4655713b
81 l_inherit_desc_flag VARCHAR2(1); -- 4655713b
82
83 l_CreateCcid BOOLEAN := TRUE;
84 l_log_module VARCHAR2(240);
85 --
86 BEGIN
87 --
88 IF g_log_enabled THEN
89 l_log_module := C_DEFAULT_MODULE||''.RecognitionJLT_$alt_hash_id$'';
90 END IF;
91 --
92 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93
94 trace
95 (p_msg => ''BEGIN of RecognitionJLT_$alt_hash_id$''
96 ,p_level => C_LEVEL_PROCEDURE
97 ,p_module => l_log_module);
98
99 END IF;
100 --
101 l_component_type := ''AMB_RECOGNITION_JLT'';
102 l_component_appl_id := $mpa_jlt_appl_id$;
103 l_component_type_code := ''$mpa_jlt_type_code$'';
104 l_component_code := ''$mpa_jlt_code$'';
105 l_amb_context_code := ''$amb_context_code$'';
106 l_entity_code := ''$entity_code$'';
107 l_event_class_code := ''$event_class_code$'';
108 l_event_type_code := ''$event_type_code$'';
109 l_line_definition_owner_code := ''$line_definition_owner_code$'';
110 l_line_definition_code := ''$line_definition_code$'';
111 l_accrual_jlt_type_code := ''$jlt_type_code$'';
112 l_accrual_jlt_code := ''$jlt_code$'';
113 --
114 l_balance_type_code := ''A'';
115
116 l_segment := NULL;
117 l_ccid := NULL;
118 l_adr_transaction_coa_id := NULL;
119 l_adr_accounting_coa_id := NULL;
120 l_adr_value_type_code := NULL;
121 l_adr_value_segment_code := NULL;
122 l_adr_flexfield_segment_code := NULL;
123 l_adr_flex_value_set_id := NULL;
124 l_adr_value_combination_id := NULL;
125
126 l_bflow_method_code := ''$bflow_method_code$''; -- 4655713b
127 l_inherit_desc_flag := ''$inherit_desc_flag$''; -- 4655713b
128
129 XLA_AE_LINES_PKG.SetNewLine;
130 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id -- p_hdr_idx
131 ,p_header_num => p_period_num);
132 --
133 -- set accounting line options
134 --
135 $acct_line_options$
136 --
137 -- set accounting line type info
138 --
139 xla_ae_lines_pkg.SetAcctLineType
140 (p_component_type => l_component_type
141 ,p_event_type_code => l_event_type_code
142 ,p_line_definition_owner_code => l_line_definition_owner_code
143 ,p_line_definition_code => l_line_definition_code
144 ,p_accounting_line_code => l_component_code
145 ,p_accounting_line_type_code => l_component_type_code
146 ,p_accounting_line_appl_id => l_component_appl_id
147 ,p_amb_context_code => l_amb_context_code
148 ,p_entity_code => l_entity_code
149 ,p_event_class_code => l_event_class_code);
150 --
151 -- set accounting class
152 --
153 $set_acct_class$
154 --
155 -- set rounding class
156 --
157 $set_rounding_class$
158 --
159 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
160 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
161
162
163 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
164 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber)
165 := XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
166 --
167 -- set accounting attributes for the line type
168 --
169 XLA_AE_LINES_PKG.SetLineAcctAttrs(p_rec_acct_attrs);
170
171 -- 4655713b to handle MPA with Business flow method
172 XLA_AE_LINES_PKG.g_rec_lines.array_inherit_desc_flag(XLA_AE_LINES_PKG.g_LineNumber):= l_inherit_desc_flag;
173 IF l_bflow_method_code <> ''NONE'' THEN
174 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT(''MPA_'',l_bflow_method_code);
175 IF l_inherit_desc_flag = ''Y'' THEN
176 XLA_AE_LINES_PKG.g_rec_lines.array_description(XLA_AE_LINES_PKG.g_LineNumber):= NULL;
177 END IF;
178 END IF;
179
180 -- 5132302
181 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber):= p_bflow_applied_to_amt;
182
183 -- 4955764
184 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
185 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(p_hdr_idx);
186
187 --
188 -- call analytical criteria
189 --
190 $call_analytical_criteria$
191
192 --
193 -- call description
194 --
195 $call_description$
196 --
197 -- call ADRs
198 --
199 $call_adr$
200 --
201 --
202 XLA_AE_LINES_PKG.ValidateCurrentLine;
203
204 ------------------------------------------------------------
205 -- Add this to calculate the recognition amounts
206 ------------------------------------------------------------
207 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
208
209 --
210 -- following update the status on header depending on the erros encountered
211 -- while creating the line
212 --
213 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
214 (p_hdr_idx => p_hdr_idx
215 ,p_balance_type_code => ''A'');
216 --
217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
218 trace
219 (p_msg => ''END of RecognitionJLT_$alt_hash_id$''
220 ,p_level => C_LEVEL_PROCEDURE
221 ,p_module => l_log_module);
222 END IF;
223 --
224 RETURN XLA_AE_LINES_PKG.g_LineNumber;
225
226 EXCEPTION
227 WHEN xla_exceptions_pkg.application_exception THEN
228 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
229 trace
230 (p_msg => ''ERROR: XLA_CMP_COMPILER_ERROR=''||sqlerrm
231 ,p_level => C_LEVEL_EXCEPTION
232 ,p_module => l_log_module);
233 END IF;
234 RAISE;
235 WHEN OTHERS THEN
236 xla_exceptions_pkg.raise_message
237 (p_location => ''$package_name$.RecognitionJLT_$alt_hash_id$'');
238 END RecognitionJLT_$alt_hash_id$;
239 --
240 '; -- C_RECOG_JLT_BODY
241
242
243 --+==========================================================================+
244 --| |
245 --| Private global constant declarations |
246 --| |
247 --+==========================================================================+
248 --
249 --
250 g_package_name VARCHAR2(30); -- initialise in GenerateMpaJLT and used by GenerateOneMpaJLT
251
252 --=============================================================================
253 --
254 --
255 --
256 --
257 --
258 --
259 --
260 --
261 --
262 --
263 --
264 --
265 --
266 --
267 --
268 --
269 --
270 --
271 --
272 --
273 --
274 --
275 --=============================================================================
276 --
277 --=============================================================================
278 -- *********** Local Trace Routine **********
279 --=============================================================================
280
281 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
282 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
283 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
284 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
285 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
286 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
287
288 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
289 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.XLA_CMP_MPA_JLT_PKG';
290
291 g_log_level NUMBER;
292 g_log_enabled BOOLEAN;
293
294 PROCEDURE trace
295 ( p_msg IN VARCHAR2
296 , p_level IN NUMBER
297 , p_module IN VARCHAR2)
298 IS
299 BEGIN
300
301 ----------------------------------------------------------------
302 -- Following is for FND log.
303 ----------------------------------------------------------------
304 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
305 fnd_log.message(p_level, p_module);
306 ELSIF p_level >= g_log_level THEN
307 fnd_log.string(p_level, p_module, p_msg);
308 END IF;
309
310 EXCEPTION
311 WHEN xla_exceptions_pkg.application_exception THEN
312 RAISE;
313 WHEN OTHERS THEN
314 xla_exceptions_pkg.raise_message
315 (p_location => 'XLA_CMP_MPA_JLT_PKG.trace');
316 END trace;
317
318
319
320
321 /*------------------------------------------------------------+
322 | |
323 | PrivateFunction |
324 | |
325 | GenerateCallADR |
326 | |
327 | |
328 +------------------------------------------------------------*/
329 FUNCTION GenerateCallADR(
330 p_application_id IN NUMBER
331 , p_amb_context_code IN VARCHAR2
332 , p_entity_code IN VARCHAR2
333 , p_event_class_code IN VARCHAR2
334 , p_event_type_code IN VARCHAR2
335 , p_line_definition_owner_code IN VARCHAR2
336 , p_line_definition_code IN VARCHAR2
337 --
338 , p_accrual_jlt_type_code IN VARCHAR2
339 , p_accrual_jlt_code IN VARCHAR2
340 , p_mpa_jlt_type_code IN VARCHAR2
341 , p_mpa_jlt_code IN VARCHAR2
342 , p_bflow_method_code IN VARCHAR2 -- 4655713
343 --
344 , p_rec_aad_objects IN xla_cmp_source_pkg.t_rec_aad_objects
345 , p_array_mpa_jlt_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_byInt
346 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
347 )
348 RETURN CLOB
349 IS
350 CURSOR adr_cur IS
351 SELECT DISTINCT
352 NVL(xldj.segment_rule_appl_id,xldj.application_id)
353 , xldj.segment_rule_type_code
354 , xldj.segment_rule_code
355 , xldj.flexfield_segment_code
356 , 'NA' -- 'Side' is not applicable
357 , xldj.inherit_adr_flag
358 , xld.accounting_coa_id
359 , xld.transaction_coa_id
363 AND xldj.amb_context_code = p_amb_context_code
360 FROM xla_mpa_jlt_adr_assgns xldj
361 , xla_line_definitions_b xld
362 WHERE xldj.application_id = p_application_id
364 AND xldj.event_class_code = p_event_class_code
365 AND xldj.event_type_code = p_event_type_code
366 AND xldj.line_definition_owner_code = p_line_definition_owner_code
367 AND xldj.line_definition_code = p_line_definition_code
368 AND xldj.accounting_line_type_code = p_accrual_jlt_type_code
369 AND xldj.accounting_line_code = p_accrual_jlt_code
370 AND xldj.mpa_accounting_line_type_code = p_mpa_jlt_type_code
371 AND xldj.mpa_accounting_line_code = p_mpa_jlt_code
372 --
373 AND xld.application_id = xldj.application_id
374 AND xld.amb_context_code = xldj.amb_context_code
375 AND xld.event_class_code = xldj.event_class_code
376 AND xld.event_type_code = xldj.event_type_code
377 AND xld.line_definition_owner_code = xldj.line_definition_owner_code
378 AND xld.line_definition_code = xldj.line_definition_code
379 --
380 ORDER BY decode(xldj.FLEXFIELD_SEGMENT_CODE,'ALL',1,2), -- 4655713 process ALL segments first
381 xldj.segment_rule_code
382 ;
383
384 l_array_adr_type_code xla_cmp_source_pkg.t_array_VL1;
385 l_array_adr_code xla_cmp_source_pkg.t_array_VL30;
386 l_array_adr_segment_code xla_cmp_source_pkg.t_array_VL30;
387 l_array_side_code xla_cmp_source_pkg.t_array_VL30;
388 l_array_adr_appl_id xla_cmp_source_pkg.t_array_NUM;
389 l_array_inherit_adr_flag xla_cmp_source_pkg.t_array_VL1;
390 l_array_accounting_coa_id xla_cmp_source_pkg.t_array_NUM;
391 l_array_transaction_coa_id xla_cmp_source_pkg.t_array_NUM;
392
393 l_adrs CLOB;
394 l_log_module VARCHAR2(240);
395
396 BEGIN
397 IF g_log_enabled THEN
398 l_log_module := C_DEFAULT_MODULE||'.GenerateCallADR';
399 END IF;
400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
401 trace
402 (p_msg => 'BEGIN of GenerateCallADR'
403 ,p_level => C_LEVEL_PROCEDURE
404 ,p_module => l_log_module);
405 END IF;
406 --
407
408 OPEN adr_cur;
409 FETCH adr_cur BULK COLLECT INTO l_array_adr_appl_id
410 , l_array_adr_type_code
411 , l_array_adr_code
412 , l_array_adr_segment_code
413 , l_array_side_code
414 , l_array_inherit_adr_flag
415 , l_array_accounting_coa_id
416 , l_array_transaction_coa_id
417 ;
418 CLOSE adr_cur;
419
420 l_adrs := xla_cmp_acct_line_type_pkg.GenerateADRCalls(
421 p_application_id
422 ,p_entity_code
423 ,p_event_class_code
424 ,l_array_adr_type_code
425 ,l_array_adr_code
426 ,l_array_adr_segment_code
427 ,l_array_side_code -- Side Code Not Applicable
428 ,l_array_adr_appl_id -- IN
429 ,l_array_inherit_adr_flag -- IN
430 ,p_bflow_method_code -- 4655713
431 ,l_array_accounting_coa_id -- IN
432 ,l_array_transaction_coa_id -- IN
433 ,p_array_mpa_jlt_source_index -- IN OUT
434 ,p_rec_aad_objects
435 ,p_rec_sources);
436 RETURN l_adrs;
437
438 EXCEPTION
439 WHEN VALUE_ERROR THEN
440 IF adr_cur%ISOPEN THEN CLOSE adr_cur; END IF;
441 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
442 trace
443 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
444 ,p_level => C_LEVEL_EXCEPTION
445 ,p_module => l_log_module);
446 END IF;
447 RETURN NULL;
448 WHEN xla_exceptions_pkg.application_exception THEN
449 IF adr_cur%ISOPEN THEN CLOSE adr_cur; END IF;
450 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
451 trace
452 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR='||sqlerrm
453 ,p_level => C_LEVEL_EXCEPTION
454 ,p_module => l_log_module);
455 END IF;
456 RETURN NULL;
457 WHEN OTHERS THEN
458 IF adr_cur%ISOPEN THEN CLOSE adr_cur; END IF;
459 xla_exceptions_pkg.raise_message
460 (p_location => 'XLA_CMP_MPA_JLT_PKG.GenerateCallADR');
461
462 END GenerateCallADR;
463
464
465
466 /*------------------------------------------------------------+
467 | |
468 | PrivateFunction |
469 | |
470 | GenerateOneMpaJLT |
471 | |
472 | |
473 +------------------------------------------------------------*/
474 FUNCTION GenerateOneMpaJLT(
475 p_application_id IN NUMBER
479 , p_event_type_code IN VARCHAR2
476 , p_amb_context_code IN VARCHAR2
477 , p_entity_code IN VARCHAR2
478 , p_event_class_code IN VARCHAR2
480 , p_line_definition_owner_code IN VARCHAR2
481 , p_line_definition_code IN VARCHAR2
482 --
483 , p_accrual_jlt_owner_code IN VARCHAR2
484 , p_accrual_jlt_code IN VARCHAR2
485 --
486 , p_mpa_jlt_owner_code IN VARCHAR2
487 , p_mpa_jlt_code IN VARCHAR2
488 , p_mpa_jlt_name IN VARCHAR2
489 --
490 , p_description_type_code IN VARCHAR2
491 , p_description_code IN VARCHAR2
492 --
493 , p_acct_entry_type_code IN VARCHAR2
494 , p_natural_side_code IN VARCHAR2
495 , p_transfer_mode_code IN VARCHAR2
496 , p_switch_side_flag IN VARCHAR2
497 , p_merge_duplicate_code IN VARCHAR2
498 , p_accounting_class_code IN VARCHAR2
499 , p_rounding_class_code IN VARCHAR2
500 , p_bflow_method_code IN VARCHAR2 -- 4655713
501 , p_inherit_desc_flag IN VARCHAR2 -- 4655713b
502 --
503 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
504 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
505 , p_IsCompiled OUT NOCOPY BOOLEAN
506 )
507 RETURN DBMS_SQL.VARCHAR2S
508 IS
509 --
510 l_parameters VARCHAR2(32000);
511
512 l_jlt CLOB;
513 l_ObjectIndex BINARY_INTEGER;
514 l_array_jlt DBMS_SQL.VARCHAR2S;
515
516 l_array_mpa_jlt_source_index xla_cmp_source_pkg.t_array_ByInt;
517 l_array_null_mpa_jlt_src_idx xla_cmp_source_pkg.t_array_ByInt;
518 l_log_module VARCHAR2(240);
519
520 BEGIN
521
522 IF g_log_enabled THEN
523 l_log_module := C_DEFAULT_MODULE||'.GenerateOneMpaJLT';
524 END IF;
525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
526 trace
527 (p_msg => 'BEGIN of GenerateOneMpaJLT'
528 ,p_level => C_LEVEL_PROCEDURE
529 ,p_module => l_log_module);
530 END IF;
531
532 --------------------------------------
533 -- Initialise
534 --------------------------------------
535 p_IsCompiled := FALSE;
536 --
537 --
538 -- Replace JLT information token
539 --
540 l_jlt := C_RECOG_JLT_BODY;
541 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$mpa_jlt_appl_id$' ,TO_CHAR(p_application_id));
542 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$mpa_jlt_type_code$' ,p_mpa_jlt_owner_code);
543 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$mpa_jlt_code$' ,p_mpa_jlt_code);
544 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$amb_context_code$' ,p_amb_context_code);
545 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$entity_code$' ,p_entity_code);
546 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$event_class_code$' ,p_event_class_code);
547 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$event_type_code$' ,p_event_type_code);
548 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$line_definition_owner_code$' ,p_line_definition_owner_code);
549 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$line_definition_code$' ,p_line_definition_code);
550 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$jlt_type_code$' ,p_accrual_jlt_owner_code);
551 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$jlt_code$' ,p_accrual_jlt_code);
552
553 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$bflow_method_code$' ,p_bflow_method_code); -- 4655713b
554 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt ,'$inherit_desc_flag$' ,p_inherit_desc_flag); -- 4655713b
555
556 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
557 ,'$acct_line_options$'
558 ,xla_cmp_acct_line_type_pkg.GetALTOption
559 (p_acct_entry_type_code
560 ,'C' -- mpa line is not gain/loss for sure
561 ,p_natural_side_code
562 ,p_transfer_mode_code
563 ,p_switch_side_flag
564 ,p_merge_duplicate_code)
565 );
566 --
567 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
568 ,'$set_acct_class$'
569 ,xla_cmp_acct_line_type_pkg.GetAcctClassCode
570 (p_accounting_class_code)
571 );
572 --
573 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
574 ,'$set_rounding_class$'
575 , xla_cmp_acct_line_type_pkg.GetRoundingClassCode
576 (p_rounding_class_code)
577 );
578
579 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
580 ,'$call_analytical_criteria$'
581 ,xla_cmp_analytic_criteria_pkg.GenerateMpaLineAC
582 (p_application_id
583 ,p_amb_context_code
584 ,p_event_class_code
585 ,p_event_type_code
586 ,p_line_definition_owner_code
587 ,p_line_definition_code
588 ,p_accrual_jlt_owner_code
589 ,p_accrual_jlt_code
590 ,p_mpa_jlt_owner_code
591 ,p_mpa_jlt_code
592 ,l_array_mpa_jlt_source_index
593 ,p_rec_sources)
594 );
595
596 --
600 ,'$call_description$'
597 IF p_description_type_code IS NOT NULL AND
598 p_description_code IS NOT NULL THEN
599 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
601 , xla_cmp_acct_line_type_pkg.GenerateCallDescription
602 (p_application_id => p_application_id
603 ,p_description_type_code => p_description_type_code
604 ,p_description_code => p_description_code
605 ,p_header_line => 'L' -- line
606 ,p_array_alt_source_index => l_array_mpa_jlt_source_index
607 ,p_rec_aad_objects => p_rec_aad_objects
608 ,p_rec_sources => p_rec_sources)
609 );
610 --
611 ELSE
612 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
613 ,'$call_description$'
614 ,'-- no description for the jlt');
615 END IF;
616
617 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt
618 ,'$call_adr$'
619 ,GenerateCallADR -- from XLA_CMP_MPA_JLT_PKG
620 (p_application_id
621 ,p_amb_context_code
622 ,p_entity_code
623 ,p_event_class_code
624 ,p_event_type_code
625 ,p_line_definition_owner_code
626 ,p_line_definition_code
627 ,p_accrual_jlt_owner_code
628 ,p_accrual_jlt_code
629 ,p_mpa_jlt_owner_code
630 ,p_mpa_jlt_code
631 ,p_bflow_method_code -- 4655713
632 ,p_rec_aad_objects
633 ,l_array_mpa_jlt_source_index -- IN OUT
634 ,p_rec_sources)
635 );
636 --
637 l_parameters := xla_cmp_source_pkg.GenerateParameters(
638 p_array_source_index => l_array_mpa_jlt_source_index
639 , p_rec_sources => p_rec_sources
640 ) ;
641 --
642 IF l_parameters IS NULL THEN
643 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt, '$parameters$' ,' ');
644 ELSE
645 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt, '$parameters$', l_parameters );
646 END IF;
647
648 --
649
650 l_ObjectIndex := xla_cmp_source_pkg.CacheAADObject (
651 p_object => xla_cmp_source_pkg.C_RECOG_JLT
652 , p_object_code => p_mpa_jlt_code
653 , p_object_type_code => p_mpa_jlt_owner_code
654 , p_application_id => p_application_id
655 , p_event_class_code => p_event_class_code
656 , p_event_type_code => p_event_type_code
657 , p_line_definition_owner_code => p_line_definition_owner_code
658 , p_line_definition_code => p_line_definition_code
659 , p_array_source_index => l_array_mpa_jlt_source_index
660 , p_rec_aad_objects => p_rec_aad_objects
661 --
662 );
663 --
664
665 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt, '$alt_hash_id$', TO_CHAR(l_ObjectIndex));
666 l_jlt := xla_cmp_string_pkg.replace_token(l_jlt, '$package_name$', g_package_name);
667
668 xla_cmp_string_pkg.CreateString(
669 p_package_text => l_jlt
670 ,p_array_string => l_array_jlt
671 );
672
673 p_IsCompiled := TRUE; -- l_IsCompiled ;
674
675 --l_array_mpa_jlt_source_index := l_array_null_mpa_jlt_src_idx; -- awan
676
677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
678 trace
679 (p_msg => 'return value. = '||
680 CASE p_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
681 ,p_level => C_LEVEL_PROCEDURE
682 ,p_module => l_log_module);
683
684 trace
685 (p_msg => 'END of GenerateOneMpaJLT'
686 ,p_level => C_LEVEL_PROCEDURE
687 ,p_module => l_log_module);
688 END IF;
689
690 RETURN l_array_jlt;
691
692 EXCEPTION
693 WHEN VALUE_ERROR THEN
694 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
695 trace
696 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
697 ,p_level => C_LEVEL_EXCEPTION
698 ,p_module => l_log_module);
699 END IF;
700 p_IsCompiled := FALSE;
701 RETURN xla_cmp_string_pkg.g_null_varchar2s;
702 WHEN xla_exceptions_pkg.application_exception THEN
703 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
704 trace
705 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
706 ,p_level => C_LEVEL_EXCEPTION
707 ,p_module => l_log_module);
708 END IF;
709 p_IsCompiled := FALSE;
710 RETURN xla_cmp_string_pkg.g_null_varchar2s;
711 WHEN OTHERS THEN
712 p_IsCompiled := FALSE;
713 xla_exceptions_pkg.raise_message
714 (p_location => 'XLA_CMP_MPA_JLT_PKG.GenerateOneMpaJLT');
715 END GenerateOneMpaJLT;
716
717
718
719 /*------------------------------------------------------------+
720 | |
721 | Public Function |
725 | |
722 | |
723 | GenerateMpaJLCProcs |
724 | |
726 +------------------------------------------------------------*/
727 FUNCTION GenerateMpaJLTProcs(
728 p_product_rule_code IN VARCHAR2
729 , p_product_rule_type_code IN VARCHAR2
730 , p_application_id IN NUMBER
731 , p_amb_context_code IN VARCHAR2
732 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
733 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
734 , p_IsCompiled OUT NOCOPY BOOLEAN
735 )
736 RETURN DBMS_SQL.VARCHAR2S
737 IS
738 --
739 -- Retrieve all recognition JLT
740 --
741 CURSOR jlt_cur
742 IS
743 SELECT DISTINCT
744 xmja.mpa_accounting_line_type_code
745 , xmja.mpa_accounting_line_code
746 --
747 , REPLACE(xaltt.name , '''','''''')
748 --
749 , xmja.description_type_code
750 , xmja.description_code
751 --
752 , xaltb.accounting_entry_type_code
753 , CASE WHEN xmja.mpa_accounting_line_code = xldj.accounting_line_code AND
754 xmja.mpa_accounting_line_type_code = xldj.accounting_line_type_code
755 THEN DECODE(xaltb.natural_side_code,'D','C','D')
756 ELSE xaltb.natural_side_code
757 END
758 , xaltb.gl_transfer_mode_code
759 , xaltb.switch_side_flag
760 , xaltb.merge_duplicate_code
761 --
762 , xaltb.accounting_class_code
763 , xaltb.rounding_class_code
764 --
765 , xpah.entity_code
766 , xpah.event_class_code
767 , xpah.event_type_code
768 --
769 , xald.line_definition_owner_code
770 , xald.line_definition_code
771 --
772 , xldj.accounting_line_type_code
773 , xldj.accounting_line_code
774 --
775 , xaltb.business_method_code -- 4655713
776 , xmja.inherit_desc_flag -- 4655713b
777 FROM xla_aad_line_defn_assgns xald
778 , xla_line_defn_jlt_assgns xldj
779 , xla_mpa_jlt_assgns xmja
780 , xla_prod_acct_headers xpah
781 , xla_acct_line_types_b xaltb
782 , xla_acct_line_types_tl xaltt
783 , xla_line_definitions_b xld
784 --
785 WHERE xpah.application_id = p_application_id
786 AND xpah.product_rule_type_code = p_product_rule_type_code
787 AND xpah.product_rule_code = p_product_rule_code
788 AND xpah.amb_context_code = p_amb_context_code
789 AND xpah.accounting_required_flag = 'Y'
790 AND xpah.validation_status_code = 'R'
791 --
792 AND xald.application_id = xpah.application_id
793 AND xald.amb_context_code = xpah.amb_context_code
794 AND xald.product_rule_type_code = xpah.product_rule_type_code
795 AND xald.product_rule_code = xpah.product_rule_code
796 AND xald.event_class_code = xpah.event_class_code
797 AND xald.event_type_code = xpah.event_type_code
798 --
799 AND xldj.application_id = xald.application_id
800 AND xldj.amb_context_code = xald.amb_context_code
801 AND xldj.event_class_code = xald.event_class_code
802 AND xldj.event_type_code = xald.event_type_code
803 AND xldj.line_definition_owner_code = xald.line_definition_owner_code
804 AND xldj.line_definition_code = xald.line_definition_code
805 AND xldj.active_flag = 'Y'
806 --
807 AND xmja.application_id = xldj.application_id
808 AND xmja.amb_context_code = xldj.amb_context_code
809 AND xmja.event_class_code = xldj.event_class_code
810 AND xmja.event_type_code = xldj.event_type_code
811 AND xmja.line_definition_owner_code = xldj.line_definition_owner_code
812 AND xmja.line_definition_code = xldj.line_definition_code
813 AND xmja.accounting_line_code = xldj.accounting_line_code
814 AND xmja.accounting_line_type_code = xldj.accounting_line_type_code
815 --
816 AND xaltb.application_id = xmja.application_id
817 AND xaltb.amb_context_code = xmja.amb_context_code
818 AND xaltb.accounting_line_code = xmja.mpa_accounting_line_code
819 AND xaltb.accounting_line_type_code = xmja.mpa_accounting_line_type_code
820 AND xaltb.event_class_code = xmja.event_class_code
821 AND xaltb.enabled_flag = 'Y'
822 --
823 AND xaltb.application_id = xaltt.application_id (+)
824 AND xaltb.amb_context_code = xaltt.amb_context_code (+)
825 AND xaltb.entity_code = xaltt.entity_code (+)
826 AND xaltb.event_class_code = xaltt.event_class_code (+)
827 AND xaltb.accounting_line_code = xaltt.accounting_line_code (+)
828 AND xaltb.accounting_line_type_code = xaltt.accounting_line_type_code(+)
829 AND xaltt.language (+) = USERENV('LANG')
830 --
831 AND xald.application_id = xld.application_id
832 AND xald.amb_context_code = xld.amb_context_code
836 AND xald.line_definition_code = xld.line_definition_code
833 AND xald.event_class_code = xld.event_class_code
834 AND xald.event_type_code = xld.event_type_code
835 AND xald.line_definition_owner_code = xld.line_definition_owner_code
837 AND xld.budgetary_control_flag = XLA_CMP_PAD_PKG.g_bc_pkg_flag
838 --
839 --
840 ORDER BY xldj.accounting_line_type_code, xldj.accounting_line_code,
841 xmja.mpa_accounting_line_type_code, xmja.mpa_accounting_line_code
842 ;
843 --
844 --
845 l_body DBMS_SQL.VARCHAR2S;
846 l_jlt DBMS_SQL.VARCHAR2S;
847 --
848 l_array_mpa_jlt_type_code xla_cmp_source_pkg.t_array_VL1;
849 l_array_mpa_jlt_code xla_cmp_source_pkg.t_array_VL30;
850 l_array_mpa_jlt_name xla_cmp_source_pkg.t_array_VL80;
851 --
852 l_array_desc_type_code xla_cmp_source_pkg.t_array_VL1;
853 l_array_desc_code xla_cmp_source_pkg.t_array_VL30;
854 --
855 l_array_entry_type_code xla_cmp_source_pkg.t_array_VL1;
856 l_array_natural_side_code xla_cmp_source_pkg.t_array_VL1;
857 l_array_transfer_mode xla_cmp_source_pkg.t_array_VL1;
858 l_array_switch_side_flag xla_cmp_source_pkg.t_array_VL1;
859 l_array_merge_code xla_cmp_source_pkg.t_array_VL1;
860 --
861 l_array_acct_class_code xla_cmp_source_pkg.t_array_VL30;
862 l_array_rounding_class_code xla_cmp_source_pkg.t_array_VL30;
863 --
864 l_array_entity_code xla_cmp_source_pkg.t_array_VL30;
865 l_array_class_code xla_cmp_source_pkg.t_array_VL30;
866 l_array_event_type xla_cmp_source_pkg.t_array_VL30;
867 --
868 l_array_jld_owner_code xla_cmp_source_pkg.t_array_VL1;
869 l_array_jld_code xla_cmp_source_pkg.t_array_VL30;
870 --
871 l_array_accrual_jlt_type_code xla_cmp_source_pkg.t_array_VL1;
872 l_array_accrual_jlt_code xla_cmp_source_pkg.t_array_VL30;
873 --
874 l_array_bflow_method_code xla_cmp_source_pkg.t_array_VL30; -- 4655713
875 l_array_inherit_desc_flag xla_cmp_source_pkg.t_array_VL1; -- 4655713b
876
877 --
878 l_IsCompiled BOOLEAN;
879 l_number NUMBER;
880
881 l_log_module VARCHAR2(240);
882
883 BEGIN
884 IF g_log_enabled THEN
885 l_log_module := C_DEFAULT_MODULE||'.GenerateMpaJLTProcs';
886 END IF;
887 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
888 trace
889 (p_msg => 'BEGIN of GenerateMpaJLTProcs'
890 ,p_level => C_LEVEL_PROCEDURE
891 ,p_module => l_log_module);
892 END IF;
893 --
894 OPEN jlt_cur;
895 --
896 FETCH jlt_cur BULK COLLECT INTO l_array_mpa_jlt_type_code
897 , l_array_mpa_jlt_code
898 , l_array_mpa_jlt_name
899 , l_array_desc_type_code
900 , l_array_desc_code
901 , l_array_entry_type_code
902 , l_array_natural_side_code
903 , l_array_transfer_mode
904 , l_array_switch_side_flag
905 , l_array_merge_code
906 , l_array_acct_class_code
907 , l_array_rounding_class_code
908 , l_array_entity_code
909 , l_array_class_code
910 , l_array_event_type
911 , l_array_jld_owner_code
912 , l_array_jld_code
913 , l_array_accrual_jlt_type_code
914 , l_array_accrual_jlt_code
915 , l_array_bflow_method_code -- 4655713
916 , l_array_inherit_desc_flag -- 4655713b
917 ;
918 CLOSE jlt_cur;
919 --
920 l_body := xla_cmp_string_pkg.g_null_varchar2s;
921
922 p_IsCompiled := TRUE;
923
924 --
925 -- Generate RecognitionJLT_XX for each recognition JLT
926 --
927 IF l_array_mpa_jlt_code.COUNT > 0 THEN
928 --
929 p_IsCompiled := TRUE;
930 --
931 FOR Idx In l_array_mpa_jlt_code.FIRST .. l_array_mpa_jlt_code.LAST LOOP
932 --
933 IF l_array_mpa_jlt_code.EXISTS(Idx) THEN
934 --
935 l_jlt := GenerateOneMpaJLT(
936 p_application_id => p_application_id
937 , p_amb_context_code => p_amb_context_code
938 , p_entity_code => l_array_entity_code(Idx)
939 , p_event_class_code => l_array_class_code(Idx)
940 , p_event_type_code => l_array_event_type(Idx)
941 , p_line_definition_owner_code => l_array_jld_owner_code(Idx)
942 , p_line_definition_code => l_array_jld_code(Idx)
943 --
944 , p_accrual_jlt_owner_code => l_array_accrual_jlt_type_code(Idx)
945 , p_accrual_jlt_code => l_array_accrual_jlt_code(Idx)
946 --
947 , p_mpa_jlt_owner_code => l_array_mpa_jlt_type_code(Idx)
948 , p_mpa_jlt_code => l_array_mpa_jlt_code(Idx)
949 , p_mpa_jlt_name => l_array_mpa_jlt_name(Idx)
950 --
954 , p_natural_side_code => l_array_natural_side_code(Idx)
951 , p_description_type_code => l_array_desc_type_code(Idx)
952 , p_description_code => l_array_desc_code(Idx)
953 , p_acct_entry_type_code => l_array_entry_type_code(Idx)
955 , p_transfer_mode_code => l_array_transfer_mode(Idx)
956 , p_switch_side_flag => l_array_switch_side_flag(Idx)
957 , p_merge_duplicate_code => l_array_merge_code(Idx)
958 , p_accounting_class_code => l_array_acct_class_code(Idx)
959 , p_rounding_class_code => l_array_rounding_class_code(Idx)
960 --
961 , p_bflow_method_code => l_array_bflow_method_code(Idx) -- 4655713
962 , p_inherit_desc_flag => l_array_inherit_desc_flag(Idx) -- 4655713b
963 --
964 , p_rec_aad_objects => p_rec_aad_objects
965 , p_rec_sources => p_rec_sources
966 , p_IsCompiled => l_IsCompiled
967 );
968 --
969 l_body := xla_cmp_string_pkg.ConcatTwoStrings (
970 p_array_string_1 => l_body
971 ,p_array_string_2 => l_jlt
972 );
973 --
974 END IF;
975 --
976 p_IsCompiled := p_IsCompiled AND l_IsCompiled;
977 --
978 END LOOP;
979 END IF;
980
981 RETURN l_body;
982
983 EXCEPTION
984 WHEN xla_exceptions_pkg.application_exception THEN
985 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
986 trace
987 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
988 ,p_level => C_LEVEL_EXCEPTION
989 ,p_module => l_log_module);
990 END IF;
991 p_IsCompiled := FALSE;
992 RETURN xla_cmp_string_pkg.g_null_varchar2s;
993 WHEN OTHERS THEN
994 p_IsCompiled := FALSE;
995 xla_exceptions_pkg.raise_message
996 (p_location => 'XLA_CMP_MPA_JLT_PKG.GenerateMpaJLTProcs');
997
998 END GenerateMpaJLTProcs;
999
1000
1001 /*------------------------------------------------------------+
1002 | |
1003 | Public Function |
1004 | |
1005 | GenerateMpaJLT |
1006 | |
1007 | Generates the RecognitionJLT_xx() functions from the AMB |
1008 | Recognition Journal line types assigned to the AAD. |
1009 | It returns TRUE if generation succeeds, FALSE otherwise |
1010 | |
1011 +------------------------------------------------------------*/
1012
1013 FUNCTION GenerateMpaJLT(
1014 p_product_rule_code IN VARCHAR2
1015 , p_product_rule_type_code IN VARCHAR2
1016 , p_application_id IN NUMBER
1017 , p_amb_context_code IN VARCHAR2
1018 , p_package_name IN VARCHAR2
1019 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
1020 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1021 , p_package_body OUT NOCOPY DBMS_SQL.VARCHAR2S
1022 )
1023 RETURN BOOLEAN
1024 IS
1025
1026 l_IsCompiled BOOLEAN;
1027 l_body DBMS_SQL.VARCHAR2S;
1028 l_log_module VARCHAR2(240);
1029
1030 BEGIN
1031 IF g_log_enabled THEN
1032 l_log_module := C_DEFAULT_MODULE||'.GenerateMpaJLT';
1033 END IF;
1034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1035 trace
1036 (p_msg => 'BEGIN of GenerateMpaJLT'
1037 ,p_level => C_LEVEL_PROCEDURE
1038 ,p_module => l_log_module);
1039 END IF;
1040 --
1041 -- Init global variables
1042 --
1043 l_IsCompiled := TRUE;
1044 l_body := xla_cmp_string_pkg.g_null_varchar2s;
1045 --
1046 g_package_name := p_package_name;
1047 --
1048 l_body := GenerateMpaJLTProcs(
1049 p_product_rule_code => p_product_rule_code
1050 , p_product_rule_type_code => p_product_rule_type_code
1051 , p_application_id => p_application_id
1052 , p_amb_context_code => p_amb_context_code
1053 , p_rec_aad_objects => p_rec_aad_objects
1054 , p_rec_sources => p_rec_sources
1055 , p_IsCompiled => l_IsCompiled
1056 );
1057 --
1058 --
1059 p_package_body := l_body;
1060 g_package_name := NULL;
1061 --
1062 RETURN l_IsCompiled;
1063
1064 EXCEPTION
1065 WHEN xla_exceptions_pkg.application_exception THEN
1066 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1067 trace
1068 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
1069 ,p_level => C_LEVEL_EXCEPTION
1070 ,p_module => l_log_module);
1071 END IF;
1072 RETURN FALSE;
1073 WHEN OTHERS THEN
1074 xla_exceptions_pkg.raise_message
1075 (p_location => 'XLA_CMP_MPA_JLT_PKG.GenerateMpaJLT');
1076 END GenerateMpaJLT;
1077 --
1078 --=============================================================================
1079 --
1080 --
1081 --
1082 --
1083 --
1084 --
1085 --
1086 --
1087 --
1088 --
1089 --
1090 --
1091 --
1092 --
1093 --
1094 --
1095 --
1096 --
1097 --
1098 --
1099 --
1100 --
1101 --=============================================================================
1102 --=============================================================================
1103 -- *********** Initialization routine **********
1104 --=============================================================================
1105
1106 BEGIN
1107
1108 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1109 g_log_enabled := fnd_log.test
1110 (log_level => g_log_level
1111 ,module => C_DEFAULT_MODULE);
1112
1113 IF NOT g_log_enabled THEN
1114 g_log_level := C_LEVEL_LOG_DISABLED;
1115 END IF;
1116
1117 END xla_cmp_mpa_jlt_pkg;