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