[Home] [Help]
PACKAGE BODY: APPS.FA_PROCESS_GROUPS_PKG
Source
1 PACKAGE BODY FA_PROCESS_GROUPS_PKG AS
2 /* $Header: FAPGADJB.pls 120.13.12010000.4 2008/10/14 07:30:39 tkawamur ship $ */
3
4 TYPE num_tbl IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
5 TYPE date_tbl IS TABLE OF DATE INDEX BY BINARY_INTEGER;
6 TYPE v30_tbl IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
7
8 g_log_level_rec fa_api_types.log_level_rec_type;
9
10 --*********************** Private functions ******************************--
11 -- private declaration for books (mrc) wrapper
12 FUNCTION do_all_books(
13 p_book IN VARCHAR2,
14 p_source_group_asset_id IN NUMBER DEFAULT NULL,
15 p_dest_group_asset_id IN NUMBER DEFAULT NULL,
16 p_trx_number IN NUMBER DEFAULT NULL,
17 p_log_level_rec IN fa_api_types.log_level_rec_type default null)
18 RETURN BOOLEAN;
19
20 FUNCTION do_group_reclass(
21 p_trx_ref_rec IN fa_api_types.trx_ref_rec_type,
22 p_mrc_sob_type_code IN VARCHAR2,
23 p_log_level_rec IN fa_api_types.log_level_rec_type default null)
24 RETURN BOOLEAN;
25
26 PROCEDURE do_pending_groups(
27 errbuf OUT NOCOPY VARCHAR2,
28 retcode OUT NOCOPY NUMBER,
29 p_book IN VARCHAR2,
30 p_source_group_asset_id IN NUMBER,
31 p_dest_group_asset_id IN NUMBER DEFAULT NULL,
32 p_trx_number IN NUMBER DEFAULT NULL) IS
33
34 l_calling_fn varchar2(60) := 'fa_process_groups_pkg.do_pending_groups';
35 l_calling_fn2 varchar2(60) := 'do_pending_groups';
36
37 l_msg_count NUMBER := 0;
38 l_msg_data VARCHAR2(2000) := NULL;
39
40 group_adj_err exception;
41
42 BEGIN
43
44 if (not g_log_level_rec.initialized) then
45 if (NOT fa_util_pub.get_log_level_rec (
46 x_log_level_rec => g_log_level_rec
47 )) then
48 raise group_adj_err;
49 end if;
50 end if;
51
52 fa_srvr_msg.Init_Server_Message; -- Initialize server message stack
53 fa_debug_pkg.Initialize; -- Initialize debug message stack
54
55 if not do_all_books(
56 p_book => p_book,
57 p_source_group_asset_id => p_source_group_asset_id,
58 p_dest_group_asset_id => p_dest_group_asset_id,
59 p_trx_number => p_trx_number,
60 p_log_level_rec => g_log_level_rec) then
61 raise group_adj_err;
62 end if;
63
64 fa_srvr_msg.add_message(
65 calling_fn => l_calling_fn,
66 name => 'FA_SHARED_END_SUCCESS',
67 token1 => 'PROGRAM',
68 value1 => 'FAPGADJ',
69 p_log_level_rec => g_log_level_rec);
70
71 FND_MSG_PUB.Count_And_Get(
72 p_count => l_msg_count,
73 p_data => l_msg_data);
74
75 fa_srvr_msg.Write_Msg_Log(l_msg_count, l_msg_data);
76
77 -- return success to concurrent manager
78 retcode := 0;
79
80 EXCEPTION
81 WHEN GROUP_ADJ_ERR THEN
82 ROLLBACK WORK;
83 fa_srvr_msg.add_message(
84 calling_fn => 'fa_process_groups_pkg.do_pending_groups',
85 name => 'FA_SHARED_END_WITH_ERROR',
86 token1 => 'PROGRAM',
87 value1 => 'FAPGADJ'
88 ,p_log_level_rec => g_log_level_rec);
89
90 if (g_log_level_rec.statement_level) then
91 fa_debug_pkg.Write_Debug_Log;
92 end if;
93 FND_MSG_PUB.Count_And_Get(
94 p_count => l_msg_count,
95 p_data => l_msg_data);
96 fa_srvr_msg.Write_Msg_Log(l_msg_count, l_msg_data);
97 -- return failure to concurrent manager
98 retcode := 2;
99
100 WHEN OTHERS THEN
101 ROLLBACK WORK;
102 fa_srvr_msg.add_sql_error (
103 calling_fn => l_calling_fn
104 ,p_log_level_rec => g_log_level_rec);
105 fa_srvr_msg.add_message(
106 calling_fn => l_calling_fn,
107 name => 'FA_SHARED_END_WITH_ERROR',
108 token1 => 'PROGRAM',
109 value1 => 'FAPGADJ',
110 p_log_level_rec => g_log_level_rec);
111
112 if (g_log_level_rec.statement_level) then
113 fa_debug_pkg.Write_Debug_Log;
114 end if;
115 FND_MSG_PUB.Count_And_Get(
116 p_count => l_msg_count,
117 p_data => l_msg_data);
118 fa_srvr_msg.Write_Msg_Log(l_msg_count, l_msg_data);
119 -- return failure to concurrent manager
120 retcode := 2;
121
122 END do_pending_groups;
123
124 FUNCTION do_all_books(
125 p_book IN VARCHAR2,
126 p_source_group_asset_id IN NUMBER DEFAULT NULL,
127 p_dest_group_asset_id IN NUMBER DEFAULT NULL,
128 p_trx_number IN NUMBER DEFAULT NULL,
129 p_log_level_rec IN fa_api_types.log_level_rec_type default null)
130 RETURN BOOLEAN IS
131
132 -- source group asset
133 -- if not group reclass then this is the only group which is being
134 -- impacted by member trxn
135 l_trans_rec FA_API_TYPES.trans_rec_type;
136 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
137 l_asset_desc_rec FA_API_TYPES.asset_desc_rec_type;
138 l_asset_type_rec FA_API_TYPES.asset_type_rec_type;
139 l_asset_cat_rec FA_API_TYPES.asset_cat_rec_type;
140 l_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type;
141 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
142 l_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type;
143 l_asset_deprn_rec_old FA_API_TYPES.asset_deprn_rec_type;
144 l_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type;
145 l_asset_deprn_rec_new FA_API_TYPES.asset_deprn_rec_type;
146 l_period_rec FA_API_TYPES.period_rec_type;
147
148 l_asset_fin_rec_adj_null FA_API_TYPES.asset_fin_rec_type;
149 l_asset_deprn_rec_adj_null FA_API_TYPES.asset_deprn_rec_type;
150
151 l_trx_ref_rec fa_api_types.trx_ref_rec_type;
152
153 l_sob_tbl FA_CACHE_PKG.fazcrsob_sob_tbl_type;
154 l_mrc_sob_type_code varchar2(1);
155
156 l_source_asset_id number;
157 l_dest_asset_id number;
158 l_asset_id number;
159 l_old_trx_id number;
160 l_trx_id_in number;
161
162 l_adj_count number;
163
164 l_reclassed_asset_id number;
165 l_reclass_src_dest varchar2(10);
166 l_reclassed_asset_dpis date;
167 l_deprn_exp number;
168 l_bonus_deprn_exp number;
169 l_rowid rowid;
170
171 l_deprn_rsv number;
172
173 -- HHIRAGA added
174 l_group_level_override varchar2(1) := NULL;
175 x_new_deprn_amount number;
176 x_new_bonus_amount number;
177 l_rc number;
178
179 -- SLA
180 l_thid number(15);
181 l_prior_trx_reference_id number(15) := 0;
182 l_prior_trx_count number(15);
183 l_event_type_code varchar2(30);
184 l_trx_ref_type varchar2(30);
185 l_asset_type varchar2(30);
186 l_src_asset_type varchar2(30);
187 l_dest_asset_type varchar2(30);
188
189 l_calling_fn varchar2(60) :=
190 'fa_process_groups_pkg.do_all_books';
191
192 cursor get_group_assets is
193 select bk.asset_id,
194 bk.transaction_header_id_in,
195 bk.rowid,
196 th.transaction_type_code,
197 th.transaction_date_entered,
198 th.transaction_subtype,
199 th.transaction_key,
200 th.amortization_start_date,
201 th.calling_interface,
202 th.member_transaction_header_id,
203 th.trx_reference_id,
204 th.event_id
205 from fa_books bk,
206 fa_transaction_headers th
207 where bk.asset_id in (l_source_asset_id, l_dest_asset_id)
208 and bk.book_type_code = p_book
209 and bk.adjustment_required_status = 'GADJ'
210 and bk.date_ineffective is null
211 and th.transaction_header_id = bk.transaction_header_id_in
212 order by bk.transaction_header_id_in;
213
214 cursor get_all_groups is
215 select bk.asset_id,
216 bk.transaction_header_id_in,
217 bk.rowid,
218 th.transaction_type_code,
219 th.transaction_date_entered,
220 th.transaction_subtype,
221 th.transaction_key,
222 th.amortization_start_date,
223 th.calling_interface,
224 th.member_transaction_header_id,
225 th.trx_reference_id,
226 th.event_id
227 from fa_books bk,
228 fa_transaction_headers th
229 where bk.book_type_code = p_book
230 and bk.adjustment_required_status = 'GADJ'
231 and bk.date_ineffective is null
232 and th.transaction_header_id = bk.transaction_header_id_in
233 order by bk.transaction_header_id_in;
234
235 cursor get_old_trx is
236 select transaction_header_id_in
237 from fa_books
238 where asset_id = l_asset_id
239 and book_type_code = p_book
240 and transaction_header_id_out = l_trx_id_in;
241
242 cursor check_adj_status is
243 select count(*)
244 from fa_books
245 where transaction_header_id_in = l_trx_id_in
246 and adjustment_required_status = 'GADJ';
247
248 cursor get_trx_ref is
249 select TRX_REFERENCE_ID,
250 TRANSACTION_TYPE,
251 SRC_TRANSACTION_SUBTYPE,
252 DEST_TRANSACTION_SUBTYPE,
253 BOOK_TYPE_CODE,
254 SRC_ASSET_ID,
255 SRC_TRANSACTION_HEADER_ID,
256 DEST_ASSET_ID,
257 DEST_TRANSACTION_HEADER_ID,
258 MEMBER_ASSET_ID,
259 MEMBER_TRANSACTION_HEADER_ID,
260 SRC_AMORTIZATION_START_DATE,
261 DEST_AMORTIZATION_START_DATE,
262 RESERVE_TRANSFER_AMOUNT,
263 SRC_EXPENSE_AMOUNT,
264 DEST_EXPENSE_AMOUNT,
265 SRC_EOFY_RESERVE,
266 DEST_EOFY_RESERVE
267 from fa_trx_references
268 where TRX_REFERENCE_ID = l_trans_rec.trx_reference_id;
269
270 --
271 -- Energy Enhancement.
272 --
273 CURSOR c_get_unplanned_amt IS
274 select adjustment_amount
275 from fa_adjustments
276 where asset_id = l_asset_hdr_rec.asset_id
277 and book_type_code = l_asset_hdr_rec.book_type_code
278 and transaction_header_id = l_trans_rec.transaction_header_id;
279
280 CURSOR c_mc_get_unplanned_amt IS
281 select adjustment_amount
282 from fa_adjustments_mrc_v
283 where asset_id = l_asset_hdr_rec.asset_id
284 and book_type_code = l_asset_hdr_rec.book_type_code
285 and transaction_header_id = l_trans_rec.transaction_header_id;
286
287 l_unplanned_deprn_rec FA_API_TYPES.unplanned_deprn_rec_type;
288 l_group_deprn_amount NUMBER;
289 l_group_bonus_amount NUMBER;
290 l_return_code NUMBER;
291
292
293 -- Cursor to get member's reserve retired
294 CURSOR c_get_member_rsv_ret IS
295 select nvl(reserve_retired, 0)
296 from fa_retirements
297 where transaction_header_id_in = l_trans_rec.member_transaction_header_id;
298
299 CURSOR c_mc_get_member_rsv_ret IS
300 select nvl(reserve_retired, 0)
301 from fa_retirements_mrc_v
302 where transaction_header_id_in = l_trans_rec.member_transaction_header_id;
303
304 CURSOR c_get_member_rsv_rei IS
305 select nvl(reserve_retired, 0)
306 , transaction_header_id_in
307 from fa_retirements
308 where transaction_header_id_out = l_trans_rec.member_transaction_header_id;
309
310 CURSOR c_mc_get_member_rsv_rei IS
311 select nvl(reserve_retired, 0)
312 , transaction_header_id_in
313 from fa_retirements_mrc_v
314 where transaction_header_id_out = l_trans_rec.member_transaction_header_id;
315
316
317 -- Cursor to get group's reserve retired
318 CURSOR c_get_group_rsv_ret IS
319 select sum(decode(debit_credit_flag, 'CR', -1, 1) *
320 decode(l_trans_rec.transaction_key, 'MR', 1, -1) *
321 adjustment_amount)
322 from fa_adjustments
323 where asset_id = l_asset_hdr_rec.asset_id
324 and book_type_code = l_asset_hdr_rec.book_type_code
325 and transaction_header_id = l_trans_rec.transaction_header_id
326 and adjustment_type = 'RESERVE';
327
328 CURSOR c_mc_get_group_rsv_ret IS
329 select sum(decode(debit_credit_flag, 'CR', -1, 1) * adjustment_amount)
330 from fa_adjustments_mrc_v
331 where asset_id = l_asset_hdr_rec.asset_id
332 and book_type_code = l_asset_hdr_rec.book_type_code
333 and transaction_header_id = l_trans_rec.transaction_header_id
334 and adjustment_type = 'RESERVE';
335
336
337 l_member_reserve_amount number;
338 l_group_reserve_amount number;
339
340 CURSOR c_get_member_trx is
341 select th.asset_id
342 , th.transaction_header_id
343 , th.transaction_type_code
344 , th.transaction_date_entered
345 , th.transaction_name
346 , th.source_transaction_header_id
347 , th.mass_reference_id
348 , th.transaction_subtype
349 , th.transaction_key
350 , th.amortization_start_date
351 , th.calling_interface
352 , th.mass_transaction_id
353 , th.member_transaction_header_id
354 , th.trx_reference_id
355 , th.last_update_date
356 , th.last_updated_by
357 , th.last_update_login
358 , th.event_id
359 , tr.transaction_type
360 from fa_transaction_headers th,
361 fa_trx_references tr --Added for bug 537059
362 where th.transaction_header_id = l_trans_rec.member_transaction_header_id
363 and tr.trx_reference_id(+) = th.trx_reference_id; --Added for bug 537059
364
365 lm_trans_rec FA_API_TYPES.trans_rec_type;
366 lm_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
367 lm_asset_desc_rec FA_API_TYPES.asset_desc_rec_type;
368 lm_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
369 lm_asset_cat_rec FA_API_TYPES.asset_cat_rec_type;
370 lm_asset_type_rec FA_API_TYPES.asset_type_rec_type;
371 lm_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
372
373 l_mem_ret_thid NUMBER; -- Member asset retirement thid
374
375 l_return_status varchar2(10);
376 l_msg_count number;
377 l_msg_data varchar2(512);
378
379 group_adj_err exception;
380
381 TRX_CUR boolean := FALSE;
382 BOOK_CUR boolean := FALSE;
383
384 BEGIN
385
386 if (p_log_level_rec.statement_level) then
387 fa_debug_pkg.add('do_pending_groups',
388 'do_all_books',
389 'begin',
390 p_log_level_rec => p_log_level_rec);
391 end if;
392
393 -- call the sob cache to get the table of sob_ids
394 if not FA_CACHE_PKG.fazcrsob
395 (x_book_type_code => p_book,
396 x_sob_tbl => l_sob_tbl,
397 p_log_level_rec => p_log_level_rec) then
398 raise group_adj_err;
399 end if;
400
401 -- call the book_controls cache
402 if NOT fa_cache_pkg.fazcbc(X_book => p_book,
403 p_log_level_rec => p_log_level_rec) then
404 raise group_adj_err;
405 end if;
406
407 l_source_asset_id := nvl(p_source_group_asset_id, -1);
408 l_dest_asset_id := nvl(p_dest_group_asset_id,-1);
409
410 if (l_source_asset_id = -1 and l_dest_asset_id = -1) then
411 BOOK_CUR := TRUE;
412 open get_all_groups;
413 else
414 TRX_CUR := TRUE;
415 open get_group_assets;
416 end if;
417
418 loop
419
420 -- recall the book_controls cache for each trx
421 if NOT fa_cache_pkg.fazcbc(X_book => p_book,
422 p_log_level_rec => p_log_level_rec) then
423 raise group_adj_err;
424 end if;
425
426 if TRX_CUR then
427 if (p_log_level_rec.statement_level) then
428 fa_debug_pkg.add('do_pending_groups',
429 'CURSOR',
430 'USING TRX_CUR',
431 p_log_level_rec => p_log_level_rec);
432 end if;
433 fetch get_group_assets into
434 l_asset_id,
435 l_trx_id_in,
436 l_rowid,
437 l_trans_rec.transaction_type_code,
438 l_trans_rec.transaction_date_entered,
439 l_trans_rec.transaction_subtype,
440 l_trans_rec.transaction_key,
441 l_trans_rec.amortization_start_date,
442 l_trans_rec.calling_interface,
443 l_trans_rec.member_transaction_header_id,
444 l_trans_rec.trx_reference_id,
445 l_trans_rec.event_id;
446 if (get_group_assets%NOTFOUND) then
447 commit;
448 exit;
449 end if;
450 elsif BOOK_CUR then
451 if (p_log_level_rec.statement_level) then
452 fa_debug_pkg.add('do_pending_groups',
453 'USING BOOK_CUR CURSOR',
454 'USING BOOK_CUR',
455 p_log_level_rec => p_log_level_rec);
456 end if;
457
458 fetch get_all_groups into
459 l_asset_id,
460 l_trx_id_in,
461 l_rowid,
462 l_trans_rec.transaction_type_code,
463 l_trans_rec.transaction_date_entered,
464 l_trans_rec.transaction_subtype,
465 l_trans_rec.transaction_key,
466 l_trans_rec.amortization_start_date,
467 l_trans_rec.calling_interface,
468 l_trans_rec.member_transaction_header_id,
469 l_trans_rec.trx_reference_id,
470 l_trans_rec.event_id;
471
472
473 if (get_all_groups%NOTFOUND) then
474 commit;
475 exit;
476 end if;
477 end if;
478
479 --bridgway: SLA, moving commit cycle here do to inter-asset transactions
480 if (nvl(l_trans_rec.trx_reference_id, -99) <> nvl(l_prior_trx_reference_id, -99)) then
481 commit;
482 end if;
483
484 l_prior_trx_reference_id := l_trans_rec.trx_reference_id;
485
486 l_trans_rec.transaction_header_id := l_trx_id_in;
487
488 open get_old_trx;
489 fetch get_old_trx into l_old_trx_id;
490 close get_old_trx;
491
492 l_asset_hdr_rec.asset_id := l_asset_id;
493 l_asset_hdr_rec.book_type_code := p_book;
494 l_asset_hdr_rec.set_of_books_id := null;
495
496 if (p_log_level_rec.statement_level) then
497 fa_debug_pkg.add('do_pending_groups.do_all_books',
498 'fetched asset and trx',
499 l_asset_id || ' - ' || l_trx_id_in,
500 p_log_level_rec => p_log_level_rec);
501 end if;
502
503
504 -- loop through each book starting with the primary and
505 -- call the private API for each
506 FOR l_sob_index in 0..l_sob_tbl.count LOOP
507 if (l_sob_index = 0) then
508 l_mrc_sob_type_code := 'P';
509 l_asset_hdr_rec.set_of_books_id := fa_cache_pkg.fazcbc_record.set_of_books_id;
510
511 -- SLA uptake - set event status from incomplete to unprocessed
512 -- need to determine original event type in this case
513 --
514 -- invoice transfer and group reclass pose a two-fold issue in that both
515 -- events must be completely processed.
516 --
517 -- in order to call the api, we must know pretty much everything
518 -- we new at time of the original member event including the
519 -- asset type, etc
520
521 if (p_log_level_rec.statement_level) then
522 fa_debug_pkg.add(l_calling_fn,
523 'fetching member_trx cursor',
524 '',
525 p_log_level_rec => p_log_level_rec);
526 end if;
527
528 if (l_trans_rec.member_transaction_header_id is not null) then
529
530 OPEN c_get_member_trx;
531 FETCH c_get_member_trx INTO lm_asset_hdr_rec.asset_id
532 , lm_trans_rec.transaction_header_id
533 , lm_trans_rec.transaction_type_code
534 , lm_trans_rec.transaction_date_entered
535 , lm_trans_rec.transaction_name
536 , lm_trans_rec.source_transaction_header_id
537 , lm_trans_rec.mass_reference_id
538 , lm_trans_rec.transaction_subtype
539 , lm_trans_rec.transaction_key
540 , lm_trans_rec.amortization_start_date
541 , lm_trans_rec.calling_interface
542 , lm_trans_rec.mass_transaction_id
543 , lm_trans_rec.member_transaction_header_id
544 , lm_trans_rec.trx_reference_id
545 , lm_trans_rec.who_info.last_update_date
546 , lm_trans_rec.who_info.last_updated_by
547 , lm_trans_rec.who_info.last_update_login
548 , lm_trans_rec.event_id --Added for bug 537059
549 , l_trx_ref_type; -- bug 5475029
550 CLOSE c_get_member_trx;
551
552 end if;
553
554 if (p_log_level_rec.statement_level) then
555 fa_debug_pkg.add(l_calling_fn,
556 'fetching event from XLA',
557 l_trans_rec.event_id,
558 p_log_level_rec => p_log_level_rec);
559 end if;
560
561 select event_type_code
562 into l_event_type_code
563 from xla_events
564 where application_id = 140
565 and event_id = l_trans_rec.event_id;
566
567 --Added one more condition lm_trans_rec.event_id is not null in following
568 --if for bug 537059.
569 -- bug 5475029: modified the following if condition
570 --if (l_trans_rec.trx_reference_id is not null and lm_trans_rec.event_id is not null) then
571 if (nvl(l_trx_ref_type,'STANDARD TRX') = 'INVOICE TRANSFER') then
572
573 if not fa_xla_events_pvt.update_inter_transaction_event
574 (p_ledger_id => l_asset_hdr_rec.set_of_books_id,
575 p_trx_reference_id => lm_trans_rec.trx_reference_id,
576 p_book_type_code => p_book,
577 p_event_type_code => l_event_type_code,
578 p_event_date => l_trans_rec.transaction_date_entered,
579 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
580 p_calling_fn => l_calling_fn,
581 p_log_level_rec => p_log_level_rec) then
582 raise group_adj_err;
583 end if;
584
585 else -- non inter asset trx
586
587 if (l_trans_rec.member_transaction_header_id is not null) then
588 -- member driven transactions
589 l_thid := lm_trans_rec.transaction_header_id;
590 else
591 -- direct group transaction
592 l_thid := l_trans_rec.transaction_header_id;
593 end if;
594
595 if not fa_xla_events_pvt.update_transaction_event
596 (p_ledger_id => l_asset_hdr_rec.set_of_books_id,
597 p_transaction_header_id => l_thid,
598 p_book_type_code => p_book,
599 p_event_type_code => l_event_type_code,
600 p_event_date => l_trans_rec.transaction_date_entered,
601 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
602 p_calling_fn => l_calling_fn,
603 p_log_level_rec => p_log_level_rec) then
604 raise group_adj_err;
605 end if;
606
607 end if;
608
609 else
610 l_mrc_sob_type_code := 'R';
611 l_asset_hdr_rec.set_of_books_id := l_sob_tbl(l_sob_index);
612
613 -- set the sob_id and currency context
614 fnd_profile.put('GL_SET_OF_BKS_ID', l_sob_tbl(l_sob_index));
615 fnd_client_info.set_currency_context (to_char(l_sob_tbl(l_sob_index)));
616
617 end if;
618
619 -- call the cache to set the sob_id used for rounding and other lower
620 -- level code for each book.
621 if NOT fa_cache_pkg.fazcbcs(X_book => p_book,
622 p_log_level_rec => p_log_level_rec)
623 then
624 raise group_adj_err;
625 end if;
626
627 if (p_log_level_rec.statement_level) then
628 fa_debug_pkg.add('do_pending_groups.do_all_books',
629 'TRX KEY',
630 l_trans_rec.transaction_key,
631 p_log_level_rec => p_log_level_rec);
632 end if;
633
634 if (l_trans_rec.transaction_key not in ('GC', 'UA', 'UE', 'MR', 'MS')) then
635
636 if not FA_ASSET_VAL_PVT.validate_period_of_addition
637 (p_asset_id => l_asset_hdr_rec.asset_id,
638 p_book => l_asset_hdr_rec.book_type_code,
639 p_mode => 'ABSOLUTE',
640 px_period_of_addition => l_asset_hdr_rec.period_of_addition,
641 p_log_level_rec => p_log_level_rec) then
642 raise group_adj_err;
643 end if;
644
645 if (p_log_level_rec.statement_level) then
646 fa_debug_pkg.add('do_pending_groups',
647 'AFTER validate_period_of_addition',
648 l_asset_hdr_rec.period_of_addition,
649 p_log_level_rec => p_log_level_rec);
650 end if;
651
652 if not FA_UTIL_PVT.get_asset_desc_rec
653 (p_asset_hdr_rec => l_asset_hdr_rec,
654 px_asset_desc_rec => l_asset_desc_rec,
655 p_log_level_rec => p_log_level_rec) then
656 raise group_adj_err;
657 end if;
658 if (p_log_level_rec.statement_level) then
659 fa_debug_pkg.add('do_pending_groups',
660 'AFTER',
661 'get_asset_desc_rec',
662 p_log_level_rec => p_log_level_rec);
663 end if;
664
665 if not FA_UTIL_PVT.get_asset_cat_rec
666 (p_asset_hdr_rec => l_asset_hdr_rec,
667 px_asset_cat_rec => l_asset_cat_rec,
668 p_date_effective => null,
669 p_log_level_rec => p_log_level_rec) then
670 raise group_adj_err;
671 end if;
672
673 if (p_log_level_rec.statement_level) then
674 fa_debug_pkg.add('do_pending_groups',
675 'AFTER',
676 'get_asset_cat_rec',
677 p_log_level_rec => p_log_level_rec);
678 end if;
679
680 if not FA_UTIL_PVT.get_asset_type_rec
681 (p_asset_hdr_rec => l_asset_hdr_rec,
682 px_asset_type_rec => l_asset_type_rec,
683 p_date_effective => null,
684 p_log_level_rec => p_log_level_rec) then
685 raise group_adj_err;
686 end if;
687
688 if (p_log_level_rec.statement_level) then
689 fa_debug_pkg.add('do_pending_groups',
690 'AFTER get_asset_cat_rec',
691 l_asset_type_rec.asset_type,
692 p_log_level_rec => p_log_level_rec);
693 end if;
694
695 -- load the old structs
696 if not FA_UTIL_PVT.get_asset_fin_rec
697 (p_asset_hdr_rec => l_asset_hdr_rec,
698 px_asset_fin_rec => l_asset_fin_rec_old,
699 p_transaction_header_id => l_old_trx_id,
700 p_mrc_sob_type_code => l_mrc_sob_type_code,
701 p_log_level_rec => p_log_level_rec) then raise group_adj_err;
702 end if;
703 if (p_log_level_rec.statement_level) then
704 fa_debug_pkg.add('do_pending_groups',
705 'AFTER get_asset_fin_rec OLD',
706 l_asset_fin_rec_old.cost,
707 p_log_level_rec => p_log_level_rec);
708 end if;
709
710 if not FA_UTIL_PVT.get_asset_deprn_rec
711 (p_asset_hdr_rec => l_asset_hdr_rec ,
712 px_asset_deprn_rec => l_asset_deprn_rec_old,
713 p_period_counter => NULL,
714 p_mrc_sob_type_code => l_mrc_sob_type_code,
715 p_log_level_rec => p_log_level_rec) then raise group_adj_err;
716 end if;
717
718 if (p_log_level_rec.statement_level) then
719 fa_debug_pkg.add('do_pending_groups',
720 'AFTER',
721 'get_asset_deprn_rec OLD',
722 p_log_level_rec => p_log_level_rec);
723 end if;
724 -- load the new structs
725 if not FA_UTIL_PVT.get_asset_fin_rec
726 (p_asset_hdr_rec => l_asset_hdr_rec,
727 px_asset_fin_rec => l_asset_fin_rec_new,
728 p_transaction_header_id => NULL,
729 p_mrc_sob_type_code => l_mrc_sob_type_code,
730 p_log_level_rec => p_log_level_rec) then raise group_adj_err;
731 end if;
732 if (p_log_level_rec.statement_level) then
733 fa_debug_pkg.add('do_pending_groups',
734 'AFTER get_asset_fin_rec NEW',
735 l_asset_fin_rec_new.cost,
736 p_log_level_rec => p_log_level_rec);
737 end if;
738 if (NOT FA_UTIL_PVT.get_period_rec (
739 p_book => l_asset_hdr_rec.book_type_code,
740 p_effective_date => NULL,
741 x_period_rec => l_period_rec,
742 p_log_level_rec => p_log_level_rec)) then
743 raise group_adj_err;
744 end if;
745
746 if (p_log_level_rec.statement_level) then
747 fa_debug_pkg.add('do_pending_groups',
748 'AFTERALLSTRUCTS',
749 'AFTERALLSTRUCTS',
750 p_log_level_rec => p_log_level_rec);
751 end if;
752
753 if (p_log_level_rec.statement_level) then
754 fa_debug_pkg.add('do_pending_groups',
755 'not-groupreclass',
756 'CALLING FAXAMA',
757 p_log_level_rec => p_log_level_rec);
758 end if;
759
760 if (not FA_AMORT_PVT.faxama(
761 px_trans_rec => l_trans_rec,
762 p_asset_hdr_rec => l_asset_hdr_rec,
763 p_asset_desc_rec => l_asset_desc_rec,
764 p_asset_cat_rec => l_asset_cat_rec,
765 p_asset_type_rec => l_asset_type_rec,
766 p_asset_fin_rec_old => l_asset_fin_rec_old,
767 p_asset_fin_rec_adj => l_asset_fin_rec_adj_null,
768 px_asset_fin_rec_new => l_asset_fin_rec_new,
769 p_asset_deprn_rec => l_asset_deprn_rec_old,
770 p_asset_deprn_rec_adj => l_asset_deprn_rec_adj_null,
771 p_period_rec => l_period_rec,
772 p_mrc_sob_type_code => l_mrc_sob_type_code,
773 p_running_mode => fa_std_types.FA_DPR_NORMAL,
774 p_used_by_revaluation => null,
775 p_reclassed_asset_id => l_reclassed_asset_id,
776 p_reclass_src_dest => l_reclass_src_dest,
777 p_reclassed_asset_dpis => l_reclassed_asset_dpis,
778 p_update_books_summary => TRUE,
779 p_proceeds_of_sale => 0,
780 p_cost_of_removal => 0,
781 x_deprn_exp => l_deprn_exp,
782 x_bonus_deprn_exp => l_bonus_deprn_exp,
783 x_deprn_rsv => l_deprn_rsv,
784 p_log_level_rec => p_log_level_rec)) then
785
786 if (p_log_level_rec.statement_level) then
787 fa_debug_pkg.add('calc_fin_info', 'calling FA_AMORT_PVT.faxama', 'FAILED', p_log_level_rec => p_log_level_rec);
788 end if;
789
790 raise group_adj_err;
791
792 end if; -- (not FA_AMORT_PVT.faxama
793
794
795 -- insert the deprn amounts
796 if not FA_INS_ADJ_PVT.faxiat
797 (p_trans_rec => l_trans_rec,
798 p_asset_hdr_rec => l_asset_hdr_rec,
799 p_asset_desc_rec => l_asset_desc_rec,
800 p_asset_cat_rec => l_asset_cat_rec,
801 p_asset_type_rec => l_asset_type_rec,
802 p_cost => 0,
803 p_clearing => 0,
804 p_deprn_expense => l_deprn_exp,
805 p_bonus_expense => l_bonus_deprn_exp,
806 p_ann_adj_amt => 0,
807 p_mrc_sob_type_code => l_mrc_sob_type_code,
808 p_calling_fn => l_calling_fn,
809 p_log_level_rec => p_log_level_rec) then raise group_adj_err;
810 end if;
811
812
813 --
814 -- Dupulicate group FA_ADJUSTMENTS entries on member asset
815 --
816 if (nvl(l_deprn_exp, 0) <> 0 or nvl(l_bonus_deprn_exp, 0) <> 0) and
817 (l_asset_type_rec.asset_type = 'GROUP') and
818 (l_trans_rec.member_transaction_header_id is not null) and
819 (nvl(l_asset_fin_rec_new.tracking_method,'NO TRACK') = 'ALLOCATE') then
820
821 -- bridgway: moved the member fetch above as we need info for SLA purposes
822
823 lm_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
824 lm_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
825
826 lm_asset_hdr_rec.book_type_code := l_asset_hdr_rec.book_type_code;
827 lm_asset_hdr_rec.set_of_books_id := l_asset_hdr_rec.set_of_books_id;
828
829 -- load the old structs
830 if not FA_UTIL_PVT.get_asset_fin_rec
831 (p_asset_hdr_rec => lm_asset_hdr_rec,
832 px_asset_fin_rec => lm_asset_fin_rec,
833 p_transaction_header_id => NULL,
834 p_mrc_sob_type_code => l_mrc_sob_type_code,
835 p_log_level_rec => p_log_level_rec) then
836 raise group_adj_err;
837 end if;
838
839 if not FA_UTIL_PVT.get_asset_desc_rec
840 (p_asset_hdr_rec => lm_asset_hdr_rec,
841 px_asset_desc_rec => lm_asset_desc_rec,
842 p_log_level_rec => p_log_level_rec) then
843 raise group_adj_err;
844 end if;
845
846 if not FA_UTIL_PVT.get_asset_cat_rec
847 (p_asset_hdr_rec => lm_asset_hdr_rec,
848 px_asset_cat_rec => lm_asset_cat_rec,
849 p_date_effective => null,
850 p_log_level_rec => p_log_level_rec) then
851 raise group_adj_err;
852 end if;
853
854 if not FA_UTIL_PVT.get_asset_type_rec
855 (p_asset_hdr_rec => lm_asset_hdr_rec,
856 px_asset_type_rec => lm_asset_type_rec,
857 p_date_effective => null,
858 p_log_level_rec => p_log_level_rec) then
859 raise group_adj_err;
860 end if;
861
862 --Bug7008015: Need member reserve
863 if not FA_UTIL_PVT.get_asset_deprn_rec
864 (p_asset_hdr_rec => lm_asset_hdr_rec ,
865 px_asset_deprn_rec => lm_asset_deprn_rec,
866 p_period_counter => NULL,
867 p_mrc_sob_type_code => l_mrc_sob_type_code) then
868 raise group_adj_err;
869 end if;
870
871 -- Bug7008015
872 -- Fully reserve member asset if
873 -- - l_adjust_type is AMORTIZED: If this is expensed, this won't be necessary as it takes care this
874 -- - This is a member asset. - premature to apply this for all assets
875 -- - Tracking method is allocate - premature to apply this for all assets
876 -- - This is not group reclass
877 -- - There is a change in cost
878 -- - New reserve is more than the adj rec cost or adj rec cost is 0 while there is rsv balance
879 -- If all above condition is met, asset will be fully reserve by expensing remaining nbv (adj rec cost - rsv)
880 if (p_log_level_rec.statement_level) then
881 fa_debug_pkg.add(l_calling_fn, 'lm_asset_fin_rec.group_asset_id', lm_asset_fin_rec.group_asset_id, p_log_level_rec);
882 fa_debug_pkg.add(l_calling_fn, 'lm_asset_fin_rec.tracking_method', lm_asset_fin_rec.tracking_method, p_log_level_rec);
883 fa_debug_pkg.add(l_calling_fn, 'l_trans_rec.transaction_key', l_trans_rec.transaction_key, p_log_level_rec);
884 fa_debug_pkg.add(l_calling_fn, 'delta cost', nvl(l_asset_fin_rec_new.cost , 0) - nvl(l_asset_fin_rec_old.cost, 0), p_log_level_rec);
885 fa_debug_pkg.add(l_calling_fn, 'lm_asset_deprn_rec.deprn_reserve', lm_asset_deprn_rec.deprn_reserve, p_log_level_rec);
886 fa_debug_pkg.add(l_calling_fn, 'lm_asset_fin_rec.adjusted_recoverable_cost', lm_asset_fin_rec.adjusted_recoverable_cost, p_log_level_rec);
887 fa_debug_pkg.add(l_calling_fn, 'l_deprn_exp', l_deprn_exp, p_log_level_rec);
888 end if;
889
890 if lm_asset_fin_rec.group_asset_id is not null and
891 lm_asset_fin_rec.tracking_method = 'ALLOCATE' and
892 l_trans_rec.transaction_key <> 'GC' and
893 nvl(l_asset_fin_rec_new.cost , 0) - nvl(l_asset_fin_rec_old.cost, 0) <> 0 and
894 ( ( ( sign(nvl(lm_asset_deprn_rec.deprn_reserve, 0) + nvl(l_deprn_exp, 0)) =
895 sign(lm_asset_fin_rec.adjusted_recoverable_cost) ) and
896 ( abs(nvl(lm_asset_deprn_rec.deprn_reserve, 0) + nvl(l_deprn_exp, 0)) >
897 abs(lm_asset_fin_rec.adjusted_recoverable_cost) ) ) or
898 (lm_asset_fin_rec.adjusted_recoverable_cost = 0 and lm_asset_deprn_rec.deprn_reserve <> 0) ) then
899 l_deprn_exp := lm_asset_fin_rec.adjusted_recoverable_cost - nvl(lm_asset_deprn_rec.deprn_reserve, 0);
900 end if;
901
902
903 if not FA_INS_ADJ_PVT.faxiat
904 (p_trans_rec => lm_trans_rec,
905 p_asset_hdr_rec => lm_asset_hdr_rec,
906 p_asset_desc_rec => lm_asset_desc_rec,
907 p_asset_cat_rec => lm_asset_cat_rec,
908 p_asset_type_rec => lm_asset_type_rec,
909 p_cost => 0,
910 p_clearing => 0,
911 p_deprn_expense => l_deprn_exp,
912 p_bonus_expense => l_bonus_deprn_exp,
913 p_ann_adj_amt => 0,
914 p_track_member_flag => 'Y',
915 p_mrc_sob_type_code => l_mrc_sob_type_code,
916 p_calling_fn => l_calling_fn,
917 p_log_level_rec => p_log_level_rec) then
918 raise group_adj_err;
919 end if;
920
921 end if;
922
923 -- now update fa_books
924 update fa_books
925 set rate_adjustment_factor =
926 l_asset_fin_rec_new.rate_adjustment_factor,
927 reval_amortization_basis =
928 l_asset_fin_rec_new.reval_amortization_basis,
929 adjusted_cost = l_asset_fin_rec_new.adjusted_cost,
930 adjusted_capacity = l_asset_fin_rec_new.adjusted_capacity,
931 eofy_reserve = l_asset_fin_rec_new.eofy_reserve,
932 adjustment_required_status = 'NONE'
933 where rowid = l_rowid;
934
935 -- HHIRAGA
936 --++ Added for tracking
937 -- When Group Adjustment is processed for the group whose tracking
938 -- method is allocate but the transaction kicked at group level,
939 -- expense must be allocated to members.
940 -- HH assuming this is not a change to disabled_flag
941 if l_trans_rec.transaction_type_code = 'GROUP ADJUSTMENT' and
942 l_trans_rec.member_transaction_header_id is null and
943 nvl(l_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
944 -- not l_disabled_flag_changed then
945 -- Call TRACK_ASSETS
946 l_rc := fa_track_member_pvt.track_assets
947 (P_book_type_code => l_asset_hdr_rec.book_type_code,
948 P_group_asset_id => l_asset_hdr_rec.asset_id,
949 P_period_counter => l_period_rec.period_num,
950 P_fiscal_year => l_period_rec.fiscal_year,
951 P_group_deprn_basis => fa_cache_pkg.fazccmt_record.deprn_basis_rule,
952 P_group_exclude_salvage => fa_cache_pkg.fazccmt_record.exclude_salvage_value_flag,
953 P_group_bonus_rule => l_asset_fin_rec_new.bonus_rule,
954 P_group_deprn_amount => l_deprn_exp,
955 P_group_bonus_amount => l_bonus_deprn_exp,
956 P_tracking_method => l_asset_fin_rec_new.tracking_method,
957 P_allocate_to_fully_ret_flag => l_asset_fin_rec_new.allocate_to_fully_ret_flag,
958 P_allocate_to_fully_rsv_flag => l_asset_fin_rec_new.allocate_to_fully_rsv_flag,
959 P_excess_allocation_option => l_asset_fin_rec_new.excess_allocation_option,
960 P_depreciation_option => l_asset_fin_rec_new.depreciation_option,
961 P_member_rollup_flag => l_asset_fin_rec_new.member_rollup_flag,
962 P_group_level_override => l_group_level_override,
963 P_period_of_addition => l_asset_hdr_rec.period_of_addition,
964 P_transaction_date_entered => l_trans_rec.transaction_date_entered,
965 P_mode => 'GROUP ADJUSTMENT',
966 P_mrc_sob_type_code => l_mrc_sob_type_code,
967 X_new_deprn_amount => x_new_deprn_amount,
968 X_new_bonus_amount => x_new_bonus_amount,
969 p_log_level_rec => p_log_level_rec);
970 if l_rc <> 0 then
971 raise group_adj_err;
972 end if;
973 end if; -- Tracking is ALLOCATE
974
975
976 elsif (l_trans_rec.transaction_key = 'GC') then
977
978 -- the asset currently fetched could have have been
979 -- processed already as source,dest trxn in this run
980 -- after the initial fetch
981 open check_adj_status;
982 fetch check_adj_status into l_adj_count;
983 close check_adj_status;
984 if (l_adj_count = 1) then
985 open get_trx_ref;
986 fetch get_trx_ref into
987 l_trx_ref_rec.TRX_REFERENCE_ID,
988 l_trx_ref_rec.TRANSACTION_TYPE,
989 l_trx_ref_rec.SRC_TRANSACTION_SUBTYPE,
990 l_trx_ref_rec.DEST_TRANSACTION_SUBTYPE,
991 l_trx_ref_rec.BOOK_TYPE_CODE,
992 l_trx_ref_rec.SRC_ASSET_ID,
993 l_trx_ref_rec.SRC_TRANSACTION_HEADER_ID,
994 l_trx_ref_rec.DEST_ASSET_ID,
995 l_trx_ref_rec.DEST_TRANSACTION_HEADER_ID,
996 l_trx_ref_rec.MEMBER_ASSET_ID,
997 l_trx_ref_rec.MEMBER_TRANSACTION_HEADER_ID,
998 l_trx_ref_rec.SRC_AMORTIZATION_START_DATE,
999 l_trx_ref_rec.DEST_AMORTIZATION_START_DATE,
1000 l_trx_ref_rec.RESERVE_TRANSFER_AMOUNT,
1001 l_trx_ref_rec.SRC_EXPENSE_AMOUNT,
1002 l_trx_ref_rec.DEST_EXPENSE_AMOUNT,
1003 l_trx_ref_rec.SRC_EOFY_RESERVE,
1004 l_trx_ref_rec.DEST_EOFY_RESERVE;
1005 close get_trx_ref;
1006 if (p_log_level_rec.statement_level) then
1007 fa_debug_pkg.add('do_all_books',
1008 'calling do_group_reclass',
1009 'calling do_group_reclass',
1010 p_log_level_rec => p_log_level_rec);
1011 end if;
1012
1013 if not do_group_reclass(
1014 p_trx_ref_rec => l_trx_ref_rec,
1015 p_mrc_sob_type_code => l_mrc_sob_type_code,
1016 p_log_level_rec => p_log_level_rec) then
1017 raise GROUP_ADJ_ERR;
1018 end if;
1019 end if; -- l_adj_count = 1
1020
1021 elsif (l_trans_rec.transaction_key in ('UA', 'UE'
1022 )) then
1023 --
1024 -- Allocating unplanned depreciation against group to its member assets
1025 --
1026
1027 -- load the new structs
1028 if not FA_UTIL_PVT.get_asset_fin_rec(
1029 p_asset_hdr_rec => l_asset_hdr_rec,
1030 px_asset_fin_rec => l_asset_fin_rec_new,
1031 p_transaction_header_id => NULL,
1032 p_mrc_sob_type_code => l_mrc_sob_type_code,
1033 p_log_level_rec => p_log_level_rec) then
1034 raise group_adj_err;
1035 end if;
1036
1037 if not FA_UTIL_PVT.get_period_rec (
1038 p_book => l_asset_hdr_rec.book_type_code,
1039 p_effective_date => NULL,
1040 x_period_rec => l_period_rec
1041 ,p_log_level_rec => p_log_level_rec) then
1042 raise group_adj_err;
1043 end if;
1044
1045 if (l_mrc_sob_type_code <> 'R') then
1046 if not fa_cache_pkg.fazccmt(l_asset_fin_rec_new.deprn_method_code
1047 , l_asset_fin_rec_new.life_in_months,
1048 p_log_level_rec => p_log_level_rec) then
1049 fa_srvr_msg.add_message (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
1050 raise group_adj_err;
1051 end if;
1052 end if;
1053
1054 --
1055 -- Get unplanned amount
1056 --
1057 if (l_mrc_sob_type_code = 'R') then
1058 OPEN c_mc_get_unplanned_amt;
1059 FETCH c_mc_get_unplanned_amt INTO l_unplanned_deprn_rec.unplanned_amount;
1060 CLOSE c_mc_get_unplanned_amt;
1061 else
1062 OPEN c_get_unplanned_amt;
1063 FETCH c_get_unplanned_amt INTO l_unplanned_deprn_rec.unplanned_amount;
1064 CLOSE c_get_unplanned_amt;
1065 end if;
1066
1067 l_rc := FA_TRACK_MEMBER_PVT.TRACK_ASSETS
1068 (P_book_type_code => l_asset_hdr_rec.book_type_code,
1069 P_group_asset_id => l_asset_hdr_rec.asset_id,
1070 P_period_counter => l_period_rec.period_num,
1071 P_fiscal_year => l_period_rec.fiscal_year,
1072 P_group_deprn_basis => fa_cache_pkg.fazccmt_record.deprn_basis_rule,
1073 P_group_exclude_salvage => fa_cache_pkg.fazccmt_record.exclude_salvage_value_flag,
1074 P_group_bonus_rule => l_asset_fin_rec_new.bonus_rule,
1075 P_group_deprn_amount => l_unplanned_deprn_rec.unplanned_amount,
1076 P_group_bonus_amount => 0,
1077 P_tracking_method => l_asset_fin_rec_new.tracking_method,
1078 P_allocate_to_fully_ret_flag => l_asset_fin_rec_new.allocate_to_fully_ret_flag,
1079 P_allocate_to_fully_rsv_flag => l_asset_fin_rec_new.allocate_to_fully_rsv_flag,
1080 P_excess_allocation_option => l_asset_fin_rec_new.excess_allocation_option,
1081 P_subtraction_flag => 'N',
1082 P_group_level_override => l_group_level_override,
1083 P_transaction_date_entered => l_trans_rec.transaction_date_entered,
1084 P_mode => 'UNPLANNED',
1085 X_new_deprn_amount => l_group_deprn_amount,
1086 X_new_bonus_amount => l_group_bonus_amount,
1087 p_log_level_rec => p_log_level_rec);
1088
1089 if l_rc <> 0 then
1090 raise GROUP_ADJ_ERR;
1091 elsif l_group_deprn_amount <> l_unplanned_deprn_rec.unplanned_amount then
1092 raise GROUP_ADJ_ERR;
1093 end if;
1094
1095
1096 elsif l_trans_rec.transaction_key in ('MR', 'MS') then
1097 --
1098 -- Allocating remaining reserve(group reserve retired - retired member reserve retired) to
1099 -- remaining member assets.
1100 --
1101
1102 -- load the new structs
1103 if not FA_UTIL_PVT.get_asset_fin_rec(
1104 p_asset_hdr_rec => l_asset_hdr_rec,
1105 px_asset_fin_rec => l_asset_fin_rec_new,
1106 p_transaction_header_id => NULL,
1107 p_mrc_sob_type_code => l_mrc_sob_type_code,
1108 p_log_level_rec => p_log_level_rec) then
1109 raise group_adj_err;
1110 end if;
1111
1112 if not FA_UTIL_PVT.get_period_rec (
1113 p_book => l_asset_hdr_rec.book_type_code,
1114 p_effective_date => NULL,
1115 x_period_rec => l_period_rec,
1116 p_log_level_rec => p_log_level_rec) then
1117 raise group_adj_err;
1118 end if;
1119
1120 --
1121 -- Get member's and group's reserve retired to find out
1122 -- amount to allocate to remaining member assets
1123 --
1124 if (l_mrc_sob_type_code = 'R') then
1125 if (l_trans_rec.transaction_key = 'MR') then
1126 OPEN c_mc_get_member_rsv_ret;
1127 FETCH c_mc_get_member_rsv_ret INTO l_member_reserve_amount;
1128 CLOSE c_mc_get_member_rsv_ret;
1129
1130 l_mem_ret_thid := null;
1131 else
1132 OPEN c_mc_get_member_rsv_rei;
1133 FETCH c_mc_get_member_rsv_rei INTO l_member_reserve_amount, l_mem_ret_thid;
1134 CLOSE c_mc_get_member_rsv_rei;
1135 end if;
1136
1137 OPEN c_mc_get_group_rsv_ret;
1138 FETCH c_mc_get_group_rsv_ret INTO l_group_reserve_amount;
1139 CLOSE c_mc_get_group_rsv_ret;
1140 else
1141 if (l_trans_rec.transaction_key = 'MR') then
1142 OPEN c_get_member_rsv_ret;
1143 FETCH c_get_member_rsv_ret INTO l_member_reserve_amount;
1144 CLOSE c_get_member_rsv_ret;
1145
1146 l_mem_ret_thid := null;
1147 else
1148 OPEN c_get_member_rsv_rei;
1149 FETCH c_get_member_rsv_rei INTO l_member_reserve_amount, l_mem_ret_thid;
1150 CLOSE c_get_member_rsv_rei;
1151 end if;
1152
1153 OPEN c_get_group_rsv_ret;
1154 FETCH c_get_group_rsv_ret INTO l_group_reserve_amount;
1155 CLOSE c_get_group_rsv_ret;
1156 end if;
1157
1158 if not FA_UTIL_PVT.get_asset_deprn_rec
1159 (p_asset_hdr_rec => l_asset_hdr_rec ,
1160 px_asset_deprn_rec => l_asset_deprn_rec_new,
1161 p_period_counter => NULL,
1162 p_mrc_sob_type_code => l_mrc_sob_type_code,
1163 p_log_level_rec => p_log_level_rec) then raise group_adj_err;
1164 end if;
1165
1166 if (p_log_level_rec.statement_level) then
1167 fa_debug_pkg.add(l_calling_fn,'l_trans_rec.transaction_key', l_trans_rec.transaction_key, p_log_level_rec => p_log_level_rec);
1168 fa_debug_pkg.add(l_calling_fn,'p_reserve_amount', l_group_reserve_amount - l_member_reserve_amount, p_log_level_rec => p_log_level_rec);
1169 fa_debug_pkg.add(l_calling_fn,'p_mem_ret_thid', l_mem_ret_thid, p_log_level_rec => p_log_level_rec);
1170 end if;
1171
1172 if not FA_RETIREMENT_PVT.Do_Allocation(
1173 p_trans_rec => l_trans_rec,
1174 p_asset_hdr_rec => l_asset_hdr_rec,
1175 p_asset_fin_rec => l_asset_fin_rec_new,
1176 p_asset_deprn_rec_new => l_asset_deprn_rec_new,
1177 p_period_rec => l_period_rec,
1178 p_reserve_amount => l_group_reserve_amount - l_member_reserve_amount,
1179 p_mem_ret_thid => l_mem_ret_thid,
1180 p_mrc_sob_type_code => l_mrc_sob_type_code,
1181 p_calling_fn => 'FAPGADJ',
1182 p_log_level_rec => p_log_level_rec) then
1183 raise group_adj_err;
1184 end if;
1185
1186 end if; -- l_trans_rec.transaction_key <> GC
1187
1188 if (l_trans_rec.transaction_key in ('UA', 'UE', 'MR', 'MS')) then
1189
1190 update fa_books
1191 set adjustment_required_status = 'NONE'
1192 where rowid = l_rowid;
1193
1194 end if;
1195
1196 end loop; -- FOR all books loop
1197
1198 end loop; -- trxs loop
1199
1200 if (TRX_CUR) then
1201 close get_group_assets;
1202 else
1203 close get_all_groups;
1204 end if;
1205
1206 return TRUE;
1207
1208 EXCEPTION
1209 WHEN GROUP_ADJ_ERR THEN
1210 fa_srvr_msg.add_message(
1211 calling_fn => l_calling_fn,
1212 p_log_level_rec => p_log_level_rec);
1213 return FALSE;
1214 WHEN OTHERS THEN
1215 fa_srvr_msg.add_sql_error (
1216 calling_fn => l_calling_fn
1217 ,p_log_level_rec => p_log_level_rec);
1218 return FALSE;
1219
1220 END do_all_books;
1221
1222 FUNCTION do_group_reclass(
1223 p_trx_ref_rec IN fa_api_types.trx_ref_rec_type,
1224 p_mrc_sob_type_code IN VARCHAR2,
1225 p_log_level_rec IN fa_api_types.log_level_rec_type default null)
1226 RETURN BOOLEAN IS
1227
1228 l_mem_trans_rec fa_api_types.trans_rec_type;
1229 l_mem_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
1230 l_mem_asset_desc_rec fa_api_types.asset_desc_rec_type;
1231 l_mem_asset_type_rec fa_api_types.asset_type_rec_type;
1232 l_mem_asset_cat_rec fa_api_types.asset_cat_rec_type;
1233 l_mem_asset_fin_rec_old fa_api_types.asset_fin_rec_type;
1234 l_mem_asset_fin_rec_adj fa_api_types.asset_fin_rec_type;
1235 l_mem_asset_fin_rec_new fa_api_types.asset_fin_rec_type;
1236 l_mem_asset_deprn_rec_old fa_api_types.asset_deprn_rec_type;
1237 l_mem_asset_deprn_rec_adj fa_api_types.asset_deprn_rec_type;
1238 l_mem_asset_deprn_rec_new fa_api_types.asset_deprn_rec_type;
1239
1240 l_src_trans_rec fa_api_types.trans_rec_type;
1241 l_src_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
1242 l_src_asset_desc_rec fa_api_types.asset_desc_rec_type;
1243 l_src_asset_type_rec fa_api_types.asset_type_rec_type;
1244 l_src_asset_cat_rec fa_api_types.asset_cat_rec_type;
1245 l_src_asset_fin_rec_old fa_api_types.asset_fin_rec_type;
1246 l_src_asset_fin_rec_adj fa_api_types.asset_fin_rec_type;
1247 l_src_asset_fin_rec_new fa_api_types.asset_fin_rec_type;
1248 l_src_asset_deprn_rec_old fa_api_types.asset_deprn_rec_type;
1249 l_src_asset_deprn_rec_adj fa_api_types.asset_deprn_rec_type;
1250 l_src_asset_deprn_rec_new fa_api_types.asset_deprn_rec_type;
1251
1252 l_dest_trans_rec fa_api_types.trans_rec_type;
1253 l_dest_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
1254 l_dest_asset_desc_rec fa_api_types.asset_desc_rec_type;
1255 l_dest_asset_type_rec fa_api_types.asset_type_rec_type;
1256 l_dest_asset_cat_rec fa_api_types.asset_cat_rec_type;
1257 l_dest_asset_fin_rec_old fa_api_types.asset_fin_rec_type;
1258 l_dest_asset_fin_rec_adj fa_api_types.asset_fin_rec_type;
1259 l_dest_asset_fin_rec_new fa_api_types.asset_fin_rec_type;
1260 l_dest_asset_deprn_rec_old fa_api_types.asset_deprn_rec_type;
1261 l_dest_asset_deprn_rec_adj fa_api_types.asset_deprn_rec_type;
1262 l_dest_asset_deprn_rec_new fa_api_types.asset_deprn_rec_type;
1263
1264 l_grp_src_trans_rec fa_api_types.trans_rec_type;
1265 l_grp_src_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
1266 l_grp_src_asset_type_rec fa_api_types.asset_type_rec_type;
1267 l_grp_src_asset_fin_rec_new fa_api_types.asset_fin_rec_type;
1268
1269 l_period_rec fa_api_types.period_rec_type;
1270
1271 -- For calling faxama
1272 l_asset_deprn_rec_adj fa_api_types.asset_deprn_rec_type;
1273 l_bonus_deprn_exp number;
1274 l_deprn_rsv number;
1275
1276 -- used for faxinaj calls
1277 l_exp_adj FA_ADJUST_TYPE_PKG.fa_adj_row_struct;
1278 l_rsv_adj FA_ADJUST_TYPE_PKG.fa_adj_row_struct;
1279
1280 l_asset_id number;
1281 l_trx_id_in number;
1282 l_old_trx_id number;
1283 l_trx_id number;
1284
1285 l_src_asset number := -1;
1286 l_dest_asset number := -1;
1287
1288 l_group_reclass_options_rec FA_API_TYPES.group_reclass_options_rec_type;
1289 l_group_reclass_code varchar2(20);
1290 l_calling_fn varchar2(60) := 'fa_group_process_groups_pkg.do_rcl';
1291
1292 group_rec_err exception;
1293
1294 -- BUG# 6936546
1295 l_api_version NUMBER := 1.0;
1296 l_init_msg_list VARCHAR2(1) := FND_API.G_FALSE;
1297 l_commit VARCHAR2(1) := FND_API.G_FALSE;
1298 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_NONE;
1299 l_return_status2 VARCHAR2(1);
1300 l_msg_count NUMBER;
1301 l_msg_data VARCHAR2(2000);
1302 l_trans_rec FA_API_TYPES.trans_rec_type;
1303 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
1304 l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
1305
1306 l_distribution_id num_tbl;
1307 l_units_assigned num_tbl;
1308 l_code_combination_id num_tbl;
1309 l_location_id num_tbl;
1310 l_assigned_to num_tbl;
1311
1312 l_transfer_amount NUMBER; --Bug6987743:
1313
1314 cursor c_member_dists (p_asset_id number) is
1315 select distribution_id,
1316 units_assigned,
1317 code_combination_id,
1318 location_id,
1319 assigned_to
1320 from fa_distribution_history
1321 where asset_id = p_asset_id
1322 and transaction_header_id_out is null;
1323
1324 cursor get_old_trx is
1325 select transaction_header_id_in
1326 from fa_books
1327 where asset_id = l_asset_id
1328 and book_type_code = p_trx_ref_rec.book_type_code
1329 and transaction_header_id_out = l_trx_id_in;
1330
1331
1332 cursor get_trx_rec_info is
1333 select transaction_header_id,
1334 transaction_type_code,
1335 transaction_date_entered,
1336 transaction_name,
1337 source_transaction_header_id,
1338 mass_reference_id,
1339 transaction_subtype,
1340 transaction_key,
1341 amortization_start_date,
1342 'FAPGADJ',
1343 mass_transaction_id,
1344 member_transaction_header_id,
1345 trx_reference_id
1346 from fa_transaction_headers
1347 where transaction_header_id = l_trx_id;
1348
1349 --Bug6987743: Getting previously transfered reserve
1350 cursor c_get_reserve is
1351 select nvl(reserve_transfer_amount, 0)
1352 from fa_trx_references
1353 where dest_asset_id = l_src_asset_hdr_rec.asset_id
1354 and member_asset_id = p_trx_ref_rec.member_asset_id
1355 and book_type_code = p_trx_ref_rec.book_type_code
1356 order by trx_reference_id desc;
1357
1358
1359 BEGIN
1360
1361 if (p_log_level_rec.statement_level) then
1362 fa_debug_pkg.add('do_group_reclass',
1363 'in do_group_reclass',
1364 'in do_group_reclass',
1365 p_log_level_rec => p_log_level_rec);
1366 end if;
1367
1368 --
1369 -- Initialize Member Tables
1370 --
1371 FA_AMORT_PVT.initMemberTable;
1372
1373
1374 l_group_reclass_options_rec.group_reclass_type := 'CALC';
1375
1376 -- get the member asset recs
1377 l_mem_asset_hdr_rec.asset_id := p_trx_ref_rec.member_asset_id;
1378 l_mem_asset_hdr_rec.book_type_code := p_trx_ref_rec.book_type_code;
1379 l_mem_asset_hdr_rec.set_of_books_id := null;
1380
1381 if (p_log_level_rec.statement_level) then
1382 fa_debug_pkg.add('do_group_reclass',
1383 'member_asset_id START',
1384 l_mem_asset_hdr_rec.asset_id,
1385 p_log_level_rec => p_log_level_rec);
1386 end if;
1387
1388 if not FA_ASSET_VAL_PVT.validate_period_of_addition
1389 (p_asset_id => l_mem_asset_hdr_rec.asset_id,
1390 p_book => l_mem_asset_hdr_rec.book_type_code,
1391 p_mode => 'ABSOLUTE',
1392 px_period_of_addition => l_mem_asset_hdr_rec.period_of_addition,
1393 p_log_level_rec => p_log_level_rec) then
1394 raise group_rec_err;
1395 end if;
1396
1397 if not FA_UTIL_PVT.get_asset_desc_rec
1398 (p_asset_hdr_rec => l_mem_asset_hdr_rec,
1399 px_asset_desc_rec => l_mem_asset_desc_rec,
1400 p_log_level_rec => p_log_level_rec) then
1401 raise group_rec_err;
1402 end if;
1403
1404 if not FA_UTIL_PVT.get_asset_cat_rec
1405 (p_asset_hdr_rec => l_mem_asset_hdr_rec,
1406 px_asset_cat_rec => l_mem_asset_cat_rec,
1407 p_date_effective => null,
1408 p_log_level_rec => p_log_level_rec) then
1409 raise group_rec_err;
1410 end if;
1411
1412 if not FA_UTIL_PVT.get_asset_type_rec
1413 (p_asset_hdr_rec => l_mem_asset_hdr_rec,
1414 px_asset_type_rec => l_mem_asset_type_rec,
1415 p_date_effective => null,
1416 p_log_level_rec => p_log_level_rec) then
1417 raise group_rec_err;
1418 end if;
1419
1420 -- load the old structs
1421
1422 l_trx_id_in := p_trx_ref_rec.MEMBER_TRANSACTION_HEADER_ID;
1423 l_asset_id := l_mem_asset_hdr_rec.asset_id;
1424
1425 open get_old_trx;
1426 fetch get_old_trx into l_old_trx_id;
1427 close get_old_trx;
1428
1429 if not FA_UTIL_PVT.get_asset_fin_rec
1430 (p_asset_hdr_rec => l_mem_asset_hdr_rec,
1431 px_asset_fin_rec => l_mem_asset_fin_rec_old,
1432 p_transaction_header_id => l_old_trx_id,
1433 p_mrc_sob_type_code => p_mrc_sob_type_code,
1434 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1435 end if;
1436
1437 if (p_log_level_rec.statement_level) then
1438 fa_debug_pkg.add('do_group_reclass',
1439 'l_mem_asset_fin_rec_old.cost',
1440 l_mem_asset_fin_rec_old.cost,
1441 p_log_level_rec => p_log_level_rec);
1442 end if;
1443
1444 if not FA_UTIL_PVT.get_asset_deprn_rec
1445 (p_asset_hdr_rec => l_mem_asset_hdr_rec ,
1446 px_asset_deprn_rec => l_mem_asset_deprn_rec_old,
1447 p_period_counter => NULL,
1448 p_mrc_sob_type_code => p_mrc_sob_type_code,
1449 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1450 end if;
1451
1452 -- load the new structs
1453 if not FA_UTIL_PVT.get_asset_fin_rec
1454 (p_asset_hdr_rec => l_mem_asset_hdr_rec,
1455 px_asset_fin_rec => l_mem_asset_fin_rec_new,
1456 p_transaction_header_id => NULL,
1457 p_mrc_sob_type_code => p_mrc_sob_type_code,
1458 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1459 end if;
1460 if (p_log_level_rec.statement_level) then
1461 fa_debug_pkg.add('do_group_reclass',
1462 'l_mem_asset_fin_rec_new.cost',
1463 l_mem_asset_fin_rec_new.cost,
1464 p_log_level_rec => p_log_level_rec);
1465 end if;
1466
1467 if (NOT FA_UTIL_PVT.get_period_rec (
1468 p_book => l_mem_asset_hdr_rec.book_type_code,
1469 p_effective_date => NULL,
1470 x_period_rec => l_period_rec,
1471 p_log_level_rec => p_log_level_rec)) then
1472 raise group_rec_err;
1473 end if;
1474
1475 l_trx_id := p_trx_ref_rec.member_transaction_header_id;
1476 open get_trx_rec_info;
1477 fetch get_trx_rec_info into
1478 l_mem_trans_rec.transaction_header_id,
1479 l_mem_trans_rec.transaction_type_code,
1480 l_mem_trans_rec.transaction_date_entered,
1481 l_mem_trans_rec.transaction_name,
1482 l_mem_trans_rec.source_transaction_header_id,
1483 l_mem_trans_rec.mass_reference_id,
1484 l_mem_trans_rec.transaction_subtype,
1485 l_mem_trans_rec.transaction_key,
1486 l_mem_trans_rec.amortization_start_date,
1487 l_mem_trans_rec.calling_interface,
1488 l_mem_trans_rec.mass_transaction_id,
1489 l_mem_trans_rec.member_transaction_header_id,
1490 l_mem_trans_rec.trx_reference_id;
1491 close get_trx_rec_info;
1492
1493 if (p_log_level_rec.statement_level) then
1494 fa_debug_pkg.add('do_group_reclass',
1495 'member_asset_id recs done',
1496 l_mem_asset_hdr_rec.asset_id,
1497 p_log_level_rec => p_log_level_rec);
1498 end if;
1499
1500 l_src_asset_hdr_rec := l_mem_asset_hdr_rec;
1501 l_dest_asset_hdr_rec := l_mem_asset_hdr_rec;
1502
1503 l_src_asset_hdr_rec.asset_id := l_mem_asset_fin_rec_old.group_asset_id;
1504 l_dest_asset_hdr_rec.asset_id := l_mem_asset_fin_rec_new.group_asset_id;
1505
1506 -- get src info
1507 if (l_mem_asset_fin_rec_old.group_asset_id is not null) then
1508
1509 l_src_asset := l_mem_asset_fin_rec_old.group_asset_id;
1510 if not FA_UTIL_PVT.get_asset_desc_rec
1511 (p_asset_hdr_rec => l_src_asset_hdr_rec,
1512 px_asset_desc_rec => l_src_asset_desc_rec,
1513 p_log_level_rec => p_log_level_rec) then
1514 raise group_rec_err;
1515 end if;
1516
1517 if not FA_UTIL_PVT.get_asset_cat_rec
1518 (p_asset_hdr_rec => l_src_asset_hdr_rec,
1519 px_asset_cat_rec => l_src_asset_cat_rec,
1520 p_date_effective => null,
1521 p_log_level_rec => p_log_level_rec) then
1522 raise group_rec_err;
1523 end if;
1524
1525 if not FA_UTIL_PVT.get_asset_type_rec
1526 (p_asset_hdr_rec => l_src_asset_hdr_rec,
1527 px_asset_type_rec => l_src_asset_type_rec,
1528 p_date_effective => null,
1529 p_log_level_rec => p_log_level_rec) then
1530 raise group_rec_err;
1531 end if;
1532
1533 if not FA_ASSET_VAL_PVT.validate_period_of_addition
1534 (p_asset_id => l_src_asset_hdr_rec.asset_id,
1535 p_book => l_src_asset_hdr_rec.book_type_code,
1536 p_mode => 'ABSOLUTE',
1537 px_period_of_addition =>
1538 l_src_asset_hdr_rec.period_of_addition,
1539 p_log_level_rec => p_log_level_rec) then
1540 raise group_rec_err;
1541 end if;
1542
1543 l_trx_id := p_trx_ref_rec.src_transaction_header_id;
1544 open get_trx_rec_info;
1545 fetch get_trx_rec_info into
1546 l_src_trans_rec.transaction_header_id,
1547 l_src_trans_rec.transaction_type_code,
1548 l_src_trans_rec.transaction_date_entered,
1549 l_src_trans_rec.transaction_name,
1550 l_src_trans_rec.source_transaction_header_id,
1551 l_src_trans_rec.mass_reference_id,
1552 l_src_trans_rec.transaction_subtype,
1553 l_src_trans_rec.transaction_key,
1554 l_src_trans_rec.amortization_start_date,
1555 l_src_trans_rec.calling_interface,
1556 l_src_trans_rec.mass_transaction_id,
1557 l_src_trans_rec.member_transaction_header_id,
1558 l_src_trans_rec.trx_reference_id;
1559 close get_trx_rec_info;
1560
1561 if (p_log_level_rec.statement_level) then
1562 fa_debug_pkg.add('do_group_reclass',
1563 'src_asset_id recs done',
1564 l_src_asset_hdr_rec.asset_id,
1565 p_log_level_rec => p_log_level_rec);
1566 end if;
1567
1568 -- load the new structs
1569 if not FA_UTIL_PVT.get_asset_deprn_rec
1570 (p_asset_hdr_rec => l_src_asset_hdr_rec ,
1571 px_asset_deprn_rec => l_src_asset_deprn_rec_new,
1572 p_period_counter => NULL,
1573 p_mrc_sob_type_code => p_mrc_sob_type_code,
1574 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1575 end if;
1576
1577 -- load the new structs
1578 if not FA_UTIL_PVT.get_asset_fin_rec
1579 (p_asset_hdr_rec => l_src_asset_hdr_rec,
1580 px_asset_fin_rec => l_src_asset_fin_rec_new,
1581 p_transaction_header_id => NULL,
1582 p_mrc_sob_type_code => p_mrc_sob_type_code,
1583 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1584 end if;
1585
1586 end if;
1587
1588 if (l_mem_asset_fin_rec_new.group_asset_id is not null and
1589 nvl(l_mem_asset_fin_rec_old.group_asset_id, -99) <>
1590 l_mem_asset_fin_rec_new.group_asset_id) then
1591
1592 l_dest_asset := l_mem_asset_fin_rec_new.group_asset_id;
1593
1594 -- get dest info
1595 if not FA_UTIL_PVT.get_asset_desc_rec
1596 (p_asset_hdr_rec => l_dest_asset_hdr_rec,
1597 px_asset_desc_rec => l_dest_asset_desc_rec,
1598 p_log_level_rec => p_log_level_rec) then
1599 raise group_rec_err;
1600 end if;
1601
1602 if not FA_UTIL_PVT.get_asset_cat_rec
1603 (p_asset_hdr_rec => l_dest_asset_hdr_rec,
1604 px_asset_cat_rec => l_dest_asset_cat_rec,
1605 p_date_effective => null,
1606 p_log_level_rec => p_log_level_rec) then
1607 raise group_rec_err;
1608 end if;
1609
1610 if not FA_UTIL_PVT.get_asset_type_rec
1611 (p_asset_hdr_rec => l_dest_asset_hdr_rec,
1612 px_asset_type_rec => l_dest_asset_type_rec,
1613 p_date_effective => null,
1614 p_log_level_rec => p_log_level_rec) then
1615 raise group_rec_err;
1616 end if;
1617
1618 if not FA_ASSET_VAL_PVT.validate_period_of_addition
1619 (p_asset_id => l_dest_asset_hdr_rec.asset_id,
1620 p_book => l_dest_asset_hdr_rec.book_type_code,
1621 p_mode => 'ABSOLUTE',
1622 px_period_of_addition =>
1623 l_dest_asset_hdr_rec.period_of_addition,
1624 p_log_level_rec => p_log_level_rec) then
1625 raise group_rec_err;
1626 end if;
1627
1628 l_trx_id := p_trx_ref_rec.dest_transaction_header_id;
1629 open get_trx_rec_info;
1630 fetch get_trx_rec_info into
1631 l_dest_trans_rec.transaction_header_id,
1632 l_dest_trans_rec.transaction_type_code,
1633 l_dest_trans_rec.transaction_date_entered,
1634 l_dest_trans_rec.transaction_name,
1635 l_dest_trans_rec.source_transaction_header_id,
1636 l_dest_trans_rec.mass_reference_id,
1637 l_dest_trans_rec.transaction_subtype,
1638 l_dest_trans_rec.transaction_key,
1639 l_dest_trans_rec.amortization_start_date,
1640 l_dest_trans_rec.calling_interface,
1641 l_dest_trans_rec.mass_transaction_id,
1642 l_dest_trans_rec.member_transaction_header_id,
1643 l_dest_trans_rec.trx_reference_id;
1644 close get_trx_rec_info;
1645
1646 -- load the new structs
1647 if not FA_UTIL_PVT.get_asset_deprn_rec
1648 (p_asset_hdr_rec => l_dest_asset_hdr_rec ,
1649 px_asset_deprn_rec => l_dest_asset_deprn_rec_new,
1650 p_period_counter => NULL,
1651 p_mrc_sob_type_code => p_mrc_sob_type_code,
1652 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1653 end if;
1654
1655 -- load the new structs
1656 if not FA_UTIL_PVT.get_asset_fin_rec
1657 (p_asset_hdr_rec => l_dest_asset_hdr_rec,
1658 px_asset_fin_rec => l_dest_asset_fin_rec_new,
1659 p_transaction_header_id => NULL,
1660 p_mrc_sob_type_code => p_mrc_sob_type_code,
1661 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1662 end if;
1663
1664 if (p_log_level_rec.statement_level) then
1665 fa_debug_pkg.add('do_group_reclass',
1666 'l_dest_asset_fin_rec_new.cost',
1667 l_dest_asset_fin_rec_new.cost,
1668 p_log_level_rec => p_log_level_rec);
1669 end if;
1670
1671 if (p_log_level_rec.statement_level) then
1672 fa_debug_pkg.add('do_group_reclass',
1673 'dest_asset_id recs done',
1674 l_dest_asset_hdr_rec.asset_id,
1675 p_log_level_rec => p_log_level_rec);
1676 end if;
1677
1678
1679 end if; -- dest info
1680
1681 if (nvl(l_mem_asset_fin_rec_old.group_asset_id, -99)
1682 = nvl(l_mem_asset_fin_rec_new.group_asset_id, -99)) then
1683 raise group_rec_err;
1684 elsif (l_mem_asset_fin_rec_old.group_asset_id is not null and
1685 l_mem_asset_fin_rec_new.group_asset_id is not null) then
1686 l_group_reclass_code := 'GRP-GRP';
1687 elsif (l_mem_asset_fin_rec_old.group_asset_id is not null) then
1688 l_group_reclass_code := 'GRP-NONE';
1689 else
1690 l_group_reclass_code := 'NONE-GRP';
1691 end if;
1692
1693 if (p_log_level_rec.statement_level) then
1694 fa_debug_pkg.add(l_calling_fn, 'reclass code', l_group_reclass_code,
1695 p_log_level_rec => p_log_level_rec);
1696 end if;
1697
1698 ------------
1699 -- SOURCE --
1700 ------------
1701 if (p_log_level_rec.statement_level) then
1702 fa_debug_pkg.add(l_calling_fn, 'processing','source asset',
1703 p_log_level_rec => p_log_level_rec);
1704 end if;
1705
1706 -- If the asset was moved out of a group, deduct the asset's cost from the
1707 -- old group
1708 if l_mem_asset_fin_rec_old.group_asset_id is not null then
1709
1710 l_trx_id_in := l_src_trans_rec.transaction_header_id;
1711 l_asset_id := l_src_asset_hdr_rec.asset_id;
1712 open get_old_trx;
1713 fetch get_old_trx into l_old_trx_id;
1714 close get_old_trx;
1715
1716 -- get the old fin and deprn information
1717 if not FA_UTIL_PVT.get_asset_fin_rec
1718 (p_asset_hdr_rec => l_src_asset_hdr_rec,
1719 px_asset_fin_rec => l_src_asset_fin_rec_old,
1720 p_transaction_header_id => l_old_trx_id,
1721 p_mrc_sob_type_code => p_mrc_sob_type_code,
1722 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1723 end if;
1724
1725 if not FA_UTIL_PVT.get_asset_deprn_rec
1726 (p_asset_hdr_rec => l_src_asset_hdr_rec,
1727 px_asset_deprn_rec => l_src_asset_deprn_rec_old,
1728 p_period_counter => NULL,
1729 p_mrc_sob_type_code => p_mrc_sob_type_code,
1730 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
1731 end if;
1732
1733 --Bug6987743:Following make sure to pass reserve transfered to faxama so
1734 --that previously transferred amount will be taken out form Books Summary table.
1735 if (l_src_asset_fin_rec_old.tracking_method = 'ALLOCATE' or
1736 (l_src_asset_fin_rec_old.tracking_method = 'CALCULATE' and
1737 nvl(l_src_asset_fin_rec_old.member_rollup_flag, 'N') = 'N')) then
1738
1739 OPEN c_get_reserve;
1740 FETCH c_get_reserve INTO l_transfer_amount;
1741 CLOSE c_get_reserve;
1742
1743 l_src_asset_deprn_rec_adj.deprn_reserve := -1 * nvl(l_transfer_amount, 0);
1744
1745 if (p_log_level_rec.statement_level) then
1746 fa_debug_pkg.add(l_calling_fn, 'Getting previously transferred rsv', l_transfer_amount, p_log_level_rec);
1747 fa_debug_pkg.add(l_calling_fn, 'l_src_asset_deprn_rec_adj.deprn_reserve', l_src_asset_deprn_rec_adj.deprn_reserve, p_log_level_rec);
1748 end if;
1749
1750 end if;
1751
1752 --
1753 -- Calling faxama
1754 --
1755 if (not FA_AMORT_PVT.faxama(
1756 px_trans_rec => l_src_trans_rec,
1757 p_asset_hdr_rec => l_src_asset_hdr_rec,
1758 p_asset_desc_rec => l_src_asset_desc_rec,
1759 p_asset_cat_rec => l_src_asset_cat_rec,
1760 p_asset_type_rec => l_src_asset_type_rec,
1761 p_asset_fin_rec_old => l_src_asset_fin_rec_old,
1762 px_asset_fin_rec_new => l_src_asset_fin_rec_new,
1763 p_asset_deprn_rec => l_src_asset_deprn_rec_old,
1764 p_asset_deprn_rec_adj => l_src_asset_deprn_rec_adj, --Bug6987743
1765 p_period_rec => l_period_rec,
1766 p_mrc_sob_type_code => p_mrc_sob_type_code,
1767 p_running_mode => fa_std_types.FA_DPR_NORMAL,
1768 p_used_by_revaluation => null,
1769 p_reclassed_asset_id => l_mem_asset_hdr_rec.asset_id,
1770 p_reclass_src_dest => 'SOURCE',
1771 p_reclassed_asset_dpis => l_mem_asset_fin_rec_old.date_placed_in_service,
1772 p_update_books_summary => TRUE,
1773 p_proceeds_of_sale => 0,
1774 p_cost_of_removal => 0,
1775 x_deprn_exp => l_group_reclass_options_rec.source_exp_amount,
1776 x_bonus_deprn_exp => l_bonus_deprn_exp,
1777 x_deprn_rsv => l_deprn_rsv,
1778 p_log_level_rec => p_log_level_rec)) then
1779
1780 if (p_log_level_rec.statement_level) then
1781 fa_debug_pkg.add('calc_fin_info', 'calling FA_AMORT_PVT.faxama', 'FAILED', p_log_level_rec => p_log_level_rec);
1782 end if;
1783
1784 raise group_rec_err;
1785
1786 end if; -- (not FA_AMORT_PVT.faxama
1787
1788 l_grp_src_trans_rec := l_src_trans_rec;
1789 l_grp_src_asset_hdr_rec := l_src_asset_hdr_rec;
1790 l_grp_src_asset_fin_rec_new := l_src_asset_fin_rec_new;
1791 l_grp_src_asset_type_rec := l_src_asset_type_rec;
1792
1793 -- call the category books cache for the accounts
1794 if not fa_cache_pkg.fazccb
1795 (X_book => l_src_asset_hdr_rec.book_type_code,
1796 X_cat_id => l_src_asset_cat_rec.category_id,
1797 p_log_level_rec => p_log_level_rec) then
1798 raise group_rec_err;
1799 end if;
1800
1801 -- set up the structs to be passed to faxinaj
1802 l_rsv_adj.book_type_code := l_src_asset_hdr_rec.book_type_code;
1803 l_rsv_adj.period_counter_created := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
1804 l_rsv_adj.period_counter_adjusted := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
1805 l_rsv_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
1806 l_rsv_adj.selection_thid := 0;
1807 l_rsv_adj.selection_retid := 0;
1808 l_rsv_adj.leveling_flag := TRUE;
1809 l_rsv_adj.last_update_date := l_src_trans_rec.transaction_date_entered;
1810 l_rsv_adj.flush_adj_flag := TRUE;
1811 l_rsv_adj.gen_ccid_flag := TRUE;
1812 l_rsv_adj.annualized_adjustment := 0;
1813 l_rsv_adj.asset_invoice_id := 0;
1814 l_rsv_adj.distribution_id := 0;
1815 l_rsv_adj.mrc_sob_type_code := p_mrc_sob_type_code;
1816 l_rsv_adj.source_type_code := 'ADJUSTMENT';
1817 l_rsv_adj.adjustment_type := 'RESERVE';
1818 l_rsv_adj.code_combination_id := fa_cache_pkg.fazccb_record.reserve_account_ccid;
1819 l_rsv_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
1820 l_rsv_adj.account_type := 'DEPRN_RESERVE_ACCT';
1821
1822
1823 l_rsv_adj.transaction_header_id := l_src_trans_rec.transaction_header_id;
1824 l_rsv_adj.asset_id := l_src_asset_hdr_rec.asset_id;
1825 l_rsv_adj.current_units := l_src_asset_desc_rec.current_units;
1826 l_rsv_adj.code_combination_id := fa_cache_pkg.fazccb_record.reserve_account_ccid;
1827 l_rsv_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
1828 l_rsv_adj.debit_credit_flag := 'DR';
1829
1830
1831 l_exp_adj.book_type_code := l_src_asset_hdr_rec.book_type_code;
1832 l_exp_adj.period_counter_created := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
1833 l_exp_adj.period_counter_adjusted := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
1834 l_exp_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
1835 l_exp_adj.selection_thid := 0;
1836 l_exp_adj.selection_retid := 0;
1837 l_exp_adj.leveling_flag := TRUE;
1838 l_exp_adj.last_update_date := l_src_trans_rec.transaction_date_entered;
1839 l_exp_adj.flush_adj_flag := TRUE;
1840 l_exp_adj.gen_ccid_flag := TRUE;
1841 l_exp_adj.annualized_adjustment := 0;
1842 l_exp_adj.asset_invoice_id := 0;
1843 l_exp_adj.distribution_id := 0;
1844 l_exp_adj.mrc_sob_type_code := p_mrc_sob_type_code;
1845 l_exp_adj.source_type_code := 'DEPRECIATION';
1846 l_exp_adj.adjustment_type := 'EXPENSE';
1847 l_exp_adj.account_type := 'DEPRN_EXPENSE_ACCT';
1848
1849
1850 l_exp_adj.transaction_header_id := l_src_trans_rec.transaction_header_id;
1851 l_exp_adj.asset_id := l_src_asset_hdr_rec.asset_id;
1852 l_exp_adj.current_units := l_src_asset_desc_rec.current_units;
1853 l_exp_adj.code_combination_id := 0;
1854 l_exp_adj.account := fa_cache_pkg.fazccb_record.deprn_expense_acct;
1855 l_exp_adj.debit_credit_flag := 'CR';
1856
1857 -- Expense accounts have to be CR for the old acct
1858 -- Reserve accounts have to be DR for the old acct
1859
1860
1861 if (nvl(l_group_reclass_options_rec.source_exp_amount, 0) <> 0) then
1862
1863 l_exp_adj.adjustment_amount := -1 * l_group_reclass_options_rec.source_exp_amount;
1864
1865 if (p_log_level_rec.statement_level) then
1866 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for exp source',
1867 p_log_level_rec => p_log_level_rec);
1868 end if;
1869
1870 if not FA_INS_ADJUST_PKG.faxinaj
1871 (l_exp_adj,
1872 l_src_trans_rec.who_info.last_update_date,
1873 l_src_trans_rec.who_info.last_updated_by,
1874 l_src_trans_rec.who_info.last_update_login,
1875 p_log_level_rec => p_log_level_rec) then
1876 raise group_rec_err;
1877 end if;
1878
1879 if (nvl(l_src_asset_fin_rec_old.tracking_method, 'NO TRACK') = 'ALLOCATE') then
1880
1881 -- call the category books cache for the accounts
1882 if not fa_cache_pkg.fazccb
1883 (X_book => l_mem_asset_hdr_rec.book_type_code,
1884 X_cat_id => l_mem_asset_cat_rec.category_id) then
1885 raise group_rec_err;
1886 end if;
1887
1888 l_exp_adj.transaction_header_id := l_mem_trans_rec.transaction_header_id;
1889 l_exp_adj.current_units := l_mem_asset_desc_rec.current_units;
1890 l_exp_adj.asset_id := l_mem_asset_hdr_rec.asset_id;
1891 l_exp_adj.account := fa_cache_pkg.fazccb_record.deprn_expense_acct;
1892 l_exp_adj.track_member_flag := 'Y';
1893
1894 if (p_log_level_rec.statement_level) then
1895 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for exp source track',
1896 p_log_level_rec => p_log_level_rec);
1897 end if;
1898
1899 if not FA_INS_ADJUST_PKG.faxinaj
1900 (l_exp_adj,
1901 l_src_trans_rec.who_info.last_update_date,
1902 l_src_trans_rec.who_info.last_updated_by,
1903 l_src_trans_rec.who_info.last_update_login) then
1904 raise group_rec_err;
1905 end if;
1906 end if;
1907
1908 end if;
1909
1910 if (nvl(l_deprn_rsv, 0) <> 0) then
1911
1912 l_group_reclass_options_rec.reserve_amount := -1 * l_deprn_rsv;
1913 l_rsv_adj.adjustment_amount := l_group_reclass_options_rec.reserve_amount;
1914
1915 if (p_log_level_rec.statement_level) then
1916 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for rsv source',
1917 p_log_level_rec => p_log_level_rec);
1918 end if;
1919
1920 if not FA_INS_ADJUST_PKG.faxinaj
1921 (l_rsv_adj,
1922 l_src_trans_rec.who_info.last_update_date,
1923 l_src_trans_rec.who_info.last_updated_by,
1924 l_src_trans_rec.who_info.last_update_login,
1925 p_log_level_rec => p_log_level_rec) then
1926 raise group_rec_err;
1927 end if;
1928
1929 if (nvl(l_src_asset_fin_rec_old.tracking_method,'NO TRACK')='ALLOCATE') then
1930
1931 -- call the category books cache for the accounts
1932 if not fa_cache_pkg.fazccb
1933 (X_book => l_mem_asset_hdr_rec.book_type_code,
1934 X_cat_id => l_mem_asset_cat_rec.category_id) then
1935 raise group_rec_err;
1936 end if;
1937
1938 l_rsv_adj.transaction_header_id := l_mem_trans_rec.transaction_header_id;
1939 l_rsv_adj.current_units := l_mem_asset_desc_rec.current_units;
1940 l_rsv_adj.asset_id := l_mem_asset_hdr_rec.asset_id;
1941 l_rsv_adj.code_combination_id := fa_cache_pkg.fazccb_record.reserve_account_ccid;
1942 l_rsv_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
1943 l_rsv_adj.track_member_flag := 'Y';
1944
1945 if (p_log_level_rec.statement_level) then
1946 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for rsv source track',
1947 p_log_level_rec => p_log_level_rec);
1948 end if;
1949
1950 if not FA_INS_ADJUST_PKG.faxinaj
1951 (l_rsv_adj,
1952 l_src_trans_rec.who_info.last_update_date,
1953 l_src_trans_rec.who_info.last_updated_by,
1954 l_src_trans_rec.who_info.last_update_login) then
1955 raise group_rec_err;
1956 end if;
1957 end if;
1958
1959 end if;
1960
1961 -- Modified to call FA_GROUP_RECLASS2_PVT.do_adjustment
1962 -- even old group id is populated if the track method is allocate
1963
1964 else -- asset was originally standalone
1965
1966 if (p_log_level_rec.statement_level) then
1967 fa_debug_pkg.add(l_calling_fn, 'source is','standalone'
1968 ,p_log_level_rec => p_log_level_rec);
1969 end if;
1970
1971 -- whether expense or reserve transfer, amount must be set to
1972 -- the current reserve balance in order to remove all balances
1973 -- from the memeber asset (i.e. ignore calc / manual) this is
1974 -- done internally inside the private api
1975
1976 -- set the main structs equal to member if asset was
1977 -- originally standalone
1978
1979 --if l_mem_asset_fin_rec_old.group_asset_id is null then
1980 l_src_trans_rec := l_mem_trans_rec;
1981 l_src_asset_hdr_rec := l_mem_asset_hdr_rec;
1982 l_src_asset_desc_rec := l_mem_asset_desc_rec;
1983 l_src_asset_type_rec := l_mem_asset_type_rec;
1984 l_src_asset_cat_rec := l_mem_asset_cat_rec;
1985 l_src_asset_fin_rec_new := l_mem_asset_fin_rec_old; -- NOTE: using old
1986 l_src_asset_deprn_rec_new := l_mem_asset_deprn_rec_old;
1987 --end if;
1988
1989
1990 if (p_log_level_rec.statement_level) then
1991 fa_debug_pkg.add(l_calling_fn,
1992 'calling FA_GROUP_RECLASS2_PVT.do_adjustment',
1993 l_src_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
1994 end if;
1995
1996 if not FA_GROUP_RECLASS2_PVT.do_adjustment
1997 (px_trans_rec => l_src_trans_rec,
1998 p_asset_hdr_rec => l_src_asset_hdr_rec,
1999 p_asset_desc_rec => l_src_asset_desc_rec,
2000 p_asset_type_rec => l_src_asset_type_rec,
2001 p_asset_cat_rec => l_src_asset_cat_rec,
2002 p_asset_fin_rec_old => l_src_asset_fin_rec_old,
2003 p_asset_fin_rec_new => l_src_asset_fin_rec_new,
2004 p_asset_deprn_rec_old => l_src_asset_deprn_rec_new,
2005 p_mem_asset_hdr_rec => l_mem_asset_hdr_rec,
2006 p_mem_asset_desc_rec => l_mem_asset_desc_rec,
2007 p_mem_asset_type_rec => l_mem_asset_type_rec,
2008 p_mem_asset_cat_rec => l_mem_asset_cat_rec,
2009 p_mem_asset_fin_rec_new => l_mem_asset_fin_rec_old,
2010 p_mem_asset_deprn_rec_new => l_mem_asset_deprn_rec_old,
2011 px_group_reclass_options_rec => l_group_reclass_options_rec,
2012 p_period_rec => l_period_rec,
2013 p_mrc_sob_type_code => p_mrc_sob_type_code,
2014 p_src_dest => 'SOURCE',
2015 p_log_level_rec => p_log_level_rec) then
2016 raise group_rec_err;
2017 end if;
2018
2019 if (p_log_level_rec.statement_level) then
2020 fa_debug_pkg.add(l_calling_fn,
2021 'after FA_GROUP_RECLASS2_PVT.do_adjustment',
2022 l_src_asset_hdr_rec.asset_id,
2023 p_log_level_rec => p_log_level_rec);
2024 end if;
2025
2026 end if; -- end of source
2027
2028 -- clear the track flags before we start again
2029 l_exp_adj.track_member_flag := NULL;
2030 l_rsv_adj.track_member_flag := NULL;
2031
2032
2033 --------------------------
2034 -- CONDITIONAL TRANSFER --
2035 --------------------------
2036
2037 -- BUG# 6936546
2038 -- in allocation cases it is possible in cases where asset is moving into or out of
2039 -- a standalone status for true expense to be combined with tracked expense in the
2040 -- same period. In order to seperate these for correct reserve processing from DD
2041 -- for journaling purposes, we will force a transfer so we can seperate the two
2042 -- into different distributions when the reclass is backdated creating expense
2043 --
2044 -- thus this transfer effectively is a complete wash, although only cost
2045 -- will be moved in the transaction.
2046 --
2047 -- NOTE: this would spawn a transfer when occuring in tax books as well
2048 -- since we share distirubtions, there is really no way around this...
2049
2050 if ((l_group_reclass_code = 'GRP-NONE' or
2051 l_group_reclass_code = 'NONE-GRP') and
2052 (nvl(l_src_asset_fin_rec_old.tracking_method,'NONE') <> 'CALCULATE' or
2053 nvl(l_dest_asset_fin_rec_old.tracking_method,'NONE') <> 'CALCULATE')) then
2054
2055 if (p_mrc_sob_type_code <> 'R') then
2056
2057 open c_member_dists (p_asset_id => l_mem_asset_hdr_rec.asset_id);
2058 fetch c_member_dists bulk collect
2059 into l_distribution_id,
2060 l_units_assigned,
2061 l_code_combination_id,
2062 l_location_id,
2063 l_assigned_to;
2064 close c_member_dists;
2065
2066 -- load current dists into array
2067 for i in 1..l_distribution_id.count loop
2068 l_asset_dist_tbl(i).distribution_id := l_distribution_id(i);
2069 l_asset_dist_tbl(i).transaction_units := -l_units_assigned(i);
2070 end loop;
2071
2072 -- load the new dists into array
2073 for i in 1..l_distribution_id.count loop
2074 l_asset_dist_tbl(i+l_distribution_id.count).expense_ccid := l_code_combination_id(i);
2075 l_asset_dist_tbl(i+l_distribution_id.count).location_ccid := l_location_id(i);
2076 l_asset_dist_tbl(i+l_distribution_id.count).assigned_to := l_assigned_to(i);
2077 l_asset_dist_tbl(i+l_distribution_id.count).transaction_units := l_units_assigned(i);
2078 end loop;
2079
2080 if (p_log_level_rec.statement_level) then
2081 fa_debug_pkg.add(l_calling_fn, 'calling' ,'transfer api for standalone asset');
2082 end if;
2083
2084 l_asset_hdr_rec := l_mem_asset_hdr_rec;
2085 l_asset_hdr_rec.book_type_code := fa_cache_pkg.fazcbc_record.distribution_source_book;
2086
2087 FA_TRANSFER_PUB.do_transfer
2088 (p_api_version => l_api_version,
2089 p_init_msg_list => l_init_msg_list,
2090 p_commit => l_commit,
2091 p_validation_level => l_validation_level,
2092 p_calling_fn => l_calling_fn,
2093 x_return_status => l_return_status2,
2094 x_msg_count => l_msg_count,
2095 x_msg_data => l_msg_data,
2096 px_trans_rec => l_trans_rec,
2097 px_asset_hdr_rec => l_asset_hdr_rec,
2098 px_asset_dist_tbl => l_asset_dist_tbl);
2099
2100 if (l_return_status2 <> FND_API.G_RET_STS_SUCCESS) then
2101 raise group_rec_err;
2102 end if;
2103
2104 -- following update and that in the else is needed in case
2105 -- the transfer was performed on STANDALONE->GROUP
2106 -- case where the reserve would have been inserted as track
2107 -- when it should not have been.
2108
2109 if (l_group_reclass_code = 'NONE-GRP') then
2110
2111 update fa_adjustments
2112 set track_member_flag = null
2113 where transaction_header_id = l_trans_rec.transaction_header_id
2114 and book_type_code = l_asset_hdr_rec.book_type_code;
2115
2116 end if;
2117
2118 elsif (l_group_reclass_code = 'NONE-GRP') then -- reporting is implied in else
2119
2120 select transaction_header_id
2121 into l_trans_rec.transaction_header_id
2122 from fa_transaction_headers
2123 where asset_id = l_mem_asset_hdr_rec.asset_id
2124 and book_type_code = l_mem_asset_hdr_rec.book_type_code
2125 and transaction_type_code = 'TRANSFER'
2126 and transaction_header_id > l_mem_trans_rec.transaction_header_id;
2127
2128 update fa_adjustments_mrc_v
2129 set track_member_flag = null
2130 where transaction_header_id = l_trans_rec.transaction_header_id
2131 and book_type_code = l_asset_hdr_rec.book_type_code;
2132
2133 end if;
2134
2135 end if;
2136
2137
2138 ------------
2139 -- DESTINATION --
2140 ------------
2141 if (p_log_level_rec.statement_level) then
2142 fa_debug_pkg.add(l_calling_fn, 'processing','dest asset',
2143 p_log_level_rec => p_log_level_rec);
2144 end if;
2145
2146 -- If the asset was moved into a group, add the asset's cost to the new group
2147 if l_mem_asset_fin_rec_new.group_asset_id is not null then
2148
2149 if (p_log_level_rec.statement_level) then
2150 fa_debug_pkg.add(l_calling_fn, 'processing dest as ','group',
2151 p_log_level_rec => p_log_level_rec);
2152 end if;
2153
2154 l_trx_id_in := l_dest_trans_rec.transaction_header_id;
2155 l_asset_id := l_dest_asset_hdr_rec.asset_id;
2156 open get_old_trx;
2157 fetch get_old_trx into l_old_trx_id;
2158 close get_old_trx;
2159
2160 -- get the old fin and deprn information
2161 if not FA_UTIL_PVT.get_asset_fin_rec
2162 (p_asset_hdr_rec => l_dest_asset_hdr_rec,
2163 px_asset_fin_rec => l_dest_asset_fin_rec_old,
2164 p_transaction_header_id => l_old_trx_id,
2165 p_mrc_sob_type_code => p_mrc_sob_type_code,
2166 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
2167 end if;
2168
2169 if not FA_UTIL_PVT.get_asset_deprn_rec
2170 (p_asset_hdr_rec => l_dest_asset_hdr_rec,
2171 px_asset_deprn_rec => l_dest_asset_deprn_rec_old,
2172 p_period_counter => NULL,
2173 p_mrc_sob_type_code => p_mrc_sob_type_code,
2174 p_log_level_rec => p_log_level_rec) then raise group_rec_err;
2175 end if;
2176
2177 l_asset_deprn_rec_adj.deprn_reserve := l_group_reclass_options_rec.reserve_amount;
2178
2179 --
2180 -- This is used to calculate adj.eofy_reserve in faxama.
2181 --
2182 if l_mem_asset_fin_rec_old.group_asset_id is null then
2183 l_asset_deprn_rec_adj.ytd_deprn := l_mem_asset_deprn_rec_old.ytd_deprn;
2184 end if;
2185
2186 if (not FA_AMORT_PVT.faxama(
2187 px_trans_rec => l_dest_trans_rec,
2188 p_asset_hdr_rec => l_dest_asset_hdr_rec,
2189 p_asset_desc_rec => l_dest_asset_desc_rec,
2190 p_asset_cat_rec => l_dest_asset_cat_rec,
2191 p_asset_type_rec => l_dest_asset_type_rec,
2192 p_asset_fin_rec_old => l_dest_asset_fin_rec_old,
2193 px_asset_fin_rec_new => l_dest_asset_fin_rec_new,
2194 p_asset_deprn_rec => l_dest_asset_deprn_rec_old,
2195 p_asset_deprn_rec_adj => l_asset_deprn_rec_adj,
2196 p_period_rec => l_period_rec,
2197 p_mrc_sob_type_code => p_mrc_sob_type_code,
2198 p_running_mode => fa_std_types.FA_DPR_NORMAL,
2199 p_used_by_revaluation => null,
2200 p_reclassed_asset_id => l_mem_asset_hdr_rec.asset_id,
2201 p_reclass_src_dest => 'DESTINATION',
2202 p_reclassed_asset_dpis => l_mem_asset_fin_rec_old.date_placed_in_service,
2203 p_update_books_summary => TRUE,
2204 p_proceeds_of_sale => 0,
2205 p_cost_of_removal => 0,
2206 x_deprn_exp => l_group_reclass_options_rec.destination_exp_amount,
2207 x_bonus_deprn_exp => l_bonus_deprn_exp,
2208 x_deprn_rsv => l_deprn_rsv,
2209 p_log_level_rec => p_log_level_rec)) then
2210
2211 if (p_log_level_rec.statement_level) then
2212 fa_debug_pkg.add('calc_fin_info', 'calling FA_AMORT_PVT.faxama', 'FAILED', p_log_level_rec => p_log_level_rec);
2213 end if;
2214 return (FALSE);
2215
2216 end if; -- (not FA_AMORT_PVT.faxama
2217
2218 -- call the category books cache for the accounts
2219 if not fa_cache_pkg.fazccb
2220 (X_book => l_dest_asset_hdr_rec.book_type_code,
2221 X_cat_id => l_dest_asset_cat_rec.category_id,
2222 p_log_level_rec => p_log_level_rec) then
2223 raise group_rec_err;
2224 end if;
2225
2226 -- set up the structs to be passed to faxinaj
2227 l_rsv_adj.book_type_code := l_src_asset_hdr_rec.book_type_code;
2228 l_rsv_adj.period_counter_created := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
2229 l_rsv_adj.period_counter_adjusted := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
2230 l_rsv_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
2231 l_rsv_adj.selection_thid := 0;
2232 l_rsv_adj.selection_retid := 0;
2233 l_rsv_adj.leveling_flag := TRUE;
2234 l_rsv_adj.last_update_date := l_src_trans_rec.transaction_date_entered;
2235 l_rsv_adj.flush_adj_flag := TRUE;
2236 l_rsv_adj.gen_ccid_flag := TRUE;
2237 l_rsv_adj.annualized_adjustment := 0;
2238 l_rsv_adj.asset_invoice_id := 0;
2239 l_rsv_adj.distribution_id := 0;
2240 l_rsv_adj.mrc_sob_type_code := p_mrc_sob_type_code;
2241 l_rsv_adj.source_type_code := 'ADJUSTMENT';
2242 l_rsv_adj.adjustment_type := 'RESERVE';
2243 l_rsv_adj.code_combination_id := fa_cache_pkg.fazccb_record.reserve_account_ccid;
2244 l_rsv_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
2245 l_rsv_adj.account_type := 'DEPRN_RESERVE_ACCT';
2246
2247 l_rsv_adj.transaction_header_id := l_src_trans_rec.transaction_header_id;
2248 l_rsv_adj.asset_id := l_src_asset_hdr_rec.asset_id;
2249 l_rsv_adj.current_units := l_src_asset_desc_rec.current_units;
2250 l_rsv_adj.code_combination_id := fa_cache_pkg.fazccb_record.reserve_account_ccid;
2251 l_rsv_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
2252 l_rsv_adj.debit_credit_flag := 'CR';
2253
2254
2255 l_exp_adj.book_type_code := l_src_asset_hdr_rec.book_type_code;
2256 l_exp_adj.period_counter_created := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
2257 l_exp_adj.period_counter_adjusted := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
2258 l_exp_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
2259 l_exp_adj.selection_thid := 0;
2260 l_exp_adj.selection_retid := 0;
2261 l_exp_adj.leveling_flag := TRUE;
2262 l_exp_adj.last_update_date := l_src_trans_rec.transaction_date_entered;
2263 l_exp_adj.flush_adj_flag := TRUE;
2264 l_exp_adj.gen_ccid_flag := TRUE;
2265 l_exp_adj.annualized_adjustment := 0;
2266 l_exp_adj.asset_invoice_id := 0;
2267 l_exp_adj.distribution_id := 0;
2268 l_exp_adj.mrc_sob_type_code := p_mrc_sob_type_code;
2269 l_exp_adj.source_type_code := 'DEPRECIATION';
2270 l_exp_adj.adjustment_type := 'EXPENSE';
2271 l_exp_adj.account_type := 'DEPRN_EXPENSE_ACCT';
2272
2273 l_exp_adj.transaction_header_id := l_src_trans_rec.transaction_header_id;
2274 l_exp_adj.asset_id := l_src_asset_hdr_rec.asset_id;
2275 l_exp_adj.current_units := l_src_asset_desc_rec.current_units;
2276 l_exp_adj.code_combination_id := 0;
2277 l_exp_adj.account := fa_cache_pkg.fazccb_record.deprn_expense_acct;
2278 l_exp_adj.debit_credit_flag := 'DR';
2279
2280 -- set up the structs to be passed to faxinaj
2281 l_rsv_adj.transaction_header_id := l_dest_trans_rec.transaction_header_id;
2282 l_rsv_adj.asset_id := l_dest_asset_hdr_rec.asset_id;
2283 l_rsv_adj.current_units := l_dest_asset_desc_rec.current_units;
2284
2285 l_exp_adj.transaction_header_id := l_dest_trans_rec.transaction_header_id;
2286 l_exp_adj.asset_id := l_dest_asset_hdr_rec.asset_id;
2287 l_exp_adj.current_units := l_dest_asset_desc_rec.current_units;
2288
2289 -- Expense accounts have to be DR for the new acct
2290 -- Reserve accounts have to be CR for the new acct
2291
2292 if (nvl(l_group_reclass_options_rec.destination_exp_amount, 0) <> 0) then
2293
2294 l_exp_adj.adjustment_amount := l_group_reclass_options_rec.destination_exp_amount;
2295
2296 if (p_log_level_rec.statement_level) then
2297 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for exp dest',
2298 p_log_level_rec => p_log_level_rec);
2299 end if;
2300
2301 if not FA_INS_ADJUST_PKG.faxinaj
2302 (l_exp_adj,
2303 l_dest_trans_rec.who_info.last_update_date,
2304 l_dest_trans_rec.who_info.last_updated_by,
2305 l_dest_trans_rec.who_info.last_update_login,
2306 p_log_level_rec => p_log_level_rec) then
2307 raise group_rec_err;
2308 end if;
2309
2310 if (nvl(l_dest_asset_fin_rec_new.tracking_method, 'NO TRACK') = 'ALLOCATE') then
2311
2312 -- call the category books cache for the accounts
2313 if not fa_cache_pkg.fazccb
2314 (X_book => l_mem_asset_hdr_rec.book_type_code,
2315 X_cat_id => l_mem_asset_cat_rec.category_id) then
2316 raise group_rec_err;
2317 end if;
2318
2319 l_exp_adj.transaction_header_id := l_mem_trans_rec.transaction_header_id;
2320 l_exp_adj.current_units := l_mem_asset_desc_rec.current_units;
2321 l_exp_adj.asset_id := l_mem_asset_hdr_rec.asset_id;
2322 l_exp_adj.account := fa_cache_pkg.fazccb_record.deprn_expense_acct;
2323 l_exp_adj.track_member_flag := 'Y';
2324
2325 if (p_log_level_rec.statement_level) then
2326 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for exp dest track',
2327 p_log_level_rec => p_log_level_rec);
2328 end if;
2329
2330 if not FA_INS_ADJUST_PKG.faxinaj
2331 (l_exp_adj,
2332 l_src_trans_rec.who_info.last_update_date,
2333 l_src_trans_rec.who_info.last_updated_by,
2334 l_src_trans_rec.who_info.last_update_login) then
2335 raise group_rec_err;
2336 end if;
2337 end if;
2338
2339 end if;
2340
2341 if (nvl(l_group_reclass_options_rec.reserve_amount, 0) <> 0) then
2342
2343 l_rsv_adj.adjustment_amount := l_group_reclass_options_rec.reserve_amount;
2344
2345 if (p_log_level_rec.statement_level) then
2346 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for rsv',
2347 p_log_level_rec => p_log_level_rec);
2348 end if;
2349
2350 if not FA_INS_ADJUST_PKG.faxinaj
2351 (l_rsv_adj,
2352 l_dest_trans_rec.who_info.last_update_date,
2353 l_dest_trans_rec.who_info.last_updated_by,
2354 l_dest_trans_rec.who_info.last_update_login,
2355 p_log_level_rec => p_log_level_rec) then
2356 raise group_rec_err;
2357 end if;
2358
2359 if (nvl(l_dest_asset_fin_rec_new.tracking_method,'NO TRACK')='ALLOCATE') then
2360
2361 -- call the category books cache for the accounts
2362 if not fa_cache_pkg.fazccb
2363 (X_book => l_mem_asset_hdr_rec.book_type_code,
2364 X_cat_id => l_mem_asset_cat_rec.category_id) then
2365 raise group_rec_err;
2366 end if;
2367
2368 l_rsv_adj.transaction_header_id := l_mem_trans_rec.transaction_header_id;
2369 l_rsv_adj.current_units := l_mem_asset_desc_rec.current_units;
2370 l_rsv_adj.asset_id := l_mem_asset_hdr_rec.asset_id;
2371 l_rsv_adj.code_combination_id := fa_cache_pkg.fazccb_record.reserve_account_ccid;
2372 l_rsv_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
2373 l_rsv_adj.track_member_flag := 'Y';
2374
2375 if (p_log_level_rec.statement_level) then
2376 fa_debug_pkg.add(l_calling_fn, 'calling faxinaj','for rsv dest track',
2377 p_log_level_rec => p_log_level_rec);
2378 end if;
2379
2380 if not FA_INS_ADJUST_PKG.faxinaj
2381 (l_rsv_adj,
2382 l_src_trans_rec.who_info.last_update_date,
2383 l_src_trans_rec.who_info.last_updated_by,
2384 l_src_trans_rec.who_info.last_update_login) then
2385 raise group_rec_err;
2386 end if;
2387 end if;
2388
2389 end if;
2390
2391 else -- asset is now standalone
2392
2393 -- set the main structs equal to member if asset was
2394 -- originally standalone
2395
2396 l_dest_trans_rec := l_mem_trans_rec;
2397 l_dest_asset_hdr_rec := l_mem_asset_hdr_rec;
2398 l_dest_asset_desc_rec := l_mem_asset_desc_rec;
2399 l_dest_asset_type_rec := l_mem_asset_type_rec;
2400 l_dest_asset_cat_rec := l_mem_asset_cat_rec;
2401 l_dest_asset_fin_rec_old := l_mem_asset_fin_rec_old;
2402 l_dest_asset_fin_rec_new := l_mem_asset_fin_rec_new;
2403 l_dest_asset_deprn_rec_old := l_mem_asset_deprn_rec_old;
2404 l_dest_asset_deprn_rec_new := l_mem_asset_deprn_rec_new;
2405
2406 -- end if;
2407
2408 if (p_log_level_rec.statement_level) then
2409 fa_debug_pkg.add(l_calling_fn,
2410 'calling FA_GROUP_RECLASS2_PVT.do_adjustment',
2411 l_dest_asset_hdr_rec.asset_id,
2412 p_log_level_rec => p_log_level_rec);
2413 end if;
2414
2415 --Bug6983091: Replaced l_dest_asset_deprn_rec_new with l_dest_asset_deprn_rec_old
2416 -- as parameter for p_asset_deprn_rec_old
2417 if not FA_GROUP_RECLASS2_PVT.do_adjustment
2418 (px_trans_rec => l_dest_trans_rec,
2419 p_asset_hdr_rec => l_dest_asset_hdr_rec,
2420 p_asset_desc_rec => l_dest_asset_desc_rec,
2421 p_asset_type_rec => l_dest_asset_type_rec,
2422 p_asset_cat_rec => l_dest_asset_cat_rec,
2423 p_asset_fin_rec_old => l_dest_asset_fin_rec_old,
2424 p_asset_fin_rec_new => l_dest_asset_fin_rec_new,
2425 p_asset_deprn_rec_old => l_dest_asset_deprn_rec_old,
2426 p_mem_asset_hdr_rec => l_mem_asset_hdr_rec,
2427 p_mem_asset_desc_rec => l_mem_asset_desc_rec,
2428 p_mem_asset_type_rec => l_mem_asset_type_rec,
2429 p_mem_asset_cat_rec => l_mem_asset_cat_rec,
2430 p_mem_asset_fin_rec_new => l_mem_asset_fin_rec_new,
2431 p_mem_asset_deprn_rec_new => l_mem_asset_deprn_rec_new,
2432 px_group_reclass_options_rec => l_group_reclass_options_rec,
2433 p_period_rec => l_period_rec,
2434 p_mrc_sob_type_code => p_mrc_sob_type_code,
2435 p_src_dest => 'DESTINATION',
2436 p_log_level_rec => p_log_level_rec) then
2437 raise group_rec_err;
2438 end if;
2439
2440 if (p_log_level_rec.statement_level) then
2441 fa_debug_pkg.add(l_calling_fn,
2442 'after FA_GROUP_RECLASS2_PVT.do_adjustment',
2443 l_dest_asset_hdr_rec.asset_id,
2444 p_log_level_rec => p_log_level_rec);
2445 end if;
2446
2447 end if; -- end of destination
2448
2449 if (p_mrc_sob_type_code <> 'R') then
2450
2451 if (l_grp_src_asset_type_rec.asset_type = 'GROUP') then
2452 update fa_books
2453 set adjustment_required_status = 'NONE'
2454 , adjusted_cost = l_grp_src_asset_fin_rec_new.adjusted_cost
2455 , rate_adjustment_factor = l_grp_src_asset_fin_rec_new.rate_adjustment_factor
2456 , formula_factor = l_grp_src_asset_fin_rec_new.formula_factor
2457 , salvage_value = l_grp_src_asset_fin_rec_new.salvage_value
2458 , allowed_deprn_limit_amount = l_grp_src_asset_fin_rec_new.allowed_deprn_limit_amount
2459 , recoverable_cost = l_grp_src_asset_fin_rec_new.recoverable_cost
2460 , adjusted_recoverable_cost = l_grp_src_asset_fin_rec_new.adjusted_recoverable_cost
2461 , adjusted_capacity = l_grp_src_asset_fin_rec_new.adjusted_capacity
2462 , reval_amortization_basis = l_grp_src_asset_fin_rec_new.reval_amortization_basis
2463 , eofy_reserve = l_grp_src_asset_fin_rec_new.eofy_reserve
2464 where asset_id = l_src_asset
2465 and book_type_code = p_trx_ref_rec.book_type_code
2466 and transaction_header_id_out is null;
2467 else
2468 update fa_books
2469 set adjustment_required_status = 'NONE'
2470 where asset_id = l_src_asset
2471 and book_type_code = p_trx_ref_rec.book_type_code
2472 and transaction_header_id_out is null;
2473 end if;
2474
2475 if (l_dest_asset_type_rec.asset_type = 'GROUP') then
2476 update fa_books
2477 set adjustment_required_status = 'NONE'
2478 , adjusted_cost = l_dest_asset_fin_rec_new.adjusted_cost
2479 , rate_adjustment_factor = l_dest_asset_fin_rec_new.rate_adjustment_factor
2480 , formula_factor = l_dest_asset_fin_rec_new.formula_factor
2481 , salvage_value = l_dest_asset_fin_rec_new.salvage_value
2482 , allowed_deprn_limit_amount = l_dest_asset_fin_rec_new.allowed_deprn_limit_amount
2483 , recoverable_cost = l_dest_asset_fin_rec_new.recoverable_cost
2484 , adjusted_recoverable_cost = l_dest_asset_fin_rec_new.adjusted_recoverable_cost
2485 , adjusted_capacity = l_dest_asset_fin_rec_new.adjusted_capacity
2486 , reval_amortization_basis = l_dest_asset_fin_rec_new.reval_amortization_basis
2487 , eofy_reserve = l_dest_asset_fin_rec_new.eofy_reserve
2488 where asset_id = l_dest_asset
2489 and book_type_code = p_trx_ref_rec.book_type_code
2490 and transaction_header_id_out is null;
2491 else
2492 update fa_books
2493 set adjustment_required_status = 'NONE'
2494 where asset_id = l_dest_asset
2495 and book_type_code = p_trx_ref_rec.book_type_code
2496 and transaction_header_id_out is null;
2497 end if;
2498
2499 update fa_trx_references
2500 set reserve_transfer_amount = l_group_reclass_options_rec.reserve_amount
2501 , src_expense_amount = l_group_reclass_options_rec.source_exp_amount
2502 , dest_expense_amount = l_group_reclass_options_rec.destination_exp_amount
2503 where trx_reference_id = l_src_trans_rec.trx_reference_id;
2504
2505 else
2506 if (l_grp_src_asset_type_rec.asset_type = 'GROUP') then
2507 update fa_books_mrc_v
2508 set adjustment_required_status = 'NONE'
2509 , adjusted_cost = l_grp_src_asset_fin_rec_new.adjusted_cost
2510 , rate_adjustment_factor = l_grp_src_asset_fin_rec_new.rate_adjustment_factor
2511 , formula_factor = l_grp_src_asset_fin_rec_new.formula_factor
2512 , salvage_value = l_grp_src_asset_fin_rec_new.salvage_value
2513 , allowed_deprn_limit_amount = l_grp_src_asset_fin_rec_new.allowed_deprn_limit_amount
2514 , recoverable_cost = l_grp_src_asset_fin_rec_new.recoverable_cost
2515 , adjusted_recoverable_cost = l_grp_src_asset_fin_rec_new.adjusted_recoverable_cost
2516 , adjusted_capacity = l_grp_src_asset_fin_rec_new.adjusted_capacity
2517 , reval_amortization_basis = l_grp_src_asset_fin_rec_new.reval_amortization_basis
2518 , eofy_reserve = l_grp_src_asset_fin_rec_new.eofy_reserve
2519 where asset_id = l_src_asset
2520 and book_type_code = p_trx_ref_rec.book_type_code
2521 and transaction_header_id_out is null;
2522 else
2523 update fa_books_mrc_v
2524 set adjustment_required_status = 'NONE'
2525 where asset_id = l_src_asset
2526 and book_type_code = p_trx_ref_rec.book_type_code
2527 and transaction_header_id_out is null;
2528 end if;
2529
2530 if (l_dest_asset_type_rec.asset_type = 'GROUP') then
2531 update fa_books_mrc_v
2532 set adjustment_required_status = 'NONE'
2533 , adjusted_cost = l_dest_asset_fin_rec_new.adjusted_cost
2534 , rate_adjustment_factor = l_dest_asset_fin_rec_new.rate_adjustment_factor
2535 , formula_factor = l_dest_asset_fin_rec_new.formula_factor
2536 , salvage_value = l_dest_asset_fin_rec_new.salvage_value
2537 , allowed_deprn_limit_amount = l_dest_asset_fin_rec_new.allowed_deprn_limit_amount
2538 , recoverable_cost = l_dest_asset_fin_rec_new.recoverable_cost
2539 , adjusted_recoverable_cost = l_dest_asset_fin_rec_new.adjusted_recoverable_cost
2540 , adjusted_capacity = l_dest_asset_fin_rec_new.adjusted_capacity
2541 , reval_amortization_basis = l_dest_asset_fin_rec_new.reval_amortization_basis
2542 , eofy_reserve = l_dest_asset_fin_rec_new.eofy_reserve
2543 where asset_id = l_dest_asset
2544 and book_type_code = p_trx_ref_rec.book_type_code
2545 and transaction_header_id_out is null;
2546 else
2547 update fa_books_mrc_v
2548 set adjustment_required_status = 'NONE'
2549 where asset_id = l_dest_asset
2550 and book_type_code = p_trx_ref_rec.book_type_code
2551 and transaction_header_id_out is null;
2552 end if;
2553 end if;
2554
2555 --
2556 -- Source group is the only potential group requires terminal gain loss
2557 -- calculation.
2558 --
2559 if not FA_RETIREMENT_PVT.Check_Terminal_Gain_Loss(
2560 p_trans_rec => l_grp_src_trans_rec,
2561 p_asset_hdr_rec => l_grp_src_asset_hdr_rec,
2562 p_asset_type_rec => l_grp_src_asset_type_rec,
2563 p_asset_fin_rec => l_grp_src_asset_fin_rec_new,
2564 p_period_rec => l_period_rec,
2565 p_mrc_sob_type_code => p_mrc_sob_type_code,
2566 p_calling_fn => l_calling_fn,
2567 p_log_level_rec => p_log_level_rec) then
2568 if (p_log_level_rec.statement_level) then
2569 fa_debug_pkg.add(l_calling_fn, 'Failed Calling',
2570 ' FA_RETIREMENT_PVT.Check_Terminal_Gain_Loss',
2571 p_log_level_rec => p_log_level_rec);
2572 end if;
2573 raise group_rec_err;
2574 end if;
2575
2576 --
2577 -- Initialize Member Tables
2578 --
2579 FA_AMORT_PVT.initMemberTable;
2580
2581 if (p_log_level_rec.statement_level) then
2582 fa_debug_pkg.add(l_calling_fn,
2583 'FA_GROUP_RECLASS2_PVT.do_adjustment END',
2584 'RECLASS PROCESSED FOR SOURCE AND DEST',
2585 p_log_level_rec => p_log_level_rec);
2586 end if;
2587
2588 return TRUE;
2589
2590 EXCEPTION
2591
2592 WHEN GROUP_REC_ERR THEN
2593 fa_srvr_msg.add_message(calling_fn => l_calling_fn
2594 ,p_log_level_rec => p_log_level_rec);
2595 return FALSE;
2596
2597 WHEN OTHERS THEN
2598 fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn
2599 ,p_log_level_rec => p_log_level_rec);
2600 return FALSE;
2601
2602 END do_group_reclass;
2603
2604 END FA_PROCESS_GROUPS_PKG;