[Home] [Help]
PACKAGE BODY: APPS.FA_AMORT_PVT
Source
1 PACKAGE BODY FA_AMORT_PVT as
2 /* $Header: FAVAMRTB.pls 120.275.12020000.8 2013/03/29 11:30:29 saalampa ship $ */
3
4
5 /* Global temporary variables */
6 g_temp_date1 date;
7 g_temp_date2 date;
8 g_temp_integer BINARY_INTEGER;
9 g_temp_number number;
10 g_temp_char30 varchar2(30);
11
12 g_release number := fa_cache_pkg.fazarel_release; -- Bug#8605817
13
14 /* Global constant variables */
15
16 G_ASSET_TYPE_GROUP varchar2(5) := 'GROUP';
17 G_TRX_TYPE_TFR_OUT varchar2(30) := 'TRANSFER OUT';
18 G_TRX_TYPE_TFR_IN varchar2(30) := 'TRANSFER IN';
19 G_TRX_TYPE_TFR varchar2(30) := 'TRANSFER';
20 G_TRX_TYPE_TFR_VOID varchar2(30) := 'TRANSFER IN/VOID';
21 G_TRX_TYPE_REI varchar2(30) := 'REINSTATEMENT';
22 G_TRX_TYPE_FUL_RET varchar2(30) := 'FULL RETIREMENT';
23 G_TRX_TYPE_PAR_RET varchar2(30) := 'PARTIAL RETIREMENT';
24 G_TRX_TYPE_GRP_CHG varchar2(30) := 'GROUP CHANGE';
25 G_TRX_TYPE_REC varchar2(30) := 'RECLASS';
26 G_TRX_TYPE_UNIT_ADJ varchar2(30) := 'UNIT ADJUSTMENT';
27 G_TRX_TYPE_REV varchar2(30) := 'REVALUATION';
28 G_TRX_TYPE_TAX varchar2(30) := 'TAX';
29 G_TRX_TYPE_ADD_VOID varchar2(30) := 'ADDITION/VOID'; -- Bug#5074327
30 G_TRX_TYPE_CIP_ADJ varchar2(30) := 'CIP ADJUSTMENT'; -- Bug#5191200
31 G_TRX_TYPE_ADD varchar2(30) := 'ADDITION';
32 G_TRX_TYPE_ADJ varchar2(30) := 'ADJUSTMENT';
33 G_TRX_TYPE_CIP_ADD_VOID varchar2(30) := 'CIP ADDITION/VOID'; -- Bug:6019450
34 G_TRX_TYPE_CIP_ADD varchar2(30) := 'CIP ADDITION'; -- Bug:6798953
35
36 /* Global temporary variables for member asset */
37 g_mem_deprn_reserve NUMBER;
38 g_mem_eofy_reserve NUMBER;
39 g_mem_ytd_deprn NUMBER;
40 g_mem_bonus_ytd_deprn NUMBER;
41 g_mem_bonus_deprn_reserve NUMBER;
42 g_mem_ytd_impairment NUMBER;
43 g_mem_impairment_reserve NUMBER;
44 g_mem_asset_id NUMBER;
45
46 --bug 12739028
47 g_deprn_ch_trx_id NUMBER;
48
49 --Bug 5149789
50 FUNCTION check_member_existence (
51 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
52 RETURN BOOLEAN;
53
54 --Bug4938977: Adding a private function.
55 FUNCTION check_dpis_change (
56 p_book_type_code VARCHAR2,
57 p_transaction_header_id NUMBER,
58 p_group_asset_id NUMBER,
59 x_asset_fin_rec OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
60 x_period_counter_out OUT NOCOPY NUMBER,
61 p_mrc_sob_type_code VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
62 RETURN BOOLEAN;
63
64 -- Bug 8398064
65 -- To identify overlapping retirements, we need fn to convert txn date
66 -- to corresponding deprn period ctr
67 --
68 FUNCTION get_dcal_pc ( pp_book_type_code in varchar2, pp_date in date, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
69 return number is
70 l_pc number := 0;
71 l_calling_fn varchar2(40) := 'FA_AMORT_PVT.get_dcal_pc';
72 BEGIN
73 SELECT fcp.period_num +( fct.number_per_fiscal_year * ffy.fiscal_year)
74 INTO l_pc
75 FROM fa_calendar_periods fcp, fa_calendar_types fct, fa_fiscal_year ffy
76 WHERE pp_date BETWEEN fcp.start_date AND fcp.end_date
77 AND pp_date BETWEEN ffy.start_date AND ffy.end_date
78 AND fct.calendar_type = fcp.calendar_type
79 AND ffy.fiscal_year_name = fa_cache_pkg.fazcbc_record.fiscal_year_name
80 AND fct.calendar_type = fa_cache_pkg.fazcbc_record.deprn_calendar;
81
82 RETURN l_pc;
83 EXCEPTION WHEN OTHERS THEN
84 if (p_log_level_rec.statement_level) then
85 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
86 end if;
87
88 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn);
89 return 0;
90 END;
91 -- End Bug 8398064
92
93 PROCEDURE printBooksSummary(p_asset_id number,
94 p_book_type_code varchar2,
95 p_period_counter number default 0, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) IS
96
97 CURSOR c_get_books_summary IS
98 select period_counter
99 , cost
100 -- , salvage_value
101 , member_salvage_value
102 , allowed_deprn_limit_amount
103 , adjusted_rate
104 , rate_adjustment_factor
105 , deprn_adjustment_amount
106 , deprn_amount
107 , ytd_deprn
108 , reserve_adjustment_amount
109 , deprn_reserve
110 from fa_books_summary
111 where asset_id = p_asset_id
112 and book_type_code = p_book_type_code
113 and period_counter >= nvl(p_period_counter, 1);
114
115 BEGIN
116
117 --tk_util.debug('period#: cost: sal: art: raf: eaj: exp: ytd: rsvadj: rsv');
118 /*
119 for r_bs in c_get_books_summary loop
120 --tk_util.debug(rpad(to_char(r_bs.period_counter), 7, ' ')||':'||
121 lpad(to_char(r_bs.cost), 10, ' ')||':'||
122 lpad(to_char(r_bs.member_salvage_value), 9, ' ')||':'||
123 lpad(nvl(to_char(r_bs.allowed_deprn_limit_amount), 'null'), 9, ' ')||':'||
124 lpad(to_char(r_bs.adjusted_rate), 9, ' ')||':'||
128 lpad(to_char(r_bs.ytd_deprn), 10, ' ')||':'||
125 lpad(substrb(to_char(r_bs.rate_adjustment_factor), 1, 10), 10, ' ')||':'||
126 lpad(to_char(r_bs.deprn_adjustment_amount), 9, ' ')||':'||
127 lpad(to_char(r_bs.deprn_amount), 9, ' ')||':'||
129 lpad(to_char(r_bs.reserve_adjustment_amount), 10, ' ')||':'||
130 lpad(to_char(r_bs.deprn_reserve), 10, ' ')
131 );
132 end loop;
133 */
134 null;
135 END printBooksSummary;
136
137 --+==============================================================================
138 -- Function: GetPeriodInfo
139 --
140 -- This function return period information.
141 -- The function should be called when period information is not available in
142 -- fa_deprn_periods, for all other cases, should call fazcdp to obtain period
143 -- information.
144 --+==============================================================================
145 FUNCTION GetPeriodInfo(
146 p_jdate NUMBER,
147 p_book_type_code VARCHAR2,
148 p_mrc_sob_type_code VARCHAR2,
149 p_set_of_books_id NUMBER,
150 x_period_rec OUT NOCOPY FA_API_TYPES.period_rec_type
151 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return BOOLEAN IS
152
153 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.GetPeriodInfo';
154 get_err EXCEPTION;
155
156 CURSOR c_get_deprn_period_info IS
157 select period_counter
158 , period_name
159 , period_open_date
160 , period_close_date
161 , calendar_period_open_date
162 , calendar_period_close_date
163 , fiscal_year
164 , period_num
165 from fa_deprn_periods
166 where book_type_code = p_book_type_code
167 and to_date (to_char (p_jdate), 'J') between calendar_period_open_date
168 and calendar_period_close_date;
169
170 CURSOR c_get_mc_deprn_period_info IS
171 select period_counter
172 , period_name
173 , period_open_date
174 , period_close_date
175 , calendar_period_open_date
176 , calendar_period_close_date
177 , fiscal_year
178 , period_num
179 from fa_mc_deprn_periods
180 where set_of_books_id = p_set_of_books_id
181 and book_type_code = p_book_type_code
182 and to_date (to_char (p_jdate), 'J') between calendar_period_open_date
183 and calendar_period_close_date;
184
185 CURSOR c_get_period_info IS
186 select start_date
187 , end_date
188 from fa_calendar_periods
189 where calendar_type = fa_cache_pkg.fazcbc_record.deprn_calendar
190 and to_date (to_char (p_jdate), 'J') between start_date
191 and end_date;
192
193 BEGIN
194 if (p_log_level_rec.statement_level) then
195 fa_debug_pkg.add(l_calling_fn, 'Begin', p_jdate, p_log_level_rec => p_log_level_rec);
196 end if;
197
198 if p_mrc_sob_type_code = 'R' then
199 OPEN c_get_mc_deprn_period_info;
200 FETCH c_get_mc_deprn_period_info INTO x_period_rec.period_counter
201 , x_period_rec.period_name
202 , x_period_rec.period_open_date
203 , x_period_rec.period_close_date
204 , x_period_rec.calendar_period_open_date
205 , x_period_rec.calendar_period_close_date
206 , x_period_rec.fiscal_year
207 , x_period_rec.period_num;
208
209 if (c_get_mc_deprn_period_info%NOTFOUND) then
210
211 if not fa_cache_pkg.fazcct(fa_cache_pkg.fazcbc_record.deprn_calendar, p_log_level_rec => p_log_level_rec) then
212 raise get_err;
213 end if;
214
215 if not fa_cache_pkg.fazccp(fa_cache_pkg.fazcbc_record.deprn_calendar,
216 fa_cache_pkg.fazcbc_record.fiscal_year_name,
217 p_jdate,
218 x_period_rec.period_num,
219 x_period_rec.fiscal_year,
220 g_temp_number, p_log_level_rec => p_log_level_rec) then
221 raise get_err;
222 end if;
223
224 x_period_rec.period_counter := x_period_rec.fiscal_year *
225 fa_cache_pkg.fazcct_record.NUMBER_PER_FISCAL_YEAR +
226 x_period_rec.period_num;
227
228 OPEN c_get_period_info;
229 FETCH c_get_period_info INTO x_period_rec.calendar_period_open_date,
230 x_period_rec.calendar_period_close_date;
231 CLOSE c_get_period_info;
232
233 end if;
234
235 CLOSE c_get_mc_deprn_period_info;
236
237 else -- Primary book
238
239 OPEN c_get_deprn_period_info;
240 FETCH c_get_deprn_period_info INTO x_period_rec.period_counter
241 , x_period_rec.period_name
242 , x_period_rec.period_open_date
243 , x_period_rec.period_close_date
244 , x_period_rec.calendar_period_open_date
245 , x_period_rec.calendar_period_close_date
246 , x_period_rec.fiscal_year
247 , x_period_rec.period_num;
248
249 if (c_get_deprn_period_info%NOTFOUND) then
250
251 if not fa_cache_pkg.fazcct(fa_cache_pkg.fazcbc_record.deprn_calendar, p_log_level_rec => p_log_level_rec) then
252 raise get_err;
253 end if;
254
255 if not fa_cache_pkg.fazccp(fa_cache_pkg.fazcbc_record.deprn_calendar,
256 fa_cache_pkg.fazcbc_record.fiscal_year_name,
257 p_jdate,
258 x_period_rec.period_num,
259 x_period_rec.fiscal_year,
260 g_temp_number, p_log_level_rec => p_log_level_rec) then
261 raise get_err;
262 end if;
263
264 x_period_rec.period_counter := x_period_rec.fiscal_year *
265 fa_cache_pkg.fazcct_record.NUMBER_PER_FISCAL_YEAR +
266 x_period_rec.period_num;
267
268 OPEN c_get_period_info;
269 FETCH c_get_period_info INTO x_period_rec.calendar_period_open_date,
270 x_period_rec.calendar_period_close_date;
271 CLOSE c_get_period_info;
272
273 end if;
274
275 CLOSE c_get_deprn_period_info;
276
277 end if;
278
279 if (p_log_level_rec.statement_level) then
280 fa_debug_pkg.add(l_calling_fn, 'End', x_period_rec.period_counter||':'||
281 x_period_rec.fiscal_year||':'||
282 x_period_rec.period_num||':'||
283 to_char(x_period_rec.calendar_period_open_date, 'DD-MON-YYYY')||':'||
284 to_char(x_period_rec.calendar_period_close_date, 'DD-MON-YYYY'));
285 end if;
286
287 return TRUE;
288
289 EXCEPTION
290 WHEN get_err THEN
291 if (p_log_level_rec.statement_level) then
292 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'get_err', p_log_level_rec => p_log_level_rec);
293 end if;
294
295 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
296 return false;
297
298 WHEN others THEN
299 if (p_log_level_rec.statement_level) then
300 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
301 end if;
302
303 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
304 return false;
305
306 END GetPeriodInfo;
307
308
309 --+==============================================================================
310 -- Function catchupBooksSummary
311 --
312 -- This function will create missing records from period where last record
313 -- exists up to current period.
314 --+==============================================================================
315 FUNCTION catchupBooksSummary (
316 p_trans_rec FA_API_TYPES.trans_rec_type,
317 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
318 p_period_rec FA_API_TYPES.period_rec_type,
319 p_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type,
320 p_depreciate_flag_change BOOLEAN,
321 p_disabled_flag_change BOOLEAN,
322 p_mrc_sob_type_code VARCHAR2,
323 p_calling_fn VARCHAR
324 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
325
326 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.catchupBooksSummary';
327
328 CURSOR c_get_mc_last_period_counter IS
329 select bs.period_counter
330 , bs.calendar_period_close_date
331 , bs.fiscal_year
332 , bs.period_num
333 from fa_mc_books_summary bs
334 where bs.asset_id = p_asset_hdr_rec.asset_id
335 and bs.book_type_code = p_asset_hdr_rec.book_type_code
336 and bs.set_of_books_id = p_asset_hdr_rec.set_of_books_id
337 order by period_counter desc;
338
339 CURSOR c_get_last_period_counter IS
340 select bs.period_counter
341 , bs.calendar_period_close_date
342 , bs.fiscal_year
343 , bs.period_num
344 from fa_books_summary bs
345 where bs.asset_id = p_asset_hdr_rec.asset_id
346 and bs.book_type_code = p_asset_hdr_rec.book_type_code
347 order by period_counter desc;
348
349 --
350 -- Get all possible period information that the group asset needs
351 --
352 CURSOR c_get_period_rec (c_start_date date) IS
353 select fy.fiscal_year * ct.NUMBER_PER_FISCAL_YEAR + cp.PERIOD_NUM period_counter
354 , cp.start_date calendar_period_open_date
355 , cp.end_date calendar_period_close_date
356 , cp.period_num period_num
357 , fy.fiscal_year fiscal_year
358 , 'N'
359 from fa_book_controls bc
360 , fa_fiscal_year fy
361 , fa_calendar_types ct
362 , fa_calendar_periods cp
363 where bc.book_type_code = p_asset_hdr_rec.book_type_code
364 and bc.deprn_calendar = ct.calendar_type
365 and bc.fiscal_year_name = fy.fiscal_year_name
366 and ct.fiscal_year_name = bc.fiscal_year_name
367 and ct.calendar_type = cp.calendar_type
368 and cp.start_date between fy.start_date and fy.end_date
369 and bc.last_period_counter + 1 >= fy.fiscal_year * ct.NUMBER_PER_FISCAL_YEAR + cp.PERIOD_NUM
370 and cp.end_date >= c_start_date
371 order by period_counter;
372
373 tbs_period_counter tab_num15_type;
374 tbs_calendar_period_open_date tab_date_type;
375 tbs_calendar_period_close_date tab_date_type;
376 tbs_period_num tab_num15_type;
377 tbs_fiscal_year tab_num15_type;
378 tbs_reset_adjusted_cost_flag tab_char1_type;
379
380 tbs_adjusted_cost tab_num_type;
381 tbs_eofy_adj_cost tab_num_type;
382 tbs_eofy_formula_factor tab_num_type;
383 tbs_eofy_reserve tab_num_type;
384 tbs_eop_adj_cost tab_num_type;
385 tbs_eop_formula_factor tab_num_type;
386 tbs_depreciate_flag tab_char1_type;
387 tbs_disabled_flag tab_char1_type;
388 tbs_formula_factor tab_num_type;
389
390 tbs_ytd_deprn tab_num_type;
391 tbs_bonus_ytd_deprn tab_num_type;
392 tbs_ytd_impairment tab_num_type;
393 tbs_ytd_production tab_num_type;
394 tbs_ytd_reval_deprn_expense tab_num_type;
395 tbs_ytd_proceeds_of_sale tab_num_type;
396 tbs_ytd_cost_of_removal tab_num_type;
397
398 l_last_period_counter NUMBER(15);
399 l_last_period_close_date DATE;
400 l_last_fiscal_year NUMBER(15);
401 l_last_period_num NUMBER(15);
402
403 l_ind BINARY_INTEGER;
404
405 --
406 -- Think about unplan, reserve tr, and ret adj against asset not depreciating
407 --
408
409 BEGIN
410 if (p_log_level_rec.statement_level) then
411 fa_debug_pkg.add(l_calling_fn||'()+', 'asset_id', p_asset_hdr_rec.asset_id);
412 end if;
413
414 if p_mrc_sob_type_code = 'R' then
415
416 OPEN c_get_mc_last_period_counter;
417 FETCH c_get_mc_last_period_counter INTO l_last_period_counter
418 , l_last_period_close_date
419 , l_last_fiscal_year
420 , l_last_period_num;
421 CLOSE c_get_mc_last_period_counter;
422 else
423 OPEN c_get_last_period_counter;
424 FETCH c_get_last_period_counter INTO l_last_period_counter
425 , l_last_period_close_date
426 , l_last_fiscal_year
427 , l_last_period_num;
428 CLOSE c_get_last_period_counter;
429 end if;
430
431 if (p_log_level_rec.statement_level) then
432 fa_debug_pkg.add(l_calling_fn, 'l_last_period_counter', l_last_period_counter, p_log_level_rec => p_log_level_rec);
433 fa_debug_pkg.add(l_calling_fn, 'l_last_period_close_date', l_last_period_close_date, p_log_level_rec => p_log_level_rec);
434 end if;
435
436 if (p_period_rec.period_counter = l_last_period_counter) then
437 if (p_log_level_rec.statement_level) then
438 fa_debug_pkg.add(l_calling_fn, 'This asset has record up to current period',l_last_period_counter, p_log_level_rec => p_log_level_rec);
439 fa_debug_pkg.add(l_calling_fn||'()-', 'asset_id', p_asset_hdr_rec.asset_id);
440 end if;
441
442 return TRUE;
443
444 end if;
445
446 --
447 -- This asset needs records up to current period
448 --
449 OPEN c_get_period_rec ((l_last_period_close_date + 1));
450 FETCH c_get_period_rec BULK COLLECT INTO tbs_period_counter
451 , tbs_calendar_period_open_date
452 , tbs_calendar_period_close_date
453 , tbs_period_num
454 , tbs_fiscal_year
455 , tbs_reset_adjusted_cost_flag
456 ;
457 CLOSE c_get_period_rec;
458
459 if (p_log_level_rec.statement_level) then
460 fa_debug_pkg.add(l_calling_fn, '# of record creating', tbs_period_counter.COUNT, p_log_level_rec => p_log_level_rec);
461 end if;
462
463 l_ind := p_period_rec.period_counter - l_last_period_counter;
464 FOR i in 1..l_ind LOOP
465 --
466 -- If anything requires table value manipulation for each period
467 -- this is the place. So far, it's been absorved in insert statement.
468 null;
469
470 END LOOP; -- i in 1..(p_period_rec.period_counter - l_last_period_counter)
471
472
473 if (p_log_level_rec.statement_level) then
474 fa_debug_pkg.add(l_calling_fn, 'Insert into', 'FA_BOOKS_SUMMARY', p_log_level_rec => p_log_level_rec);
475 end if;
476 --
477 -- Insert all necessary records from period where DPIS falls into
478 --
479 if p_mrc_sob_type_code = 'R' then
480 FORALL i in tbs_period_counter.FIRST..tbs_period_counter.LAST
481 INSERT INTO FA_MC_BOOKS_SUMMARY(
482 SET_OF_BOOKS_ID
483 , ASSET_ID
484 , BOOK_TYPE_CODE
485 , PERIOD_COUNTER
486 , FISCAL_YEAR
487 , PERIOD_NUM
488 , CALENDAR_PERIOD_OPEN_DATE
489 , CALENDAR_PERIOD_CLOSE_DATE
490 , RESET_ADJUSTED_COST_FLAG
491 , CHANGE_IN_COST
492 , CHANGE_IN_ADDITIONS_COST
493 , CHANGE_IN_ADJUSTMENTS_COST
494 , CHANGE_IN_RETIREMENTS_COST
495 , CHANGE_IN_CIP_COST
496 , COST
497 , CIP_COST
498 , SALVAGE_TYPE
499 , PERCENT_SALVAGE_VALUE
500 , SALVAGE_VALUE
501 , MEMBER_SALVAGE_VALUE
502 , RECOVERABLE_COST
503 , DEPRN_LIMIT_TYPE
504 , ALLOWED_DEPRN_LIMIT
505 , ALLOWED_DEPRN_LIMIT_AMOUNT
506 , MEMBER_DEPRN_LIMIT_AMOUNT
507 , ADJUSTED_RECOVERABLE_COST
508 , ADJUSTED_COST
509 , DEPRECIATE_FLAG
510 , DISABLED_FLAG
511 , DATE_PLACED_IN_SERVICE
512 , DEPRN_METHOD_CODE
513 , LIFE_IN_MONTHS
514 , RATE_ADJUSTMENT_FACTOR
515 , ADJUSTED_RATE
516 , FORMULA_FACTOR
517 , BONUS_RULE
518 , ADJUSTED_CAPACITY
519 , PRODUCTION_CAPACITY
520 , UNIT_OF_MEASURE
521 , REMAINING_LIFE1
522 , REMAINING_LIFE2
523 , UNREVALUED_COST
524 , REVAL_CEILING
525 , CEILING_NAME
526 , REVAL_AMORTIZATION_BASIS
527 , EOFY_ADJ_COST
528 , EOFY_FORMULA_FACTOR
529 , EOFY_RESERVE
530 , EOP_ADJ_COST
531 , EOP_FORMULA_FACTOR
532 , SHORT_FISCAL_YEAR_FLAG
533 , GROUP_ASSET_ID
534 , SUPER_GROUP_ID
535 , OVER_DEPRECIATE_OPTION
536 , TERMINAL_GAIN_LOSS_AMOUNT
537 , TERMINAL_GAIN_LOSS_FLAG
538 , DEPRN_AMOUNT
539 , YTD_DEPRN
540 , DEPRN_RESERVE
541 , BONUS_DEPRN_AMOUNT
542 , BONUS_YTD_DEPRN
543 , BONUS_DEPRN_RESERVE
544 , IMPAIRMENT_AMOUNT
545 , impairment_reserve
546 , YTD_IMPAIRMENT
547 , LTD_PRODUCTION
548 , YTD_PRODUCTION
549 , PRODUCTION
550 , REVAL_AMORTIZATION
551 , REVAL_DEPRN_EXPENSE
552 , REVAL_RESERVE
553 , YTD_REVAL_DEPRN_EXPENSE
554 , DEPRN_OVERRIDE_FLAG
555 , SYSTEM_DEPRN_AMOUNT
556 , YTD_PROCEEDS_OF_SALE
557 , LTD_PROCEEDS_OF_SALE
558 , YTD_COST_OF_REMOVAL
559 , LTD_COST_OF_REMOVAL
560 , DEPRN_ADJUSTMENT_AMOUNT
561 , EXPENSE_ADJUSTMENT_AMOUNT
562 , UNPLANNED_AMOUNT
563 , RESERVE_ADJUSTMENT_AMOUNT
564 , CREATION_DATE
565 , CREATED_BY
566 , LAST_UPDATE_DATE
567 , LAST_UPDATED_BY
568 )
569 SELECT p_asset_hdr_rec.set_of_books_id
573 , tbs_fiscal_year(i)
570 , p_asset_hdr_rec.asset_id
571 , p_asset_hdr_rec.book_type_code
572 , tbs_period_counter(i)
574 , tbs_period_num(i)
575 , tbs_calendar_period_open_date(i)
576 , tbs_calendar_period_close_date(i)
577 , tbs_reset_adjusted_cost_flag(i)
578 , 0 --CHANGE_IN_COST
579 , 0 --CHANGE_IN_ADDITIONS_COST
580 , 0 --CHANGE_IN_ADJUSTMENTS_COST
581 , 0 --CHANGE_IN_RETIREMENTS_COST
582 , 0 --CHANGE_IN_CIP_COST
583 , BS.COST
584 , BS.CIP_COST
585 , BS.SALVAGE_TYPE
586 , BS.PERCENT_SALVAGE_VALUE
587 , BS.SALVAGE_VALUE
588 , BS.MEMBER_SALVAGE_VALUE
589 , BS.RECOVERABLE_COST
590 , BS.DEPRN_LIMIT_TYPE
591 , BS.ALLOWED_DEPRN_LIMIT
592 , BS.ALLOWED_DEPRN_LIMIT_AMOUNT
593 , BS.MEMBER_DEPRN_LIMIT_AMOUNT
594 , BS.ADJUSTED_RECOVERABLE_COST
595 , BS.ADJUSTED_COST
596 , BS.DEPRECIATE_FLAG
597 , BS.DISABLED_FLAG
598 , BS.DATE_PLACED_IN_SERVICE
599 , BS.DEPRN_METHOD_CODE
600 , BS.LIFE_IN_MONTHS
601 , BS.RATE_ADJUSTMENT_FACTOR
602 , BS.ADJUSTED_RATE
603 , BS.FORMULA_FACTOR
604 , BS.BONUS_RULE
605 , BS.ADJUSTED_CAPACITY
606 , BS.PRODUCTION_CAPACITY
607 , BS.UNIT_OF_MEASURE
608 , BS.REMAINING_LIFE1
609 , BS.REMAINING_LIFE2
610 , BS.UNREVALUED_COST
611 , BS.REVAL_CEILING
612 , BS.CEILING_NAME
613 , BS.REVAL_AMORTIZATION_BASIS
614 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.EOFY_ADJ_COST, BS.ADJUSTED_COST) --EOFY_ADJ_COST
615 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.EOFY_FORMULA_FACTOR, BS.FORMULA_FACTOR) --EOFY_FORMULA_FACTOR
616 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.EOFY_RESERVE,
617 tbs_fiscal_year(i) - 1, BS.DEPRN_RESERVE, 0) --EOFY_RESERVE
618 , BS.ADJUSTED_COST --EOP_ADJ_COST
619 , BS.FORMULA_FACTOR --EOP_FORMULA_FACTOR
620 , BS.SHORT_FISCAL_YEAR_FLAG
621 , BS.GROUP_ASSET_ID
622 , BS.SUPER_GROUP_ID
623 , BS.OVER_DEPRECIATE_OPTION
624 , 0 --TERMINAL_GAIN_LOSS_AMOUNT
625 , 'N' --TERMINAL_GAIN_LOSS_FLAG
626 , 0 --DEPRN_AMOUNT
627 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_DEPRN, 0) --YTD_DEPRN
628 , BS.DEPRN_RESERVE
629 , 0 --BONUS_DEPRN_AMOUNT
630 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.BONUS_YTD_DEPRN, 0) --BONUS_YTD_DEPRN
631 , BS.BONUS_DEPRN_RESERVE
632 , 0 --IMPAIRMENT_AMOUNT
633 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_IMPAIRMENT, 0) --YTD_IMPAIRMENT
634 , BS.impairment_reserve
635 , BS.LTD_PRODUCTION
636 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_PRODUCTION, 0) --YTD_PRODUCTION
637 , null --PRODUCTION
638 , 0 --REVAL_AMORTIZATION
639 , 0 --REVAL_DEPRN_EXPENSE
640 , BS.REVAL_RESERVE
641 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_REVAL_DEPRN_EXPENSE, 0) --YTD_REVAL_DEPRN_EXPENSE
642 , 'N' --DEPRN_OVERRIDE_FLAG
643 , 0 --SYSTEM_DEPRN_AMOUNT
644 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_PROCEEDS_OF_SALE, 0) --YTD_PROCEEDS_OF_SALE
645 , BS.LTD_PROCEEDS_OF_SALE
646 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_COST_OF_REMOVAL, 0) --YTD_COST_OF_REMOVAL
647 , BS.LTD_COST_OF_REMOVAL
648 , 0 --DEPRN_ADJUSTMENT_AMOUNT
649 , 0 --EXPENSE_ADJUSTMENT_AMOUNT
650 , 0 --UNPLANNED_AMOUNT
651 , 0 --RESERVE_ADJUSTMENT_AMOUNT
652 , p_trans_rec.who_info.creation_date
653 , p_trans_rec.who_info.created_by
654 , p_trans_rec.who_info.last_update_date
655 , p_trans_rec.who_info.last_updated_by
656 FROM FA_MC_BOOKS_SUMMARY BS
657 WHERE BS.ASSET_ID = p_asset_hdr_rec.asset_id
658 AND BS.BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
659 AND BS.period_counter = l_last_period_counter
660 AND BS.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
661
662 else
663 FORALL i in tbs_period_counter.FIRST..tbs_period_counter.LAST
664 INSERT INTO FA_BOOKS_SUMMARY(
665 ASSET_ID
666 , BOOK_TYPE_CODE
667 , PERIOD_COUNTER
668 , FISCAL_YEAR
669 , PERIOD_NUM
670 , CALENDAR_PERIOD_OPEN_DATE
671 , CALENDAR_PERIOD_CLOSE_DATE
672 , RESET_ADJUSTED_COST_FLAG
673 , CHANGE_IN_COST
674 , CHANGE_IN_ADDITIONS_COST
675 , CHANGE_IN_ADJUSTMENTS_COST
676 , CHANGE_IN_RETIREMENTS_COST
677 , CHANGE_IN_CIP_COST
681 , PERCENT_SALVAGE_VALUE
678 , COST
679 , CIP_COST
680 , SALVAGE_TYPE
682 , SALVAGE_VALUE
683 , MEMBER_SALVAGE_VALUE
684 , RECOVERABLE_COST
685 , DEPRN_LIMIT_TYPE
686 , ALLOWED_DEPRN_LIMIT
687 , ALLOWED_DEPRN_LIMIT_AMOUNT
688 , MEMBER_DEPRN_LIMIT_AMOUNT
689 , ADJUSTED_RECOVERABLE_COST
690 , ADJUSTED_COST
691 , DEPRECIATE_FLAG
692 , DISABLED_FLAG
693 , DATE_PLACED_IN_SERVICE
694 , DEPRN_METHOD_CODE
695 , LIFE_IN_MONTHS
696 , RATE_ADJUSTMENT_FACTOR
697 , ADJUSTED_RATE
698 , FORMULA_FACTOR
699 , BONUS_RULE
700 , ADJUSTED_CAPACITY
701 , PRODUCTION_CAPACITY
702 , UNIT_OF_MEASURE
703 , REMAINING_LIFE1
704 , REMAINING_LIFE2
705 , UNREVALUED_COST
706 , REVAL_CEILING
707 , CEILING_NAME
708 , REVAL_AMORTIZATION_BASIS
709 , EOFY_ADJ_COST
710 , EOFY_FORMULA_FACTOR
711 , EOFY_RESERVE
712 , EOP_ADJ_COST
713 , EOP_FORMULA_FACTOR
714 , SHORT_FISCAL_YEAR_FLAG
715 , GROUP_ASSET_ID
716 , SUPER_GROUP_ID
717 , OVER_DEPRECIATE_OPTION
718 , TERMINAL_GAIN_LOSS_AMOUNT
719 , TERMINAL_GAIN_LOSS_FLAG
720 , DEPRN_AMOUNT
721 , YTD_DEPRN
722 , DEPRN_RESERVE
723 , BONUS_DEPRN_AMOUNT
724 , BONUS_YTD_DEPRN
725 , BONUS_DEPRN_RESERVE
726 , IMPAIRMENT_AMOUNT
727 , impairment_reserve
728 , YTD_IMPAIRMENT
729 , LTD_PRODUCTION
730 , YTD_PRODUCTION
731 , PRODUCTION
732 , REVAL_AMORTIZATION
733 , REVAL_DEPRN_EXPENSE
734 , REVAL_RESERVE
735 , YTD_REVAL_DEPRN_EXPENSE
736 , DEPRN_OVERRIDE_FLAG
737 , SYSTEM_DEPRN_AMOUNT
738 , YTD_PROCEEDS_OF_SALE
739 , LTD_PROCEEDS_OF_SALE
740 , YTD_COST_OF_REMOVAL
741 , LTD_COST_OF_REMOVAL
742 , DEPRN_ADJUSTMENT_AMOUNT
743 , EXPENSE_ADJUSTMENT_AMOUNT
744 , UNPLANNED_AMOUNT
745 , RESERVE_ADJUSTMENT_AMOUNT
746 , CREATION_DATE
747 , CREATED_BY
748 , LAST_UPDATE_DATE
749 , LAST_UPDATED_BY
750 )
751 SELECT p_asset_hdr_rec.asset_id
752 , p_asset_hdr_rec.book_type_code
753 , tbs_period_counter(i)
754 , tbs_fiscal_year(i)
755 , tbs_period_num(i)
756 , tbs_calendar_period_open_date(i)
757 , tbs_calendar_period_close_date(i)
758 , tbs_reset_adjusted_cost_flag(i)
759 , 0 --CHANGE_IN_COST
760 , 0 --CHANGE_IN_ADDITIONS_COST
761 , 0 --CHANGE_IN_ADJUSTMENTS_COST
762 , 0 --CHANGE_IN_RETIREMENTS_COST
763 , 0 --CHANGE_IN_CIP_COST
764 , BS.COST
765 , BS.CIP_COST
766 , BS.SALVAGE_TYPE
767 , BS.PERCENT_SALVAGE_VALUE
768 , BS.SALVAGE_VALUE
769 , BS.MEMBER_SALVAGE_VALUE
770 , BS.RECOVERABLE_COST
771 , BS.DEPRN_LIMIT_TYPE
772 , BS.ALLOWED_DEPRN_LIMIT
773 , BS.ALLOWED_DEPRN_LIMIT_AMOUNT
774 , BS.MEMBER_DEPRN_LIMIT_AMOUNT
775 , BS.ADJUSTED_RECOVERABLE_COST
776 , BS.ADJUSTED_COST
777 , BS.DEPRECIATE_FLAG
778 , BS.DISABLED_FLAG
779 , BS.DATE_PLACED_IN_SERVICE
780 , BS.DEPRN_METHOD_CODE
781 , BS.LIFE_IN_MONTHS
782 , BS.RATE_ADJUSTMENT_FACTOR
783 , BS.ADJUSTED_RATE
784 , BS.FORMULA_FACTOR
785 , BS.BONUS_RULE
786 , BS.ADJUSTED_CAPACITY
787 , BS.PRODUCTION_CAPACITY
788 , BS.UNIT_OF_MEASURE
789 , BS.REMAINING_LIFE1
790 , BS.REMAINING_LIFE2
791 , BS.UNREVALUED_COST
792 , BS.REVAL_CEILING
793 , BS.CEILING_NAME
794 , BS.REVAL_AMORTIZATION_BASIS
795 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.EOFY_ADJ_COST, BS.ADJUSTED_COST) --EOFY_ADJ_COST
796 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.EOFY_FORMULA_FACTOR, BS.FORMULA_FACTOR) --EOFY_FORMULA_FACTOR
797 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.EOFY_RESERVE,
798 tbs_fiscal_year(i) - 1, BS.DEPRN_RESERVE, 0) --EOFY_RESERVE
799 , BS.ADJUSTED_COST --EOP_ADJ_COST
800 , BS.FORMULA_FACTOR --EOP_FORMULA_FACTOR
801 , BS.SHORT_FISCAL_YEAR_FLAG
802 , BS.GROUP_ASSET_ID
803 , BS.SUPER_GROUP_ID
804 , BS.OVER_DEPRECIATE_OPTION
808 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_DEPRN, 0) --YTD_DEPRN
805 , 0 --TERMINAL_GAIN_LOSS_AMOUNT
806 , 'N' --TERMINAL_GAIN_LOSS_FLAG
807 , 0 --DEPRN_AMOUNT
809 , BS.DEPRN_RESERVE
810 , 0 --BONUS_DEPRN_AMOUNT
811 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.BONUS_YTD_DEPRN, 0) --BONUS_YTD_DEPRN
812 , BS.BONUS_DEPRN_RESERVE
813 , 0 --IMPAIRMENT_AMOUNT
814 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_IMPAIRMENT, 0) --YTD_IMPAIRMENT
815 , BS.impairment_reserve
816 , BS.LTD_PRODUCTION
817 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_PRODUCTION, 0) --YTD_PRODUCTION
818 , null --PRODUCTION
819 , 0 --REVAL_AMORTIZATION
820 , 0 --REVAL_DEPRN_EXPENSE
821 , BS.REVAL_RESERVE
822 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_REVAL_DEPRN_EXPENSE, 0) --YTD_REVAL_DEPRN_EXPENSE
823 , 'N' --DEPRN_OVERRIDE_FLAG
824 , 0 --SYSTEM_DEPRN_AMOUNT
825 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_PROCEEDS_OF_SALE, 0) --YTD_PROCEEDS_OF_SALE
826 , BS.LTD_PROCEEDS_OF_SALE
827 , DECODE(BS.FISCAL_YEAR, tbs_fiscal_year(i), BS.YTD_COST_OF_REMOVAL, 0) --YTD_COST_OF_REMOVAL
828 , BS.LTD_COST_OF_REMOVAL
829 , 0 --DEPRN_ADJUSTMENT_AMOUNT
830 , 0 --EXPENSE_ADJUSTMENT_AMOUNT
831 , 0 --UNPLANNED_AMOUNT
832 , 0 --RESERVE_ADJUSTMENT_AMOUNT
833 , p_trans_rec.who_info.creation_date
834 , p_trans_rec.who_info.created_by
835 , p_trans_rec.who_info.last_update_date
836 , p_trans_rec.who_info.last_updated_by
837 FROM FA_BOOKS_SUMMARY BS
838 WHERE BS.ASSET_ID = p_asset_hdr_rec.asset_id
839 AND BS.BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
840 AND BS.period_counter = l_last_period_counter;
841 end if; --p_mrc_sob_type_code = 'R'
842
843 if p_depreciate_flag_change then
844
845 if p_mrc_sob_type_code = 'R' then
846 UPDATE FA_MC_BOOKS_SUMMARY
847 SET DEPRECIATE_FLAG = p_asset_fin_rec_new.depreciate_flag
848 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
849 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
850 AND set_of_books_id = p_asset_hdr_rec.set_of_books_id;
851 else
852 UPDATE FA_BOOKS_SUMMARY
853 SET DEPRECIATE_FLAG = p_asset_fin_rec_new.depreciate_flag
854 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
855 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code;
856 end if;
857
858 elsif p_disabled_flag_change then
859
860 if p_mrc_sob_type_code = 'R' then
861 UPDATE FA_MC_BOOKS_SUMMARY
862 SET DISABLED_FLAG = p_asset_fin_rec_new.disabled_flag
863 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
864 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
865 AND set_of_books_id = p_asset_hdr_rec.set_of_books_id;
866 else
867 UPDATE FA_BOOKS_SUMMARY
868 SET DISABLED_FLAG = p_asset_fin_rec_new.disabled_flag
869 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
870 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code;
871 end if;
872
873 end if;
874
875 if (p_log_level_rec.statement_level) then
876 fa_debug_pkg.add(l_calling_fn||'()-', '# of records inserted', tbs_period_counter.COUNT);
877 end if;
878
879 return true;
880
881 EXCEPTION
882 WHEN OTHERS THEN
883 if (p_log_level_rec.statement_level) then
884 fa_debug_pkg.add(l_calling_fn||'(OTHERS)-', 'sqlcode', sqlcode);
885 end if;
886
887 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
888
889 return false;
890
891 END catchupBooksSummary;
892
893
894
895 --+==============================================================================
896 -- Procedure initMemberTable
897 --
898 -- Initialize global variables defined in specification.
899 --+==============================================================================
900 PROCEDURE initMemberTable IS
901 BEGIN
902
903 --
904 -- Initialize global variables
905 --
906 fa_amort_pvt.tmd_period_counter.delete;
907 fa_amort_pvt.tmd_cost.delete;
908 fa_amort_pvt.tm_cost.delete;
909 fa_amort_pvt.tmd_cip_cost.delete;
910 fa_amort_pvt.tm_cip_cost.delete;
911 fa_amort_pvt.tmd_salvage_value.delete;
912 fa_amort_pvt.tm_salvage_value.delete;
913 fa_amort_pvt.tmd_deprn_limit_amount.delete;
914 fa_amort_pvt.tm_deprn_limit_amount.delete;
915
916 END initMemberTable;
917
918 --+==============================================================================
919 -- Procedure InitGlobeVariables
920 --
921 -- Initialize global variables defined in specification.
922 --+==============================================================================
923 PROCEDURE InitGlobeVariables IS
924 BEGIN
925
926 --
927 -- Initialize global variables
928 --
929 fa_amort_pvt.t_period_counter.delete;
930 fa_amort_pvt.t_fiscal_year.delete;
931 fa_amort_pvt.t_period_num.delete;
932 fa_amort_pvt.t_calendar_period_open_date.delete;
933 fa_amort_pvt.t_calendar_period_close_date.delete;
934 fa_amort_pvt.t_reset_adjusted_cost_flag.delete;
935 fa_amort_pvt.t_change_in_cost.delete;
936 fa_amort_pvt.t_cost.delete;
937 fa_amort_pvt.t_cip_cost.delete;
938 fa_amort_pvt.t_salvage_type.delete;
939 fa_amort_pvt.t_percent_salvage_value.delete;
940 fa_amort_pvt.t_salvage_value.delete;
941 fa_amort_pvt.t_member_salvage_value.delete;
942 fa_amort_pvt.t_recoverable_cost.delete;
943 fa_amort_pvt.t_deprn_limit_type.delete;
944 fa_amort_pvt.t_allowed_deprn_limit.delete;
945 fa_amort_pvt.t_allowed_deprn_limit_amount.delete;
946 fa_amort_pvt.t_member_deprn_limit_amount.delete;
947 fa_amort_pvt.t_adjusted_recoverable_cost.delete;
948 fa_amort_pvt.t_adjusted_cost.delete;
949 fa_amort_pvt.t_depreciate_flag.delete;
950 fa_amort_pvt.t_date_placed_in_service.delete;
951 fa_amort_pvt.t_deprn_method_code.delete;
952 fa_amort_pvt.t_life_in_months.delete;
953 fa_amort_pvt.t_rate_adjustment_factor.delete;
954 fa_amort_pvt.t_adjusted_rate.delete;
955 fa_amort_pvt.t_bonus_rule.delete;
956 fa_amort_pvt.t_adjusted_capacity.delete;
957 fa_amort_pvt.t_production_capacity.delete;
958 fa_amort_pvt.t_unit_of_measure.delete;
959 fa_amort_pvt.t_remaining_life1.delete;
960 fa_amort_pvt.t_remaining_life2.delete;
961 fa_amort_pvt.t_formula_factor.delete;
962 fa_amort_pvt.t_unrevalued_cost.delete;
963 fa_amort_pvt.t_reval_amortization_basis.delete;
964 fa_amort_pvt.t_reval_ceiling.delete;
965 fa_amort_pvt.t_ceiling_name.delete;
966 fa_amort_pvt.t_eofy_adj_cost.delete;
967 fa_amort_pvt.t_eofy_formula_factor.delete;
968 fa_amort_pvt.t_eofy_reserve.delete;
969 fa_amort_pvt.t_eop_adj_cost.delete;
970 fa_amort_pvt.t_eop_formula_factor.delete;
971 fa_amort_pvt.t_short_fiscal_year_flag.delete;
972 fa_amort_pvt.t_group_asset_id.delete;
973 fa_amort_pvt.t_super_group_id.delete;
974 fa_amort_pvt.t_over_depreciate_option.delete;
975 fa_amort_pvt.t_deprn_amount.delete;
976 fa_amort_pvt.t_ytd_deprn.delete;
977 fa_amort_pvt.t_deprn_reserve.delete;
978 fa_amort_pvt.t_bonus_deprn_amount.delete;
979 fa_amort_pvt.t_bonus_ytd_deprn.delete;
980 fa_amort_pvt.t_bonus_deprn_reserve.delete;
981 fa_amort_pvt.t_bonus_rate.delete;
982 fa_amort_pvt.t_impairment_amount.delete;
983 fa_amort_pvt.t_ytd_impairment.delete;
984 fa_amort_pvt.t_impairment_reserve.delete;
985 fa_amort_pvt.t_ltd_production.delete;
986 fa_amort_pvt.t_ytd_production.delete;
987 fa_amort_pvt.t_production.delete;
988 fa_amort_pvt.t_reval_amortization.delete;
989 fa_amort_pvt.t_reval_deprn_expense.delete;
990 fa_amort_pvt.t_reval_reserve.delete;
991 fa_amort_pvt.t_ytd_reval_deprn_expense.delete;
992 fa_amort_pvt.t_deprn_override_flag.delete;
993 fa_amort_pvt.t_system_deprn_amount.delete;
994 fa_amort_pvt.t_system_bonus_deprn_amount.delete;
995 fa_amort_pvt.t_ytd_proceeds_of_sale.delete;
996 fa_amort_pvt.t_ltd_proceeds_of_sale.delete;
997 fa_amort_pvt.t_ytd_cost_of_removal.delete;
998 fa_amort_pvt.t_ltd_cost_of_removal.delete;
999 fa_amort_pvt.t_deprn_adjustment_amount.delete;
1000 fa_amort_pvt.t_expense_adjustment_amount.delete;
1001 fa_amort_pvt.t_reserve_adjustment_amount.delete;
1002
1003 END InitGlobeVariables;
1004
1005 --+==============================================================================
1006 -- Function: createGroup
1007 --
1008 -- Description:
1009 -- This function should be called to maintain group asset that has not
1010 -- depreciated or a member asset has not assigned.
1011 -- What this function does is to recreate records in FA_BOOKS_SUMAMRY by
1012 -- deleting all of them and reinsert all of them.
1013 --
1014 --+==============================================================================
1015 FUNCTION createGroup(
1016 p_trans_rec FA_API_TYPES.trans_rec_type,
1017 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
1018 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
1019 p_period_rec FA_API_TYPES.period_rec_type,
1020 p_asset_fin_rec FA_API_TYPES.asset_fin_rec_type,
1021 p_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type,
1022 p_mrc_sob_type_code VARCHAR2,
1023 p_calling_fn VARCHAR
1024 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return BOOLEAN IS
1025
1026 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.createGroup';
1027
1028 --
1029 -- Get all possible period information that the group asset needs
1030 --
1031 CURSOR c_get_period_rec IS
1032 select fy.fiscal_year * ct.NUMBER_PER_FISCAL_YEAR + cp.PERIOD_NUM period_counter
1033 , cp.start_date calendar_period_open_date
1037 , 'N'
1034 , cp.end_date calendar_period_close_date
1035 , cp.period_num period_num
1036 , fy.fiscal_year fiscal_year
1038 from fa_fiscal_year fy
1039 , fa_calendar_types ct
1040 , fa_calendar_periods cp
1041 where ct.calendar_type = fa_cache_pkg.fazcbc_record.deprn_calendar
1042 and fy.fiscal_year_name = fa_cache_pkg.fazcbc_record.fiscal_year_name
1043 and ct.fiscal_year_name = fa_cache_pkg.fazcbc_record.fiscal_year_name
1044 and ct.calendar_type = cp.calendar_type
1045 and cp.start_date between fy.start_date and fy.end_date
1046 and fa_cache_pkg.fazcbc_record.last_period_counter + 1 >=
1047 fy.fiscal_year * ct.NUMBER_PER_FISCAL_YEAR + cp.PERIOD_NUM
1048 and cp.end_date >= p_asset_fin_rec.date_placed_in_service
1049 order by period_counter;
1050
1051 tbs_period_counter tab_num15_type;
1052 tbs_calendar_period_open_date tab_date_type;
1053 tbs_calendar_period_close_date tab_date_type;
1054 tbs_period_num tab_num15_type;
1055 tbs_fiscal_year tab_num15_type;
1056 tbs_reset_adjusted_cost_flag tab_char1_type;
1057
1058 BEGIN
1059
1060 if (p_log_level_rec.statement_level) then
1061 fa_debug_pkg.add(l_calling_fn||'()+', 'asset_id', p_asset_hdr_rec.asset_id);
1062 end if;
1063
1064 --
1065 -- Delete all records for this group asset to recreate them
1066 --
1067 if p_mrc_sob_type_code = 'R' then
1068 DELETE FROM FA_MC_BOOKS_SUMMARY
1069 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
1070 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
1071 AND set_of_books_id = p_asset_hdr_rec.set_of_books_id;
1072 else
1073 DELETE FROM FA_BOOKS_SUMMARY
1074 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
1075 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code;
1076 end if;
1077
1078 if (p_log_level_rec.statement_level) then
1079 fa_debug_pkg.add(l_calling_fn, 'Construct Period information', '.', p_log_level_rec => p_log_level_rec);
1080 end if;
1081
1082 --
1083 -- Construct period information part for FA_BOOKS_SUMAMRY
1084 --
1085 OPEN c_get_period_rec;
1086 FETCH c_get_period_rec BULK COLLECT INTO tbs_period_counter
1087 , tbs_calendar_period_open_date
1088 , tbs_calendar_period_close_date
1089 , tbs_period_num
1090 , tbs_fiscal_year
1091 , tbs_reset_adjusted_cost_flag
1092 ;
1093 CLOSE c_get_period_rec;
1094
1095 if (p_log_level_rec.statement_level) then
1096 fa_debug_pkg.add(l_calling_fn||'()-', '# of records will be inserted',
1097 tbs_period_counter.COUNT);
1098 end if;
1099
1100 if (tbs_period_counter.COUNT = 0) then
1101 tbs_period_counter(1) := p_period_rec.period_counter;
1102 tbs_calendar_period_open_date(1) := p_period_rec.calendar_period_open_date;
1103 tbs_calendar_period_close_date(1) := p_period_rec.calendar_period_close_date;
1104 tbs_period_num(1) := p_period_rec.period_num;
1105 tbs_fiscal_year(1) := p_period_rec.fiscal_year;
1106 tbs_reset_adjusted_cost_flag(1) := 'Y';
1107 end if;
1108 --
1109 -- First record always get adjusted cost reset
1110 --
1111 tbs_reset_adjusted_cost_flag(1) := 'Y';
1112
1113 if (p_log_level_rec.statement_level) then
1114 fa_debug_pkg.add(l_calling_fn, 'Insert into', 'FA_BOOKS_SUMMARY', p_log_level_rec => p_log_level_rec);
1115 end if;
1116 --
1117 -- Insert all necessary records from period where DPIS falls into
1118 --
1119 if p_mrc_sob_type_code = 'R' then
1120 FORALL i in tbs_period_counter.FIRST..tbs_period_counter.LAST
1121 INSERT INTO FA_MC_BOOKS_SUMMARY(
1122 SET_OF_BOOKS_ID
1123 , ASSET_ID
1124 , BOOK_TYPE_CODE
1125 , PERIOD_COUNTER
1126 , FISCAL_YEAR
1127 , PERIOD_NUM
1128 , CALENDAR_PERIOD_OPEN_DATE
1129 , CALENDAR_PERIOD_CLOSE_DATE
1130 , RESET_ADJUSTED_COST_FLAG
1131 , CHANGE_IN_COST
1132 , CHANGE_IN_ADDITIONS_COST
1133 , CHANGE_IN_ADJUSTMENTS_COST
1134 , CHANGE_IN_RETIREMENTS_COST
1135 , CHANGE_IN_CIP_COST
1136 , COST
1137 , CIP_COST
1138 , SALVAGE_TYPE
1139 , PERCENT_SALVAGE_VALUE
1140 , SALVAGE_VALUE
1141 , MEMBER_SALVAGE_VALUE
1142 , RECOVERABLE_COST
1143 , DEPRN_LIMIT_TYPE
1144 , ALLOWED_DEPRN_LIMIT
1145 , ALLOWED_DEPRN_LIMIT_AMOUNT
1146 , MEMBER_DEPRN_LIMIT_AMOUNT
1147 , ADJUSTED_RECOVERABLE_COST
1148 , ADJUSTED_COST
1149 , DEPRECIATE_FLAG
1150 , DISABLED_FLAG
1151 , DATE_PLACED_IN_SERVICE
1152 , DEPRN_METHOD_CODE
1153 , LIFE_IN_MONTHS
1154 , RATE_ADJUSTMENT_FACTOR
1155 , ADJUSTED_RATE
1156 , FORMULA_FACTOR
1157 , BONUS_RULE
1158 , ADJUSTED_CAPACITY
1159 , PRODUCTION_CAPACITY
1160 , UNIT_OF_MEASURE
1161 , REMAINING_LIFE1
1162 , REMAINING_LIFE2
1163 , UNREVALUED_COST
1164 , REVAL_CEILING
1165 , CEILING_NAME
1166 , REVAL_AMORTIZATION_BASIS
1170 , EOP_ADJ_COST
1167 , EOFY_ADJ_COST
1168 , EOFY_FORMULA_FACTOR
1169 , EOFY_RESERVE
1171 , EOP_FORMULA_FACTOR
1172 , SHORT_FISCAL_YEAR_FLAG
1173 , GROUP_ASSET_ID
1174 , SUPER_GROUP_ID
1175 , OVER_DEPRECIATE_OPTION
1176 , TERMINAL_GAIN_LOSS_AMOUNT
1177 , TERMINAL_GAIN_LOSS_FLAG
1178 , DEPRN_AMOUNT
1179 , YTD_DEPRN
1180 , DEPRN_RESERVE
1181 , BONUS_DEPRN_AMOUNT
1182 , BONUS_YTD_DEPRN
1183 , BONUS_DEPRN_RESERVE
1184 , IMPAIRMENT_AMOUNT
1185 , YTD_IMPAIRMENT
1186 , impairment_reserve
1187 , LTD_PRODUCTION
1188 , YTD_PRODUCTION
1189 , PRODUCTION
1190 , REVAL_AMORTIZATION
1191 , REVAL_DEPRN_EXPENSE
1192 , REVAL_RESERVE
1193 , YTD_REVAL_DEPRN_EXPENSE
1194 , DEPRN_OVERRIDE_FLAG
1195 , SYSTEM_DEPRN_AMOUNT
1196 , YTD_PROCEEDS_OF_SALE
1197 , LTD_PROCEEDS_OF_SALE
1198 , YTD_COST_OF_REMOVAL
1199 , LTD_COST_OF_REMOVAL
1200 , DEPRN_ADJUSTMENT_AMOUNT
1201 , EXPENSE_ADJUSTMENT_AMOUNT
1202 , UNPLANNED_AMOUNT
1203 , RESERVE_ADJUSTMENT_AMOUNT
1204 , CREATION_DATE
1205 , CREATED_BY
1206 , LAST_UPDATE_DATE
1207 , LAST_UPDATED_BY
1208 )
1209 VALUES( p_asset_hdr_rec.set_of_books_id
1210 , p_asset_hdr_rec.asset_id
1211 , p_asset_hdr_rec.book_type_code
1212 , tbs_period_counter(i)
1213 , tbs_fiscal_year(i)
1214 , tbs_period_num(i)
1215 , tbs_calendar_period_open_date(i)
1216 , tbs_calendar_period_close_date(i)
1217 , tbs_reset_adjusted_cost_flag(i)
1218 , 0 --CHANGE_IN_COST
1219 , 0 --CHANGE_IN_ADDITIONS_COST
1220 , 0 --CHANGE_IN_ADJUSTMENTS_COST
1221 , 0 --CHANGE_IN_RETIREMENTS_COST
1222 , 0 --CHANGE_IN_CIP_COST
1223 , 0 --COST
1224 , 0 --CIP_COST
1225 , p_asset_fin_rec.salvage_type --SALVAGE_TYPE
1226 , p_asset_fin_rec.percent_salvage_value --PERCENT_SALVAGE_VALUE
1227 , 0 --SALVAGE_VALUE
1228 , 0 --MEMBER_SALVAGE_VALUE
1229 , 0 --RECOVERABLE_COST
1230 , p_asset_fin_rec.deprn_limit_type --DEPRN_LIMIT_TYPE
1231 , p_asset_fin_rec.allowed_deprn_limit --ALLOWED_DEPRN_LIMIT
1232 , 0 --ALLOWED_DEPRN_LIMIT_AMOUNT
1233 , 0 --MEMBER_DEPRN_LIMIT_AMOUNT
1234 , 0 --ADJUSTED_RECOVERABLE_COST
1235 , 0 --ADJUSTED_COST
1236 , p_asset_fin_rec.depreciate_flag --DEPRECIATE_FLAG
1237 , p_asset_fin_rec.disabled_flag --DISABLED_FLAG
1238 , p_asset_fin_rec.date_placed_in_service --DATE_PLACED_IN_SERVICE
1239 , p_asset_fin_rec.deprn_method_code --DEPRN_METHOD_CODE
1240 , p_asset_fin_rec.life_in_months --LIFE_IN_MONTHS
1241 , 1 --RATE_ADJUSTMENT_FACTOR
1242 , p_asset_fin_rec.adjusted_rate --ADJUSTED_RATE
1243 , 1 --FORMULA_FACTOR
1244 , p_asset_fin_rec.bonus_rule --BONUS_RULE
1245 , p_asset_fin_rec.adjusted_capacity --ADJUSTED_CAPACITY
1246 , p_asset_fin_rec.production_capacity --PRODUCTION_CAPACITY
1247 , p_asset_fin_rec.unit_of_measure --UNIT_OF_MEASURE
1248 , p_asset_fin_rec.remaining_life1 --REMAINING_LIFE1
1249 , p_asset_fin_rec.remaining_life2 --REMAINING_LIFE2
1250 , 0 --UNREVALUED_COST
1251 , p_asset_fin_rec.reval_ceiling --REVAL_CEILING
1252 , p_asset_fin_rec.ceiling_name --CEILING_NAME
1253 , 0 --REVAL_AMORTIZATION_BASIS
1254 , 0 --EOFY_ADJ_COST
1255 , 1 --EOFY_FORMULA_FACTOR
1256 , 0 --EOFY_RESERVE
1257 , 0 --EOP_ADJ_COST
1258 , 1 --EOP_FORMULA_FACTOR
1259 , 'NO' --SHORT_FISCAL_YEAR_FLAG
1260 , null --GROUP_ASSET_ID
1261 , p_asset_fin_rec.super_group_id --SUPER_GROUP_ID
1262 , p_asset_fin_rec.over_depreciate_option --OVER_DEPRECIATE_OPTION
1263 , 0 --TERMINAL_GAIN_LOSS_AMOUNT
1264 , 'N' --TERMINAL_GAIN_LOSS_FLAG
1265 , 0 --DEPRN_AMOUNT
1266 , 0 --YTD_DEPRN
1267 , 0 --DEPRN_RESERVE
1268 , 0 --BONUS_DEPRN_AMOUNT
1269 , 0 --BONUS_YTD_DEPRN
1270 , 0 --BONUS_DEPRN_RESERVE
1271 , 0 --IMPAIRMENT_AMOUNT
1272 , 0 --YTD_IMPAIRMENT
1273 , 0 --impairment_reserve
1274 , null --LTD_PRODUCTION
1275 , null --YTD_PRODUCTION
1276 , null --PRODUCTION
1277 , 0 --REVAL_AMORTIZATION
1278 , 0 --REVAL_DEPRN_EXPENSE
1279 , 0 --REVAL_RESERVE
1280 , 0 --YTD_REVAL_DEPRN_EXPENSE
1281 , 'N' --DEPRN_OVERRIDE_FLAG
1282 , 0 --SYSTEM_DEPRN_AMOUNT
1283 , 0 --YTD_PROCEEDS_OF_SALE
1284 , 0 --LTD_PROCEEDS_OF_SALE
1285 , 0 --YTD_COST_OF_REMOVAL
1286 , 0 --LTD_COST_OF_REMOVAL
1287 , 0 --DEPRN_ADJUSTMENT_AMOUNT
1288 , 0 --EXPENSE_ADJUSTMENT_AMOUNT
1289 , 0 --UNPLANNED_AMOUNT
1290 , 0 --RESERVE_ADJUSTMENT_AMOUNT
1291 , p_trans_rec.who_info.creation_date
1292 , p_trans_rec.who_info.created_by
1293 , p_trans_rec.who_info.last_update_date
1294 , p_trans_rec.who_info.last_updated_by
1295 );
1296
1297 else
1298
1299 FORALL i in tbs_period_counter.FIRST..tbs_period_counter.LAST
1300 INSERT INTO FA_BOOKS_SUMMARY(
1301 ASSET_ID
1302 , BOOK_TYPE_CODE
1303 , PERIOD_COUNTER
1304 , FISCAL_YEAR
1305 , PERIOD_NUM
1306 , CALENDAR_PERIOD_OPEN_DATE
1307 , CALENDAR_PERIOD_CLOSE_DATE
1308 , RESET_ADJUSTED_COST_FLAG
1309 , CHANGE_IN_COST
1310 , CHANGE_IN_ADDITIONS_COST
1311 , CHANGE_IN_ADJUSTMENTS_COST
1312 , CHANGE_IN_RETIREMENTS_COST
1313 , CHANGE_IN_CIP_COST
1314 , COST
1315 , CIP_COST
1316 , SALVAGE_TYPE
1317 , PERCENT_SALVAGE_VALUE
1318 , SALVAGE_VALUE
1319 , MEMBER_SALVAGE_VALUE
1320 , RECOVERABLE_COST
1321 , DEPRN_LIMIT_TYPE
1322 , ALLOWED_DEPRN_LIMIT
1323 , ALLOWED_DEPRN_LIMIT_AMOUNT
1324 , MEMBER_DEPRN_LIMIT_AMOUNT
1325 , ADJUSTED_RECOVERABLE_COST
1326 , ADJUSTED_COST
1327 , DEPRECIATE_FLAG
1328 , DISABLED_FLAG
1329 , DATE_PLACED_IN_SERVICE
1330 , DEPRN_METHOD_CODE
1331 , LIFE_IN_MONTHS
1332 , RATE_ADJUSTMENT_FACTOR
1333 , ADJUSTED_RATE
1334 , FORMULA_FACTOR
1335 , BONUS_RULE
1336 , ADJUSTED_CAPACITY
1337 , PRODUCTION_CAPACITY
1338 , UNIT_OF_MEASURE
1339 , REMAINING_LIFE1
1340 , REMAINING_LIFE2
1341 , UNREVALUED_COST
1342 , REVAL_CEILING
1343 , CEILING_NAME
1344 , REVAL_AMORTIZATION_BASIS
1345 , EOFY_ADJ_COST
1346 , EOFY_FORMULA_FACTOR
1347 , EOFY_RESERVE
1348 , EOP_ADJ_COST
1349 , EOP_FORMULA_FACTOR
1350 , SHORT_FISCAL_YEAR_FLAG
1351 , GROUP_ASSET_ID
1352 , SUPER_GROUP_ID
1353 , OVER_DEPRECIATE_OPTION
1354 , TERMINAL_GAIN_LOSS_AMOUNT
1355 , TERMINAL_GAIN_LOSS_FLAG
1356 , DEPRN_AMOUNT
1357 , YTD_DEPRN
1358 , DEPRN_RESERVE
1359 , BONUS_DEPRN_AMOUNT
1360 , BONUS_YTD_DEPRN
1361 , BONUS_DEPRN_RESERVE
1362 , IMPAIRMENT_AMOUNT
1363 , YTD_IMPAIRMENT
1364 , impairment_reserve
1365 , LTD_PRODUCTION
1366 , YTD_PRODUCTION
1367 , PRODUCTION
1368 , REVAL_AMORTIZATION
1372 , DEPRN_OVERRIDE_FLAG
1369 , REVAL_DEPRN_EXPENSE
1370 , REVAL_RESERVE
1371 , YTD_REVAL_DEPRN_EXPENSE
1373 , SYSTEM_DEPRN_AMOUNT
1374 , YTD_PROCEEDS_OF_SALE
1375 , LTD_PROCEEDS_OF_SALE
1376 , YTD_COST_OF_REMOVAL
1377 , LTD_COST_OF_REMOVAL
1378 , DEPRN_ADJUSTMENT_AMOUNT
1379 , EXPENSE_ADJUSTMENT_AMOUNT
1380 , UNPLANNED_AMOUNT
1381 , RESERVE_ADJUSTMENT_AMOUNT
1382 , CREATION_DATE
1383 , CREATED_BY
1384 , LAST_UPDATE_DATE
1385 , LAST_UPDATED_BY
1386 )
1387 VALUES( p_asset_hdr_rec.asset_id
1388 , p_asset_hdr_rec.book_type_code
1389 , tbs_period_counter(i)
1390 , tbs_fiscal_year(i)
1391 , tbs_period_num(i)
1392 , tbs_calendar_period_open_date(i)
1393 , tbs_calendar_period_close_date(i)
1394 , tbs_reset_adjusted_cost_flag(i)
1395 , 0 --CHANGE_IN_COST
1396 , 0 --CHANGE_IN_ADDITIONS_COST
1397 , 0 --CHANGE_IN_ADJUSTMENTS_COST
1398 , 0 --CHANGE_IN_RETIREMENTS_COST
1399 , 0 --CHANGE_IN_CIP_COST
1400 , 0 --COST
1401 , 0 --CIP_COST
1402 , p_asset_fin_rec.salvage_type --SALVAGE_TYPE
1403 , p_asset_fin_rec.percent_salvage_value --PERCENT_SALVAGE_VALUE
1404 , 0 --SALVAGE_VALUE
1405 , 0 --MEMBER_SALVAGE_VALUE
1406 , 0 --RECOVERABLE_COST
1407 , p_asset_fin_rec.deprn_limit_type --DEPRN_LIMIT_TYPE
1408 , p_asset_fin_rec.allowed_deprn_limit --ALLOWED_DEPRN_LIMIT
1409 , 0 --ALLOWED_DEPRN_LIMIT_AMOUNT
1410 , 0 --MEMBER_DEPRN_LIMIT_AMOUNT
1411 , 0 --ADJUSTED_RECOVERABLE_COST
1412 , 0 --ADJUSTED_COST
1413 , p_asset_fin_rec.depreciate_flag --DEPRECIATE_FLAG
1414 , p_asset_fin_rec.disabled_flag --DISABLED_FLAG
1415 , p_asset_fin_rec.date_placed_in_service --DATE_PLACED_IN_SERVICE
1416 , p_asset_fin_rec.deprn_method_code --DEPRN_METHOD_CODE
1417 , p_asset_fin_rec.life_in_months --LIFE_IN_MONTHS
1418 , 1 --RATE_ADJUSTMENT_FACTOR
1419 , p_asset_fin_rec.adjusted_rate --ADJUSTED_RATE
1420 , 1 --FORMULA_FACTOR
1421 , p_asset_fin_rec.bonus_rule --BONUS_RULE
1422 , p_asset_fin_rec.adjusted_capacity --ADJUSTED_CAPACITY
1423 , p_asset_fin_rec.production_capacity --PRODUCTION_CAPACITY
1424 , p_asset_fin_rec.unit_of_measure --UNIT_OF_MEASURE
1425 , p_asset_fin_rec.remaining_life1 --REMAINING_LIFE1
1426 , p_asset_fin_rec.remaining_life2 --REMAINING_LIFE2
1427 , 0 --UNREVALUED_COST
1428 , p_asset_fin_rec.reval_ceiling --REVAL_CEILING
1429 , p_asset_fin_rec.ceiling_name --CEILING_NAME
1430 , 0 --REVAL_AMORTIZATION_BASIS
1431 , 0 --EOFY_ADJ_COST
1432 , 1 --EOFY_FORMULA_FACTOR
1433 , 0 --EOFY_RESERVE
1434 , 0 --EOP_ADJ_COST
1435 , 1 --EOP_FORMULA_FACTOR
1436 , 'NO' --SHORT_FISCAL_YEAR_FLAG
1437 , null --GROUP_ASSET_ID
1438 , p_asset_fin_rec.super_group_id --SUPER_GROUP_ID
1439 , p_asset_fin_rec.over_depreciate_option --OVER_DEPRECIATE_OPTION
1440 , 0 --TERMINAL_GAIN_LOSS_AMOUNT
1441 , 'N' --TERMINAL_GAIN_LOSS_FLAG
1442 , 0 --DEPRN_AMOUNT
1443 , 0 --YTD_DEPRN
1444 , 0 --DEPRN_RESERVE
1445 , 0 --BONUS_DEPRN_AMOUNT
1446 , 0 --BONUS_YTD_DEPRN
1447 , 0 --BONUS_DEPRN_RESERVE
1448 , 0 --IMPAIRMENT_AMOUNT
1449 , 0 --YTD_IMPAIRMENT
1450 , 0 --impairment_reserve
1451 , null --LTD_PRODUCTION
1452 , null --YTD_PRODUCTION
1453 , null --PRODUCTION
1454 , 0 --REVAL_AMORTIZATION
1455 , 0 --REVAL_DEPRN_EXPENSE
1456 , 0 --REVAL_RESERVE
1457 , 0 --YTD_REVAL_DEPRN_EXPENSE
1458 , 'N' --DEPRN_OVERRIDE_FLAG
1459 , 0 --SYSTEM_DEPRN_AMOUNT
1460 , 0 --YTD_PROCEEDS_OF_SALE
1461 , 0 --LTD_PROCEEDS_OF_SALE
1462 , 0 --YTD_COST_OF_REMOVAL
1463 , 0 --LTD_COST_OF_REMOVAL
1464 , 0 --DEPRN_ADJUSTMENT_AMOUNT
1465 , 0 --EXPENSE_ADJUSTMENT_AMOUNT
1466 , 0 --UNPLANNED_AMOUNT
1467 , 0 --RESERVE_ADJUSTMENT_AMOUNT
1468 , p_trans_rec.who_info.creation_date
1469 , p_trans_rec.who_info.created_by
1470 , p_trans_rec.who_info.last_update_date
1471 , p_trans_rec.who_info.last_updated_by
1472 );
1473 end if; --p_mrc_sob_type_code = 'R'
1474
1475 printBooksSummary(p_asset_id => p_asset_hdr_rec.asset_id,
1476 p_book_type_code => p_asset_hdr_rec.book_type_code,
1477 p_period_counter => tbs_period_counter(1),
1481 fa_debug_pkg.add(l_calling_fn||'()-', '# of records inserted', tbs_period_counter.COUNT);
1478 p_log_level_rec => p_log_level_rec);
1479
1480 if (p_log_level_rec.statement_level) then
1482 end if;
1483
1484 return true;
1485
1486 EXCEPTION
1487 WHEN OTHERS THEN
1488 if (p_log_level_rec.statement_level) then
1489 fa_debug_pkg.add(l_calling_fn||'(OTHERS)-', 'sqlcode', sqlcode);
1490 end if;
1491
1492 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
1493
1494 return false;
1495 END createGroup;
1496
1497 --+==============================================================================
1498 -- Function: buildMemberTable
1499 --
1500 --+==============================================================================
1501 FUNCTION buildMemberTable(
1502 p_trans_rec FA_API_TYPES.trans_rec_type,
1503 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
1504 p_period_rec FA_API_TYPES.period_rec_type,
1505 p_date_placed_in_service DATE,
1506 p_group_asset_id NUMBER,
1507 p_reclass_multiplier NUMBER,
1508 p_reclass_src_dest VARCHAR2,
1509 p_salvage_limit_type VARCHAR2,
1510 x_td_period_counter OUT NOCOPY fa_amort_pvt.tab_num15_type,
1511 x_td_cost OUT NOCOPY fa_amort_pvt.tab_num_type,
1512 x_td_cip_cost OUT NOCOPY fa_amort_pvt.tab_num_type,
1513 x_td_salvage_value OUT NOCOPY fa_amort_pvt.tab_num_type,
1514 x_td_deprn_limit_amount OUT NOCOPY fa_amort_pvt.tab_num_type,
1515 x_asset_fin_rec OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
1516 x_asset_fin_rec_reclass OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
1517 p_mrc_sob_type_code VARCHAR2
1518 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type)return BOOLEAN IS
1519
1520 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.buildMemberTable';
1521
1522 --
1523 -- Get Period and 0s for cost, cip_cost, salvage value,
1524 -- deprn limit amount, percent_salvage_value, and allowed_deprn_limit
1525 -- and nulls for salvage_type and deprn_limit_type for building
1526 -- tables
1527 CURSOR c_get_period_counters (c_date date,
1528 c_group_asset_id number) IS
1529 select period_counter,
1530 0, 0, 0, 0, 0, null, 0, null, 0, 0, 0
1531 from fa_books_summary
1532 where asset_id = c_group_asset_id
1533 and book_type_code = p_asset_hdr_rec.book_type_code
1534 and calendar_period_close_date >= c_date
1535 order by period_counter;
1536
1537
1538 CURSOR c_get_member_trx IS
1539 select th.transaction_header_id
1540 , th.transaction_type_code
1541 , th.transaction_subtype
1542 , th.transaction_key
1543 , bs.period_counter
1544 from fa_transaction_headers th
1545 , fa_books_summary bs
1546 , fa_transaction_headers mth
1547 , fa_books bk
1548 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
1549 and th.asset_id = mth.asset_id
1550 and th.book_type_code = p_asset_hdr_rec.book_type_code
1551 and bs.asset_id = p_group_asset_id
1552 and bs.book_type_code = p_asset_hdr_rec.book_type_code
1553 and bk.transaction_header_id_in = th.transaction_header_id
1554 and decode(th.transaction_subtype,
1555 'EXPENSED', greatest(decode(bk.group_asset_id,
1556 null,p_date_placed_in_service,
1557 nvl(th.amortization_start_date,
1558 th.transaction_date_entered)), p_date_placed_in_service),
1559 greatest(nvl(th.amortization_start_date,
1560 th.transaction_date_entered), p_date_placed_in_service))
1561 between bs.calendar_period_open_date
1562 and bs.calendar_period_close_date
1563 and (th.transaction_type_code not in ('TRANSFER OUT', 'TRANSFER IN',
1564 'TRANSFER', 'TRANSFER IN/VOID',
1565 'RECLASS', 'UNIT ADJUSTMENT',
1566 'REINSTATEMENT')
1567 or (th.transaction_type_code = 'REINSTATEMENT' and
1568 th.transaction_header_id = p_trans_rec.member_transaction_header_id));
1569
1570 CURSOR c_get_member_trx_single IS
1571 select mth.transaction_header_id
1572 , mth.transaction_type_code
1573 , mth.transaction_subtype
1574 , mth.transaction_key
1575 , bs.period_counter
1576 from fa_books_summary bs
1577 , fa_transaction_headers mth
1578 , fa_books bk
1579 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
1580 and bs.asset_id = p_group_asset_id
1581 and bs.book_type_code = p_asset_hdr_rec.book_type_code
1582 and bk.transaction_header_id_in = mth.transaction_header_id
1583 and decode(mth.transaction_subtype,
1584 'EXPENSED', greatest(decode(bk.group_asset_id,
1585 null,p_date_placed_in_service,
1586 nvl(mth.amortization_start_date,
1587 mth.transaction_date_entered)), p_date_placed_in_service),
1588 greatest(nvl(mth.amortization_start_date,
1589 mth.transaction_date_entered), p_date_placed_in_service))
1590 between bs.calendar_period_open_date
1594 'RECLASS', 'UNIT ADJUSTMENT',
1591 and bs.calendar_period_close_date
1592 and (mth.transaction_type_code not in ('TRANSFER OUT', 'TRANSFER IN',
1593 'TRANSFER', 'TRANSFER IN/VOID',
1595 'REINSTATEMENT')
1596 or (mth.transaction_type_code = 'REINSTATEMENT' and
1597 mth.transaction_header_id = p_trans_rec.member_transaction_header_id));
1598
1599 --
1600 -- Cursor to get retirement information using retirement
1601 -- transaction_header_id
1602 --
1603 CURSOR c_get_ret_info (c_transaction_header_id number) IS
1604 select ret.date_retired
1605 , ret.cost_retired
1606 , nvl(ret.reserve_retired, 0)
1607 , ret.proceeds_of_sale
1608 , ret.cost_of_removal
1609 from fa_retirements ret
1610 where ret.transaction_header_id_in = c_transaction_header_id
1611 and ret.transaction_header_id_out is null;
1612
1613 CURSOR c_get_mc_ret_info (c_transaction_header_id number) IS
1614 select ret.date_retired
1615 , ret.cost_retired
1616 , nvl(ret.reserve_retired, 0)
1617 , ret.proceeds_of_sale
1618 , ret.cost_of_removal
1619 from fa_mc_retirements ret
1620 where ret.transaction_header_id_in = c_transaction_header_id
1621 and ret.transaction_header_id_out is null
1622 and ret.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
1623
1624 --bug6912446
1625 -- Following cursors to get retirement period for reinstatement trx
1626 CURSOR c_get_ret_period (c_transaction_header_id number)IS
1627 select bs.period_counter
1628 from fa_books_summary bs
1629 , fa_retirements rt
1630 where bs.asset_id = p_group_asset_id
1631 and bs.book_type_code = p_asset_hdr_rec.book_type_code
1632 and rt.date_retired between bs.calendar_period_open_date and bs.calendar_period_close_date
1633 and rt.transaction_header_id_out = c_transaction_header_id;
1634
1635 CURSOR c_get_mc_ret_period (c_transaction_header_id number)IS
1636 select bs.period_counter
1637 from fa_mc_books_summary bs
1638 , fa_mc_retirements rt
1639 where bs.asset_id = p_group_asset_id
1640 and bs.book_type_code = p_asset_hdr_rec.book_type_code
1641 and bs.set_of_books_id = p_asset_hdr_rec.set_of_books_id
1642 and rt.date_retired between bs.calendar_period_open_date and bs.calendar_period_close_date
1643 and rt.transaction_header_id_out = c_transaction_header_id
1644 and rt.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
1645
1646 --End of bug6912446
1647
1648 --
1649 -- Cursor to get delta information in cost for a given transaction
1650 -- p_reclass_multiplier will be -1 if this is source group asset process.
1651 -- it wil be 1 for all other cases.
1652 --
1653 CURSOR c_get_deltas ( c_transaction_header_id number) IS
1654 select p_reclass_multiplier * (inbk.cost - nvl(outbk.cost, 0))
1655 , p_reclass_multiplier * (nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0))
1656 , p_reclass_multiplier * (inbk.salvage_value - nvl(outbk.salvage_value, 0))
1657 , p_reclass_multiplier * (nvl(decode(inbk.deprn_limit_type, 'NONE', inbk.salvage_value,
1658 inbk.allowed_deprn_limit_amount), 0) -
1659 nvl(decode(outbk.deprn_limit_type, 'NONE', outbk.salvage_value,
1660 outbk.allowed_deprn_limit_amount), 0)
1661 )
1662 , inbk.salvage_type
1663 , outbk.salvage_type
1664 , inbk.percent_salvage_value
1665 , outbk.percent_salvage_value
1666 , inbk.deprn_limit_type
1667 , outbk.deprn_limit_type
1668 , inbk.allowed_deprn_limit
1669 , outbk.allowed_deprn_limit
1670 from fa_books inbk,
1671 fa_books outbk
1672 , fa_transaction_headers mth
1673 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
1674 and inbk.asset_id = mth.asset_id
1675 and outbk.asset_id(+) = inbk.asset_id
1676 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
1677 and outbk.book_type_code(+) = inbk.book_type_code
1678 and inbk.transaction_header_id_in = c_transaction_header_id
1679 and outbk.transaction_header_id_out(+) = inbk.transaction_header_id_in;
1680
1681 CURSOR c_get_mc_deltas ( c_transaction_header_id number) IS
1682 select p_reclass_multiplier * (inbk.cost - nvl(outbk.cost, 0))
1683 , p_reclass_multiplier * (nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0))
1684 , p_reclass_multiplier * (inbk.salvage_value - nvl(outbk.salvage_value, 0))
1685 , p_reclass_multiplier *
1686 (decode(inbk.deprn_limit_type,
1687 outbk.deprn_limit_type,
1688 nvl(decode(inbk.deprn_limit_type, 'NONE', inbk.salvage_value,
1689 inbk.allowed_deprn_limit_amount), 0) -
1690 nvl(decode(outbk.deprn_limit_type, 'NONE', outbk.salvage_value,
1691 outbk.allowed_deprn_limit_amount), 0),
1692 nvl(decode(inbk.deprn_limit_type, 'NONE', inbk.salvage_value,
1693 inbk.allowed_deprn_limit_amount), 0)))
1694 , inbk.salvage_type
1695 , outbk.salvage_type
1696 , inbk.percent_salvage_value
1697 , outbk.percent_salvage_value
1698 , inbk.deprn_limit_type
1699 , outbk.deprn_limit_type
1700 , inbk.allowed_deprn_limit
1701 , outbk.allowed_deprn_limit
1705 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
1702 from fa_mc_books inbk,
1703 fa_mc_books outbk
1704 , fa_transaction_headers mth
1706 and inbk.asset_id = mth.asset_id
1707 and outbk.asset_id(+) = inbk.asset_id
1708 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
1709 and outbk.book_type_code(+) = inbk.book_type_code
1710 and inbk.transaction_header_id_in = c_transaction_header_id
1711 and outbk.transaction_header_id_out(+) = inbk.transaction_header_id_in
1712 and inbk.set_of_books_id = p_asset_hdr_rec.set_of_books_id
1713 and outbk.set_of_books_id(+) = p_asset_hdr_rec.set_of_books_id;
1714
1715 --
1716 -- Tables to store member information
1717 --
1718 t_transaction_header_id fa_amort_pvt.tab_num15_type;
1719
1720 l_dpis_pc NUMBER(15); -- Period counter where member's dpis falls in
1721
1722 tr_transaction_header_id fa_amort_pvt.tab_num15_type;
1723 tr_transaction_type_code fa_amort_pvt.tab_char30_type;
1724 tr_transaction_subtype fa_amort_pvt.tab_char30_type;
1725 tr_transaction_key fa_amort_pvt.tab_char3_type;
1726 tr_period_counter fa_amort_pvt.tab_num15_type;
1727
1728 l_date_retired DATE;
1729 l_cost_retired NUMBER;
1730 l_reserve_retired NUMBER;
1731 l_proceeds_of_sale NUMBER;
1732 l_cost_of_removal NUMBER;
1733
1734 l_cost NUMBER;
1735 l_cip_cost NUMBER;
1736 l_salvage_value NUMBER;
1737 l_deprn_limit_amount NUMBER;
1738 l_salvage_type VARCHAR2(30);
1739 l_old_salvage_type VARCHAR2(30);
1740 l_percent_salvage_value NUMBER;
1741 l_old_percent_salvage_value NUMBER;
1742 l_deprn_limit_type VARCHAR2(30);
1743 l_old_deprn_limit_type VARCHAR2(30);
1744 l_allowed_deprn_limit NUMBER;
1745 l_old_allowed_deprn_limit NUMBER;
1746
1747 t_period_counter fa_amort_pvt.tab_num15_type;
1748 t_cost fa_amort_pvt.tab_num_type;
1749 t_cip_cost fa_amort_pvt.tab_num_type;
1750 t_salvage_type fa_amort_pvt.tab_char30_type;
1751 t_percent_salvage_value fa_amort_pvt.tab_num_type;
1752 t_salvage_value fa_amort_pvt.tab_num_type;
1753 t_deprn_limit_type fa_amort_pvt.tab_char30_type;
1754 t_allowed_deprn_limit fa_amort_pvt.tab_num_type;
1755 t_deprn_limit_amount fa_amort_pvt.tab_num_type;
1756 t_sal_thid fa_amort_pvt.tab_num15_type;
1757 t_limit_thid fa_amort_pvt.tab_num15_type;
1758
1759
1760 l_sal_thid NUMBER(15) := 0;
1761 l_limit_thid NUMBER(15) := 0;
1762
1763 -- Bug4958977: Adding following 4 new variables
1764 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
1765 l_period_counter NUMBER;
1766 bld_err EXCEPTION;
1767 l_cur_trx_period_counter NUMBER;
1768
1769 l_ind BINARY_INTEGER; -- Index variable
1770 l_temp_num NUMBER; -- used for calling fa_round_pkg
1771 ld_ind BINARY_INTEGER := 0;
1772 l_reinstated BOOLEAN;
1773
1774
1775 BEGIN
1776
1777 if (p_log_level_rec.statement_level) then
1778 fa_debug_pkg.add(l_calling_fn||'()+', 'asset_id', p_asset_hdr_rec.asset_id);
1779 fa_debug_pkg.add(l_calling_fn, 'group_asset_id', p_group_asset_id, p_log_level_rec => p_log_level_rec);
1780 end if;
1781 --tk_util.debug('p_reclass_multiplier: '||to_char(p_reclass_multiplier));
1782
1783 if (p_reclass_src_dest = 'DESTINATION') and
1784 (fa_amort_pvt.tmd_period_counter.COUNT > 0) then
1785 l_ind := p_period_rec.period_counter - (fa_amort_pvt.tmd_period_counter(1) - 1);
1786
1787 FOR i in l_ind..fa_amort_pvt.tmd_period_counter.COUNT LOOP
1788 --tk_util.debug('i: '||to_char(i));
1789 ld_ind := ld_ind + 1;
1790 x_td_period_counter(ld_ind) := fa_amort_pvt.tmd_period_counter(i);
1791 x_td_cost(ld_ind) := -1 * fa_amort_pvt.tmd_cost(i);
1792 x_td_cip_cost(ld_ind) := -1 * fa_amort_pvt.tmd_cip_cost(i);
1793 x_td_salvage_value(ld_ind) := -1 * fa_amort_pvt.tmd_salvage_value(i);
1794 x_td_deprn_limit_amount(ld_ind) := -1 * fa_amort_pvt.tmd_deprn_limit_amount(i);
1795 --tk_util.debug('fa_amort_pvt.tmd_period_counter(i): '||to_char(fa_amort_pvt.tmd_period_counter(i)));
1796 --tk_util.debug('fa_amort_pvt.tm_cost(i): '||to_char(fa_amort_pvt.tm_cost(i)));
1797 --tk_util.debug('fa_amort_pvt.tmd_cost(i): '||to_char(fa_amort_pvt.tmd_cost(i)));
1798 --tk_util.debug('x_td_cost(ld_ind): '||to_char(x_td_cost(ld_ind)));
1799 END LOOP;
1800 --tk_util.debug('Post loop');
1801 x_asset_fin_rec_reclass.cost := -1 * fa_amort_pvt.tm_cost(l_ind);
1802 --tk_util.debug('x_asset_fin_rec_reclass.cost: '||to_char(x_asset_fin_rec_reclass.cost));
1803 x_asset_fin_rec_reclass.cip_cost := -1 * fa_amort_pvt.tm_cip_cost(l_ind);
1804 x_asset_fin_rec_reclass.salvage_value := -1 * fa_amort_pvt.tm_salvage_value(l_ind);
1805 x_asset_fin_rec_reclass.allowed_deprn_limit_amount :=
1806 -1 * fa_amort_pvt.tm_deprn_limit_amount(l_ind);
1807
1808 if (p_log_level_rec.statement_level) then
1809 fa_debug_pkg.add(l_calling_fn||'()-', '# of rows in delta tables', x_td_cost.COUNT);
1810 end if;
1811
1812 return TRUE;
1813
1814 end if;
1815 --
1816 -- Construct member asset table using group's data in FA_BOOKS_SUMMARY
1817 --
1818 --tk_util.debug('c_date: '||to_char(p_date_placed_in_service, 'DD-MON-YYYY'));
1819 OPEN c_get_period_counters (p_date_placed_in_service,
1820 p_group_asset_id);
1824 , fa_amort_pvt.tmd_cost
1821
1822 FETCH c_get_period_counters BULK COLLECT INTO t_period_counter
1823 , t_transaction_header_id
1825 , fa_amort_pvt.tmd_cip_cost
1826 , fa_amort_pvt.tmd_salvage_value
1827 , fa_amort_pvt.tmd_deprn_limit_amount
1828 , t_salvage_type
1829 , t_percent_salvage_value
1830 , t_deprn_limit_type
1831 , t_allowed_deprn_limit
1832 , t_sal_thid
1833 , t_limit_thid;
1834 CLOSE c_get_period_counters;
1835
1836 if (p_log_level_rec.statement_level) then
1837 fa_debug_pkg.add(l_calling_fn, 'Finish Constructing Memebr Table',
1838 t_period_counter.COUNT, p_log_level_rec => p_log_level_rec);
1839 fa_debug_pkg.add(l_calling_fn, 'p_trans_rec.transaction_key', p_trans_rec.transaction_key, p_log_level_rec => p_log_level_rec);
1840 fa_debug_pkg.add(l_calling_fn, 'p_salvage_limit_type', p_salvage_limit_type, p_log_level_rec => p_log_level_rec);
1841 end if;
1842
1843 l_dpis_pc := t_period_counter(1);
1844
1845 --
1846 -- Get member asset's transactions
1847 --
1848 --tk_util.debug('asset_id: '||to_char(p_asset_hdr_rec.asset_id));
1849 --tk_util.debug('book: '||p_asset_hdr_rec.book_type_code);
1850 --tk_util.debug('p_dpis: '||to_char(p_date_placed_in_service, 'DD-MM-YYYY'));
1851 --tk_util.debug('p_group_asset_id: '||to_char(p_group_asset_id));
1852
1853 --
1854 -- bug5149789: if we can prevent salvage_type or deprn_limit_type
1855 -- change once the member is added, then we can check against
1856 -- trx key. Otherwise we need to go with type now.
1857 -- if (p_trans_rec.transaction_key = 'GC') then -- bug5149789
1858 if (p_trans_rec.transaction_key = 'GC') or (p_salvage_limit_type = 'SUM') then
1859 OPEN c_get_member_trx;
1860 FETCH c_get_member_trx BULK COLLECT INTO tr_transaction_header_id
1861 , tr_transaction_type_code
1862 , tr_transaction_subtype
1863 , tr_transaction_key
1864 , tr_period_counter
1865 ;
1866 CLOSE c_get_member_trx;
1867 else -- bug5149789
1868 --
1869 -- bug5149789
1870 -- Even thought following cursor is using bulk, it should only return
1871 -- one row. It is using pl/sql table of columns to be consistent.
1872 OPEN c_get_member_trx_single;
1873 FETCH c_get_member_trx_single BULK COLLECT INTO tr_transaction_header_id
1874 , tr_transaction_type_code
1875 , tr_transaction_subtype
1876 , tr_transaction_key
1877 , tr_period_counter
1878 ;
1879 CLOSE c_get_member_trx_single;
1880
1881 end if; -- bug5149789
1882
1883 if (p_log_level_rec.statement_level) then
1884 fa_debug_pkg.add(l_calling_fn||'()+', 'Finish Getting Memebr Trxs',
1885 tr_transaction_header_id.COUNT);
1886 end if;
1887
1888 --
1889 -- Get Delta information for each transaction and populate delta information.
1890 --
1891 FOR i in 1..tr_transaction_header_id.COUNT LOOP
1892
1893 --bug6912446
1894 if (tr_transaction_type_code(i) = 'REINSTATEMENT') then
1895 if (p_log_level_rec.statement_level) then
1896 fa_debug_pkg.add(l_calling_fn, 'following period counter may change', tr_period_counter(i));
1897 end if;
1898 if (p_mrc_sob_type_code = 'R') then
1899 OPEN c_get_mc_ret_period(tr_transaction_header_id(i));
1900 FETCH c_get_mc_ret_period INTO tr_period_counter(i);
1901 CLOSE c_get_mc_ret_period;
1902 else
1903 OPEN c_get_ret_period(tr_transaction_header_id(i));
1904 FETCH c_get_ret_period INTO tr_period_counter(i);
1905 CLOSE c_get_ret_period;
1906 end if;
1907 if (p_log_level_rec.statement_level) then
1908 fa_debug_pkg.add(l_calling_fn, 'new tr_period_counter(i)', tr_period_counter(i));
1909 end if;
1910 end if;
1911 --End bug6912446
1912
1913 --Bug4622110: Following part of code have been uncommented
1914 -- Guess it was coded but not tested so it has never been used before
1915 l_reinstated := FALSE;
1916
1917 if (p_mrc_sob_type_code = 'R') then
1918 if (tr_transaction_key(i) = 'R') then
1919 OPEN c_get_mc_ret_info(tr_transaction_header_id(i));
1920 FETCH c_get_mc_ret_info INTO l_date_retired
1921 , l_cost_retired
1922 , l_reserve_retired
1923 , l_proceeds_of_sale
1924 , l_cost_of_removal;
1925 if c_get_mc_ret_info%NOTFOUND then
1926 l_reinstated := TRUE;
1927 end if;
1928
1929 CLOSE c_get_mc_ret_info;
1930
1931 end if;
1932 else
1933 if (tr_transaction_key(i) = 'R') then
1934 OPEN c_get_ret_info(tr_transaction_header_id(i));
1935 FETCH c_get_ret_info INTO l_date_retired
1936 , l_cost_retired
1937 , l_reserve_retired
1941 l_reinstated := TRUE;
1938 , l_proceeds_of_sale
1939 , l_cost_of_removal;
1940 if c_get_ret_info%NOTFOUND then
1942 end if;
1943
1944 CLOSE c_get_ret_info;
1945
1946 end if;
1947 end if;
1948
1949 if (not l_reinstated) or
1950 ((l_reinstated) and
1951 (tr_transaction_header_id(i) =
1952 p_trans_rec.member_transaction_header_id)) then
1953
1954 if (p_mrc_sob_type_code = 'R') then
1955 OPEN c_get_mc_deltas(tr_transaction_header_id(i));
1956 FETCH c_get_mc_deltas INTO l_cost
1957 , l_cip_cost
1958 , l_salvage_value
1959 , l_deprn_limit_amount
1960 , l_salvage_type
1961 , l_old_salvage_type
1962 , l_percent_salvage_value
1963 , l_old_percent_salvage_value
1964 , l_deprn_limit_type
1965 , l_old_deprn_limit_type
1966 , l_allowed_deprn_limit
1967 , l_old_allowed_deprn_limit;
1968 CLOSE c_get_mc_deltas;
1969 else
1970 OPEN c_get_deltas(tr_transaction_header_id(i));
1971 FETCH c_get_deltas INTO l_cost
1972 , l_cip_cost
1973 , l_salvage_value
1974 , l_deprn_limit_amount
1975 , l_salvage_type
1976 , l_old_salvage_type
1977 , l_percent_salvage_value
1978 , l_old_percent_salvage_value
1979 , l_deprn_limit_type
1980 , l_old_deprn_limit_type
1981 , l_allowed_deprn_limit
1982 , l_old_allowed_deprn_limit;
1983 CLOSE c_get_deltas;
1984 end if;
1985 /*
1986 --tk_util.debug('thid:cost:sal:dl: '||to_char(tr_transaction_header_id(i))||':'||
1987 to_char(l_cost)||':'||
1988 to_char(l_salvage_value)||':'||
1989 to_char(l_deprn_limit_amount));
1990 */
1991
1992 if (tr_transaction_header_id(i) <>
1993 p_trans_rec.member_transaction_header_id) then
1994
1995 -- Fix for 4713623
1996 -- this case happens when dpis of member is changed after ADDITION
1997 -- for example from jan to mar and bs table is only from march
1998 -- In such cases l_ind using tr_period_counter(i) - l_dpis_pc + 1
1999 -- can be negative.
2000 -- the fix handles that any transaction before current dpis
2001 -- is made to look from current dpis period
2002
2003 if (tr_period_counter(i) < l_dpis_pc) then
2004 l_ind := 1;
2005 else
2006 l_ind := tr_period_counter(i) - l_dpis_pc + 1;
2007 end if;
2008
2009 fa_amort_pvt.tmd_cost(l_ind) :=
2010 fa_amort_pvt.tmd_cost(l_ind) + l_cost;
2011 fa_amort_pvt.tmd_cip_cost(l_ind) :=
2012 fa_amort_pvt.tmd_cip_cost(l_ind) + l_cip_cost;
2013 fa_amort_pvt.tmd_salvage_value(l_ind) :=
2014 fa_amort_pvt.tmd_salvage_value(l_ind) +
2015 l_salvage_value;
2016 fa_amort_pvt.tmd_deprn_limit_amount(l_ind) :=
2017 fa_amort_pvt.tmd_deprn_limit_amount(l_ind) +
2018 l_deprn_limit_amount;
2019
2020 --
2021 -- Following line may be removed. This is not necessary
2022 -- since introduction of t_sal(limit)_thids.
2023 t_transaction_header_id(l_ind) := tr_transaction_header_id(i);
2024
2025 --
2026 -- Subsequent retroactive salvage/deprn limit change may override
2027 -- previously entered information. So copy only qualified salvage/
2028 -- deprn limit changes.
2029 --
2030 --tk_util.debug('t_sal_thid(l_ind): '||to_char(t_sal_thid(l_ind)));
2031 --tk_util.debug('tr_transaction_header_id(i): '||to_char(tr_transaction_header_id(i)));
2032 --tk_util.debug('l_percent_salvage_value: '||to_char(l_percent_salvage_value));
2033 --tk_util.debug('l_old_percent_salvage_value: '||to_char(l_old_percent_salvage_value));
2034 --tk_util.debug('l_salvage_type: '||l_salvage_type);
2035 --tk_util.debug('l_salvage_value: '||to_char(l_salvage_value));
2036
2037 if (t_sal_thid(l_ind) < tr_transaction_header_id(i)) and
2038 ((l_salvage_type <> l_old_salvage_type) or
2039 (nvl(l_percent_salvage_value, 0) <> nvl(l_old_percent_salvage_value, 0)) or
2040 (l_salvage_type = 'AMT' and l_salvage_value <> 0)) then
2041
2042 t_sal_thid(l_ind) := tr_transaction_header_id(i);
2043 t_salvage_type(l_ind) := l_salvage_type;
2044 t_percent_salvage_value(l_ind) := l_percent_salvage_value;
2045
2046 end if;
2047
2048 if (t_limit_thid(l_ind) < tr_transaction_header_id(i)) and
2049 ((l_deprn_limit_type <> l_old_deprn_limit_type) or
2050 (l_allowed_deprn_limit <> l_old_allowed_deprn_limit) or
2051 (l_deprn_limit_type = 'AMT' and l_deprn_limit_amount <> 0)) then
2052
2053 t_limit_thid(l_ind) := tr_transaction_header_id(i);
2054 t_deprn_limit_type(l_ind) := l_deprn_limit_type;
2058
2055 t_allowed_deprn_limit(l_ind) := l_allowed_deprn_limit;
2056
2057 end if;
2059 else
2060 l_cur_trx_period_counter := tr_period_counter(i); -- Bug4958977
2061 x_asset_fin_rec.cost := l_cost;
2062 x_asset_fin_rec.cip_cost := l_cip_cost;
2063 x_asset_fin_rec.salvage_value := l_salvage_value;
2064 x_asset_fin_rec.allowed_deprn_limit_amount := l_deprn_limit_amount;
2065 x_asset_fin_rec.salvage_type := l_salvage_type;
2066 x_asset_fin_rec.percent_salvage_value := l_percent_salvage_value;
2067 x_asset_fin_rec.deprn_limit_type := l_deprn_limit_type;
2068 x_asset_fin_rec.allowed_deprn_limit := l_allowed_deprn_limit;
2069
2070 -- Bug4958977: Adding following if statements
2071 if (nvl(l_cost, 0) = 0) and
2072 (nvl(l_cip_cost, 0) = 0) and
2073 (nvl(l_salvage_value, 0) = 0) and
2074 (nvl(l_deprn_limit_amount, 0) = 0) then
2075
2076 if (p_log_level_rec.statement_level) then
2077 fa_debug_pkg.add(l_calling_fn, 'calling', 'check_dpis_change', p_log_level_rec => p_log_level_rec);
2078 end if;
2079
2080 if not check_dpis_change (
2081 p_book_type_code => p_asset_hdr_rec.book_type_code
2082 , p_transaction_header_id => tr_transaction_header_id(i)
2083 , p_group_asset_id => p_group_asset_id
2084 , x_asset_fin_rec => l_asset_fin_rec
2085 , x_period_counter_out => l_period_counter
2086 , p_mrc_sob_type_code => p_mrc_sob_type_code
2087 , p_log_level_rec => p_log_level_rec) then
2088 if (p_log_level_rec.statement_level) then
2089 fa_debug_pkg.add(l_calling_fn, 'error calling', 'check_dpis_change', p_log_level_rec => p_log_level_rec);
2090 end if;
2091 raise bld_err;
2092 end if;
2093
2094 if (l_period_counter is not null) then
2095 x_asset_fin_rec.cost := l_asset_fin_rec.cost;
2096 x_asset_fin_rec.cip_cost := l_asset_fin_rec.cip_cost;
2097 x_asset_fin_rec.salvage_value := l_asset_fin_rec.salvage_value;
2098 x_asset_fin_rec.allowed_deprn_limit_amount := l_asset_fin_rec.allowed_deprn_limit_amount;
2099 end if;
2100 end if; -- (nvl(l_cost, 0) = 0) and
2101
2102 if (p_log_level_rec.statement_level) then
2103 fa_debug_pkg.add(l_calling_fn, 'cost', x_asset_fin_rec.cost, p_log_level_rec => p_log_level_rec);
2104 fa_debug_pkg.add(l_calling_fn, 'cip_cost', x_asset_fin_rec.cip_cost, p_log_level_rec => p_log_level_rec);
2105 fa_debug_pkg.add(l_calling_fn, 'salvage_value', x_asset_fin_rec.salvage_value, p_log_level_rec => p_log_level_rec);
2106 fa_debug_pkg.add(l_calling_fn, 'allowed_deprn_limit_amount',
2107 x_asset_fin_rec.allowed_deprn_limit_amount, p_log_level_rec => p_log_level_rec);
2108 fa_debug_pkg.add(l_calling_fn, 'salvage_type', x_asset_fin_rec.salvage_type, p_log_level_rec => p_log_level_rec);
2109 fa_debug_pkg.add(l_calling_fn, 'percent_salvage_value', x_asset_fin_rec.percent_salvage_value, p_log_level_rec => p_log_level_rec);
2110 fa_debug_pkg.add(l_calling_fn, 'deprn_limit_type', x_asset_fin_rec.deprn_limit_type, p_log_level_rec => p_log_level_rec);
2111 fa_debug_pkg.add(l_calling_fn, 'allowed_deprn_limit', x_asset_fin_rec.allowed_deprn_limit, p_log_level_rec => p_log_level_rec);
2112 end if;
2113
2114 end if; -- (tr_transaction_header_id(i) <>
2115
2116 end if; -- (not l_reinstated) or
2117
2118 END LOOP;
2119
2120 if (p_log_level_rec.statement_level) then
2121 fa_debug_pkg.add(l_calling_fn||'()+', 'Finish Getting Deltas for Each Trx',
2122 tr_transaction_header_id.COUNT);
2123 end if;
2124
2125 --
2126 -- if this is not reclass, return delta
2127 -- if this is reclass, return member's from dpis no matter
2128 -- what is reclass date is.
2129 -- if reclass date is not dpis, update won't include upto that period.
2130 -- adjust foall update statement to update necessary period
2131 -- note: in that case, first period for the reclass got some hit
2132 -- of cost, reserve from dpis to the period
2133 --
2134
2135 if (p_reclass_src_dest is not null) then
2136 l_sal_thid := t_transaction_header_id(1);
2137 l_limit_thid := t_transaction_header_id(1);
2138
2139 fa_amort_pvt.tmd_period_counter(1) := t_period_counter(1);
2140
2141 x_td_cost(1) := fa_amort_pvt.tmd_cost(1);
2142 t_cost(1) := fa_amort_pvt.tmd_cost(1);
2143 fa_amort_pvt.tm_cost(1) := fa_amort_pvt.tmd_cost(1);
2144 x_td_cip_cost(1) := fa_amort_pvt.tmd_cip_cost(1);
2145 t_cip_cost(1) := fa_amort_pvt.tmd_cip_cost(1);
2146 fa_amort_pvt.tm_cip_cost(1) := fa_amort_pvt.tmd_cip_cost(1);
2147
2148 --tk_util.debug('fa_amort_pvt.tmd_period_counter(1): '||to_char(fa_amort_pvt.tmd_period_counter(1)));
2149 --tk_util.debug('fa_amort_pvt.tmd_cost(1): '||to_char(fa_amort_pvt.tmd_cost(1)));
2150 --tk_util.debug('fa_amort_pvt.tmd_cip_cost(1): '||to_char(fa_amort_pvt.tmd_cip_cost(1)));
2151 --tk_util.debug('fa_amort_pvt.tmd_salvage_value(1): '||to_char(fa_amort_pvt.tmd_salvage_value(1)));
2152
2153 if (t_salvage_type(1) = 'PCT') then
2154 l_temp_num := t_cost(1) * t_percent_salvage_value(1) * sign(t_cost(1));
2155 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2156 l_temp_num := l_temp_num * sign(t_cost(1));
2157 x_td_salvage_value(1) := l_temp_num;
2161 else
2158 t_salvage_value(1) := l_temp_num;
2159 fa_amort_pvt.tmd_salvage_value(1) := l_temp_num;
2160 fa_amort_pvt.tm_salvage_value(1) := l_temp_num;
2162 x_td_salvage_value(1) := fa_amort_pvt.tmd_salvage_value(1);
2163 t_salvage_value(1) := fa_amort_pvt.tmd_salvage_value(1);
2164 fa_amort_pvt.tmd_salvage_value(1) := fa_amort_pvt.tmd_salvage_value(1);
2165 fa_amort_pvt.tm_salvage_value(1) := fa_amort_pvt.tmd_salvage_value(1);
2166 end if;
2167 --tk_util.debug('x_td_salvage_value(1): '||to_char(x_td_salvage_value(1)));
2168
2169 if (t_deprn_limit_type(1) = 'PCT') then
2170 l_temp_num := t_cost(1) * (1 - t_allowed_deprn_limit(1)) * sign(t_cost(1));
2171 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2172 l_temp_num := l_temp_num * sign(t_cost(1));
2173 x_td_deprn_limit_amount(1) := l_temp_num;
2174 t_deprn_limit_amount(1) := l_temp_num;
2175 fa_amort_pvt.tmd_deprn_limit_amount(1) := l_temp_num;
2176 fa_amort_pvt.tm_deprn_limit_amount(1) := l_temp_num;
2177 elsif (t_deprn_limit_type(1) = 'NONE') then
2178 x_td_deprn_limit_amount(1) := x_td_salvage_value(1);
2179 t_deprn_limit_amount(1) := x_td_salvage_value(1);
2180 fa_amort_pvt.tmd_deprn_limit_amount(1) := x_td_salvage_value(1);
2181 fa_amort_pvt.tm_deprn_limit_amount(1) := x_td_salvage_value(1);
2182 else
2183 x_td_deprn_limit_amount(1) := fa_amort_pvt.tmd_deprn_limit_amount(1);
2184 t_deprn_limit_amount(1) := fa_amort_pvt.tmd_deprn_limit_amount(1);
2185 fa_amort_pvt.tmd_deprn_limit_amount(1) := fa_amort_pvt.tmd_deprn_limit_amount(1);
2186 fa_amort_pvt.tm_deprn_limit_amount(1) := fa_amort_pvt.tmd_deprn_limit_amount(1);
2187 end if;
2188
2189 if (p_log_level_rec.statement_level) then
2190 fa_debug_pkg.add(l_calling_fn||'()+', 'Finish Populating First Record',
2191 x_td_cost(1));
2192 end if;
2193
2194 FOR i in 2..t_period_counter.COUNT LOOP
2195
2196 fa_amort_pvt.tmd_period_counter(i) := t_period_counter(i);
2197 x_td_cost(i) := fa_amort_pvt.tmd_cost(i);
2198 t_cost(i) := fa_amort_pvt.tmd_cost(i) + t_cost(i - 1);
2199 fa_amort_pvt.tm_cost(i) := fa_amort_pvt.tmd_cost(i) + t_cost(i - 1);
2200 x_td_cip_cost(i) := fa_amort_pvt.tmd_cip_cost(i);
2201 t_cip_cost(i) := fa_amort_pvt.tmd_cip_cost(i) + t_cip_cost(i - 1);
2202 fa_amort_pvt.tm_cip_cost(i) := fa_amort_pvt.tmd_cip_cost(i) + t_cip_cost(i - 1);
2203 --tk_util.debug('fa_amort_pvt.tmd_period_counter(i): '||to_char(fa_amort_pvt.tmd_period_counter(i)));
2204 --tk_util.debug('fa_amort_pvt.tm_cost(i): '||to_char(fa_amort_pvt.tm_cost(i)));
2205 --tk_util.debug('fa_amort_pvt.tmd_cost(i): '||to_char(fa_amort_pvt.tmd_cost(i)));
2206 --tk_util.debug('x_td_cost(i): '||to_char(x_td_cost(i)));
2207 --tk_util.debug('fa_amort_pvt.tmd_cip_cost(i): '||to_char(fa_amort_pvt.tmd_cip_cost(i)));
2208 --tk_util.debug('fa_amort_pvt.tmd_salvage_value(i): '||to_char(fa_amort_pvt.tmd_salvage_value(i)));
2209
2210 if (t_sal_thid(i) = 0) or
2211 (l_sal_thid >= t_sal_thid(i)) then
2212 t_salvage_type(i) := t_salvage_type(i - 1);
2213 t_percent_salvage_value(i) := t_percent_salvage_value(i - 1);
2214 end if;
2215
2216 if (t_limit_thid(i) = 0) or
2217 (l_limit_thid >= t_limit_thid(i)) then
2218 t_deprn_limit_type(i) := t_deprn_limit_type(i - 1);
2219 t_allowed_deprn_limit(i) := t_allowed_deprn_limit(i - 1);
2220 end if;
2221
2222 if (t_salvage_type(i) = 'PCT') then
2223 l_temp_num := t_cost(i) * t_percent_salvage_value(i) * sign(t_cost(i));
2224 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2225 l_temp_num := l_temp_num * sign(t_cost(i));
2226 x_td_salvage_value(i) := l_temp_num;
2227 t_salvage_value(i) := l_temp_num - x_td_salvage_value(i - 1);
2228 fa_amort_pvt.tmd_salvage_value(i) := l_temp_num - fa_amort_pvt.tm_salvage_value(i - 1);
2229 fa_amort_pvt.tm_salvage_value(i) := l_temp_num;
2230 else
2231 x_td_salvage_value(i) := fa_amort_pvt.tmd_salvage_value(i);
2232 t_salvage_value(i) := fa_amort_pvt.tmd_salvage_value(i) + t_salvage_value(i - 1);
2233 fa_amort_pvt.tm_salvage_value(i) := fa_amort_pvt.tmd_salvage_value(i) + t_salvage_value(i - 1);
2234 end if;
2235 --tk_util.debug('x_td_salvage_value(i): '||to_char(x_td_salvage_value(i)));
2236
2237 if (t_deprn_limit_type(i) = 'PCT') then
2238 l_temp_num := t_cost(1) * (1 - t_allowed_deprn_limit(1)) * sign(t_cost(1));
2239 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2240 l_temp_num := l_temp_num * sign(t_cost(i));
2241 t_deprn_limit_amount(i) := l_temp_num;
2242 x_td_deprn_limit_amount(i) := l_temp_num - t_deprn_limit_amount(i - 1);
2243 fa_amort_pvt.tmd_deprn_limit_amount(i) := l_temp_num -
2244 fa_amort_pvt.tm_deprn_limit_amount(i - 1);
2245 fa_amort_pvt.tm_deprn_limit_amount(i) := l_temp_num;
2246 elsif (t_deprn_limit_type(i) = 'NONE') then
2247 t_deprn_limit_amount(i) := x_td_salvage_value(i);
2248 x_td_deprn_limit_amount(i) := t_salvage_value(i) - t_deprn_limit_amount(i - 1);
2249 fa_amort_pvt.tmd_deprn_limit_amount(i) := fa_amort_pvt.tm_salvage_value(i) -
2250 fa_amort_pvt.tm_deprn_limit_amount(i - 1);
2251 fa_amort_pvt.tm_deprn_limit_amount(i) := x_td_salvage_value(i);
2252 else
2253 x_td_deprn_limit_amount(i) := fa_amort_pvt.tmd_deprn_limit_amount(i);
2254 t_deprn_limit_amount(i) := fa_amort_pvt.tmd_deprn_limit_amount(i) + t_deprn_limit_amount(i - 1);
2258 END LOOP; -- i in 2..t_period_counter.COUNT
2255 fa_amort_pvt.tm_deprn_limit_amount(i) := fa_amort_pvt.tmd_deprn_limit_amount(i) + t_deprn_limit_amount(i - 1);
2256 end if;
2257 --tk_util.debug('bottom of loop');
2259 --tk_util.debug('End Loop');
2260
2261 l_ind := p_period_rec.period_counter - t_period_counter(1) + 1;
2262 --tk_util.debug('l_ind: '||to_char(l_ind));
2263
2264 x_asset_fin_rec_reclass.cost := t_cost(l_ind);
2265 x_asset_fin_rec_reclass.cip_cost := t_cip_cost(l_ind);
2266 if (t_salvage_type(l_ind) = 'PCT') then
2267 x_asset_fin_rec_reclass.salvage_value := x_td_salvage_value(l_ind);
2268 else
2269 x_asset_fin_rec_reclass.salvage_value := t_salvage_value(l_ind);
2270 end if;
2271 if (t_deprn_limit_type(l_ind) = 'PCT') then
2272 x_asset_fin_rec_reclass.allowed_deprn_limit_amount := x_td_deprn_limit_amount(l_ind);
2273 else
2274 x_asset_fin_rec_reclass.allowed_deprn_limit_amount := t_deprn_limit_amount(l_ind);
2275 end if;
2276
2277
2278 else
2279
2280 --
2281 -- Prepare delta for non-group reclass adjustments
2282 --
2283
2284 l_sal_thid := t_transaction_header_id(1);
2285 l_limit_thid := t_transaction_header_id(1);
2286 t_cost(1) := fa_amort_pvt.tmd_cost(1);
2287 t_cip_cost(1) := fa_amort_pvt.tmd_cip_cost(1);
2288
2289 if (t_salvage_type(1) = 'PCT') then
2290 l_temp_num := t_cost(1) * t_percent_salvage_value(1);
2291 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2292 t_salvage_value(1) := l_temp_num;
2293 else
2294 t_salvage_value(1) := fa_amort_pvt.tmd_salvage_value(1);
2295 end if;
2296
2297 --tk_util.debug('t_percent_salvage_value(1): '||to_char(t_percent_salvage_value(1)));
2298 --tk_util.debug('t_salvage_value(1): '||to_char(t_salvage_value(1)));
2299
2300 if (t_deprn_limit_type(1) = 'PCT') then
2301 l_temp_num := t_cost(1) * (1 - t_allowed_deprn_limit(1));
2302 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2303 t_deprn_limit_amount(1) := l_temp_num;
2304 elsif (t_deprn_limit_type(1) = 'NONE') then
2305 t_deprn_limit_amount(1) := t_salvage_value(1);
2306 else
2307 t_deprn_limit_amount(1) := fa_amort_pvt.tmd_deprn_limit_amount(1);
2308 end if;
2309
2310 if (p_log_level_rec.statement_level) then
2311 fa_debug_pkg.add(l_calling_fn||'()+', 'Finish Populating First Record',
2312 t_cost(1));
2313 end if;
2314
2315 FOR i in 2..t_period_counter.COUNT LOOP
2316
2317 t_cost(i) := fa_amort_pvt.tmd_cost(i) + t_cost(i - 1);
2318 t_cip_cost(i) := fa_amort_pvt.tmd_cip_cost(i) + t_cip_cost(i - 1);
2319
2320 if (t_sal_thid(i) = 0) or
2321 (l_sal_thid >= t_sal_thid(i)) then
2322 t_salvage_type(i) := t_salvage_type(i - 1);
2323 t_percent_salvage_value(i) := t_percent_salvage_value(i - 1);
2324 end if;
2325
2326 if (t_limit_thid(i) = 0) or
2327 (l_limit_thid >= t_limit_thid(i)) then
2328 t_deprn_limit_type(i) := t_deprn_limit_type(i - 1);
2329 t_allowed_deprn_limit(i) := t_allowed_deprn_limit(i - 1);
2330 end if;
2331
2332 if (t_salvage_type(i) = 'PCT') then
2333 l_temp_num := t_cost(i) * t_percent_salvage_value(i);
2334 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2335 t_salvage_value(i) := l_temp_num;
2336 else
2337 t_salvage_value(i) := fa_amort_pvt.tmd_salvage_value(i) +
2338 t_salvage_value(i - 1);
2339 end if;
2340 --tk_util.debug('t_percent_salvage_value('||to_char(i)||'): '||to_char(t_percent_salvage_value(i)));
2341 --tk_util.debug('t_salvage_value('||to_char(i)||'): '||to_char(t_salvage_value(i)));
2342
2343 if (t_deprn_limit_type(i) = 'PCT') then
2344 l_temp_num := t_cost(i) * (1 - t_allowed_deprn_limit(i));
2345 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2346 t_deprn_limit_amount(i) := l_temp_num;
2347 elsif (t_deprn_limit_type(i) = 'NONE') then
2348 t_deprn_limit_amount(i) := t_salvage_value(i);
2349 else
2350 t_deprn_limit_amount(i) := fa_amort_pvt.tmd_deprn_limit_amount(i) +
2351 t_deprn_limit_amount(i - 1);
2352 end if;
2353
2354 END LOOP; -- i in 2..t_period_counter.COUNT
2355
2356 if (p_log_level_rec.statement_level) then
2357 fa_debug_pkg.add(l_calling_fn||'()+', 'Finish Populating All Records',
2358 t_cost(t_period_counter.COUNT));
2359 end if;
2360
2361 /* Added if condition for bug 7511470 */
2362 if p_trans_rec.transaction_key = 'MS' then
2363 l_ind := l_cur_trx_period_counter - t_period_counter(1) + 1;
2364 else
2365 l_ind := p_period_rec.period_counter - t_period_counter(1) + 1;
2366 end if;
2367
2368 --tk_util.debug('x_td_cost(1): '||to_char(x_asset_fin_rec.cost));
2369 --tk_util.debug('l_ind: '||to_char(l_ind));
2370
2371 --
2372 -- Now Construct delta table to be applied against group table
2373 --
2374 -- Bug4958977: Replacing with following if statement.
2375 -- Original lines are executed if first condition is met
2376
2377 x_td_period_counter(1) := t_period_counter(l_ind);
2378 if (l_cur_trx_period_counter = x_td_period_counter(1)) then
2379 x_td_cost(1) := x_asset_fin_rec.cost;
2380 x_td_cip_cost(1) := x_asset_fin_rec.cip_cost;
2384 else
2381 elsif (l_period_counter = x_td_period_counter(1)) then
2382 x_td_cost(1) := (-1 * l_asset_fin_rec.cost);
2383 x_td_cip_cost(1) := (-1 * l_asset_fin_rec.cip_cost);
2385 x_td_cost(1) := 0;
2386 x_td_cip_cost(1) := 0;
2387 end if;
2388
2389 -- Bug4958977: Use x_td_xxxx instead of x_asset_fin_rec
2390 t_cost(l_ind) := t_cost(l_ind) + x_td_cost(1);
2391 t_cip_cost(l_ind) := t_cip_cost(l_ind) + x_td_cip_cost(1);
2392
2393 --tk_util.debug('x_td_period_counter(1): '|| to_char(x_td_period_counter(1)));
2394 --tk_util.debug('x_td_cost(1): '|| to_char(x_td_cost(1)));
2395 --tk_util.debug('t_cost('||to_char(l_ind)||'): '|| to_char(t_cost(l_ind)));
2396 --tk_util.debug('t_salvage_type('||to_char(l_ind)||'): '|| t_salvage_type(l_ind));
2397 --tk_util.debug('x_asset_fin_rec.percent_salvage_value: '|| to_char(x_asset_fin_rec.percent_salvage_value));
2398 --tk_util.debug('fa_amort_pvt.tmd_salvage_value('||to_char(l_ind)||'): '||to_char(fa_amort_pvt.tmd_salvage_value(l_ind)));
2399 --tk_util.debug('t_salvage_value('||to_char(l_ind)||'): '|| to_char(t_salvage_value(l_ind)));
2400
2401 if (t_salvage_type(l_ind) = 'PCT') then
2402 -- l_temp_num := t_cost(l_ind) * t_percent_salvage_value(l_ind);
2403 l_temp_num := t_cost(l_ind) * x_asset_fin_rec.percent_salvage_value;
2404 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2405
2406 x_td_salvage_value(1) := l_temp_num - t_salvage_value(l_ind);
2407 t_salvage_value(l_ind) := l_temp_num;
2408 else
2409 x_td_salvage_value(1) := x_asset_fin_rec.salvage_value;
2410 t_salvage_value(l_ind) := t_salvage_value(l_ind) + x_asset_fin_rec.salvage_value;
2411 end if;
2412
2413 if (t_deprn_limit_type(l_ind) = 'PCT') then
2414 -- l_temp_num := t_cost(l_ind) * (1 - t_allowed_deprn_limit(l_ind));
2415 l_temp_num := t_cost(l_ind) * (1 - x_asset_fin_rec.allowed_deprn_limit);
2416 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2417 x_td_deprn_limit_amount(1) := l_temp_num - t_deprn_limit_amount(l_ind);
2418
2419 t_deprn_limit_amount(l_ind) := l_temp_num;
2420 else
2421 x_td_deprn_limit_amount(1) := x_asset_fin_rec.allowed_deprn_limit_amount;
2422 t_deprn_limit_amount(l_ind) := t_deprn_limit_amount(l_ind) +
2423 x_asset_fin_rec.allowed_deprn_limit_amount;
2424 end if;
2425 --tk_util.debug('x_td_salvage_value(1): '||to_char(x_td_salvage_value(1)));
2426 --tk_util.debug('x_td_deprn_limit_amount(1): '||to_char(x_td_deprn_limit_amount(1)));
2427
2428
2429 FOR i in 2..(t_period_counter.LAST - l_ind + 1) LOOP
2430 l_ind := l_ind + 1;
2431
2432
2433 --Bug4958977: Conditionally populate x_td_cost(cip_cost) instead of populating
2434 -- 0 all the time. Modified until next debug statement
2435 x_td_period_counter(i) := t_period_counter(l_ind);
2436
2437 if (l_cur_trx_period_counter = x_td_period_counter(i)) then
2438 x_td_cost(i) := x_asset_fin_rec.cost;
2439 x_td_cip_cost(i) := x_asset_fin_rec.cip_cost;
2440 t_cost(l_ind) := t_cost(l_ind) + x_td_cost(i);
2441 t_cip_cost(l_ind) := t_cip_cost(l_ind) + x_td_cip_cost(i);
2442 elsif (l_period_counter = x_td_period_counter(i)) then
2443 x_td_cost(i) := (-1 * l_asset_fin_rec.cost);
2444 x_td_cip_cost(i) := (-1 * l_asset_fin_rec.cip_cost);
2445 t_cost(l_ind) := t_cost(l_ind) + x_td_cost(i);
2446 t_cip_cost(l_ind) := t_cip_cost(l_ind) + x_td_cip_cost(i);
2447 else
2448 x_td_cost(i) := 0;
2449 x_td_cip_cost(i) := 0;
2450 /*Bug# 8548876 Modified following assignments*/
2451 t_cost(l_ind) := t_cost(l_ind) + x_asset_fin_rec.cost;
2452 t_cip_cost(l_ind) := t_cip_cost(l_ind) + x_asset_fin_rec.cip_cost;
2453 end if;
2454
2455 if (p_log_level_rec.statement_level) then
2456 fa_debug_pkg.add(l_calling_fn, 'i', i, p_log_level_rec => p_log_level_rec);
2457 fa_debug_pkg.add(l_calling_fn, 'x_td_period_counter(i)', x_td_period_counter(i));
2458 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.tmd_salvage_value',
2459 fa_amort_pvt.tmd_salvage_value(l_ind));
2460 fa_debug_pkg.add(l_calling_fn, 't_salvage_type(l_ind)', t_salvage_type(l_ind));
2461 fa_debug_pkg.add(l_calling_fn, 't_salvage_value', t_salvage_value(l_ind));
2462 end if;
2463
2464
2465 if (t_salvage_type(l_ind) = 'PCT') then
2466 l_temp_num := t_cost(l_ind) * x_asset_fin_rec.percent_salvage_value;
2467
2468 if (p_log_level_rec.statement_level) then
2469 fa_debug_pkg.add(l_calling_fn, 'l_temp_num', l_temp_num, p_log_level_rec => p_log_level_rec);
2470 end if;
2471
2472 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2473
2474 x_td_salvage_value(i) := l_temp_num - t_salvage_value(l_ind);
2475
2476 t_salvage_value(l_ind) := l_temp_num;
2477 else
2478 x_td_salvage_value(i) := t_salvage_value(l_ind - 1) - t_salvage_value(l_ind);
2479
2480 t_salvage_value(i) := t_salvage_value(l_ind) + t_salvage_value(l_ind - 1);
2481 end if;
2482 --tk_util.debug('x_td_salvage_value('||to_char(i)||'): '||to_char(x_td_salvage_value(i)));
2483
2484 if (t_deprn_limit_type(i) = 'PCT') then
2485 -- l_temp_num := t_cost(l_ind) * (1 - t_allowed_deprn_limit(l_ind));
2486 l_temp_num := t_cost(l_ind) * (1 - x_asset_fin_rec.allowed_deprn_limit);
2490
2487 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
2488
2489 x_td_deprn_limit_amount(i) := l_temp_num - t_deprn_limit_amount(l_ind);
2491 t_deprn_limit_amount(l_ind) := l_temp_num;
2492 else
2493 x_td_deprn_limit_amount(i) := t_deprn_limit_amount(l_ind - 1) -
2494 t_deprn_limit_amount(l_ind);
2495
2496 t_deprn_limit_amount(l_ind) := t_deprn_limit_amount(l_ind) +
2497 t_deprn_limit_amount(l_ind - 1);
2498 end if;
2499
2500 END LOOP; -- i in 2..t_cost.COUNT
2501
2502 end if; -- (p_reclass_src_dest is null)
2503
2504 if (p_log_level_rec.statement_level) then
2505 fa_debug_pkg.add(l_calling_fn||'()-', '# of rows in delta tables', x_td_cost.COUNT);
2506 end if;
2507
2508 return TRUE;
2509
2510 EXCEPTION
2511 WHEN bld_err THEN
2512 if (p_log_level_rec.statement_level) then
2513 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'bld_err', p_log_level_rec => p_log_level_rec);
2514 end if;
2515
2516 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
2517 return false;
2518
2519 WHEN OTHERS THEN
2520 if (p_log_level_rec.statement_level) then
2521 fa_debug_pkg.add(l_calling_fn||'(OTHERS)-', 'sqlcode', sqlcode);
2522 end if;
2523
2524 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
2525 return false;
2526
2527 END buildMemberTable;
2528
2529 --+==============================================================================
2530 -- Function: CurrentPeriodAdj
2531 --
2532 --
2533 --
2534 --
2535 --
2536 --+==============================================================================
2537 FUNCTION CurrentPeriodAdj(
2538 p_trans_rec FA_API_TYPES.trans_rec_type,
2539 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
2540 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
2541 p_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type,
2542 p_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type default null,
2543 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
2544 p_period_rec FA_API_TYPES.period_rec_type,
2545 p_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type default null,
2546 p_proceeds_of_sale NUMBER default 0,
2547 p_cost_of_removal NUMBER default 0,
2548 p_calling_fn VARCHAR2,
2549 p_mrc_sob_type_code VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
2550 return BOOLEAN is
2551
2552 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.CurrentPeriodAdj';
2553
2554 CURSOR c_get_deltas IS
2555 select inbk.salvage_value - nvl(outbk.salvage_value, 0)
2556 , nvl(inbk.allowed_deprn_limit_amount, 0) -
2557 nvl(outbk.allowed_deprn_limit_amount, 0)
2558 from fa_books inbk,
2559 fa_books outbk
2560 where outbk.asset_id(+) = inbk.asset_id
2561 and outbk.book_type_code(+) = inbk.book_type_code
2562 and inbk.transaction_header_id_in = p_trans_rec.member_transaction_header_id
2563 and outbk.transaction_header_id_out(+) = inbk.transaction_header_id_in;
2564
2565 CURSOR c_get_mc_deltas IS
2566 select inbk.salvage_value - nvl(outbk.salvage_value, 0)
2567 , nvl(inbk.allowed_deprn_limit_amount, 0) -
2568 nvl(outbk.allowed_deprn_limit_amount, 0)
2569 from fa_mc_books inbk,
2570 fa_mc_books outbk
2571 where outbk.asset_id(+) = inbk.asset_id
2572 and outbk.book_type_code(+) = inbk.book_type_code
2573 and inbk.transaction_header_id_in = p_trans_rec.member_transaction_header_id
2574 and outbk.transaction_header_id_out(+) = inbk.transaction_header_id_in
2575 and inbk.set_of_books_id = p_asset_hdr_rec.set_of_books_id
2576 and outbk.set_of_books_id(+) = p_asset_hdr_rec.set_of_books_id; --Bug 9099329
2577
2578 --
2579 -- Cursor to get retirement information using retirement
2580 -- transaction_header_id
2581 --
2582 CURSOR c_get_ret_info (c_transaction_header_id number) IS
2583 select ret.proceeds_of_sale
2584 , ret.cost_of_removal
2585 , -1 * nvl(ret.reserve_retired, 0)
2586 , -1 * nbv_retired
2587 from fa_retirements ret
2588 where ret.transaction_header_id_in = c_transaction_header_id
2589 and ret.transaction_header_id_out is null;
2590
2591 CURSOR c_get_mc_ret_info (c_transaction_header_id number) IS
2592 select ret.proceeds_of_sale
2593 , ret.cost_of_removal
2594 , -1 * nvl(ret.reserve_retired, 0)
2595 , -1 * nbv_retired
2596 from fa_mc_retirements ret
2597 where ret.transaction_header_id_in = c_transaction_header_id
2598 and ret.transaction_header_id_out is null
2599 and ret.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
2600
2601 --
2602 -- Cursor to get retirement information using reinsatement
2603 -- transaction_header_id
2604 --
2605 CURSOR c_get_rein_info (c_transaction_header_id number) IS
2606 select -1 * ret.proceeds_of_sale
2607 , -1 * ret.cost_of_removal
2608 , nvl(ret.reserve_retired, 0)
2609 , nbv_retired
2610 from fa_retirements ret
2611 , fa_transaction_headers mth
2612 where mth.transaction_header_id = c_transaction_header_id
2613 and mth.asset_id = ret.asset_id
2617
2614 and mth.book_type_code = p_asset_hdr_rec.book_type_code
2615 and ret.book_type_code = p_asset_hdr_rec.book_type_code
2616 and ret.transaction_header_id_out = c_transaction_header_id;
2618 CURSOR c_get_mc_rein_info (c_transaction_header_id number) IS
2619 select -1 * ret.proceeds_of_sale
2620 , -1 * ret.cost_of_removal
2621 , nvl(ret.reserve_retired, 0)
2622 , nbv_retired
2623 from fa_mc_retirements ret
2624 , fa_transaction_headers mth
2625 where mth.transaction_header_id = c_transaction_header_id
2626 and mth.asset_id = ret.asset_id
2627 and mth.book_type_code = p_asset_hdr_rec.book_type_code
2628 and ret.book_type_code = p_asset_hdr_rec.book_type_code
2629 and ret.transaction_header_id_out = c_transaction_header_id
2630 and ret.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
2631
2632 CURSOR c_check_record_exists IS
2633 select bs.period_counter
2634 from fa_books_summary bs
2635 where bs.asset_id = p_asset_hdr_rec.asset_id
2636 and bs.book_type_code = p_asset_hdr_rec.book_type_code
2637 and bs.period_counter = p_period_rec.period_counter;
2638
2639 CURSOR c_check_mc_record_exists IS
2640 select bs.period_counter
2641 from fa_mc_books_summary bs
2642 where bs.asset_id = p_asset_hdr_rec.asset_id
2643 and bs.book_type_code = p_asset_hdr_rec.book_type_code
2644 and bs.period_counter = p_period_rec.period_counter
2645 and bs.set_of_books_id = p_asset_hdr_rec.set_of_books_id ;
2646
2647
2648 l_asset_id NUMBER(15);
2649 l_delta_salvage_value NUMBER;
2650 l_delta_deprn_limit_amount NUMBER;
2651 l_expense_amount NUMBER;
2652 l_reserve_amount NUMBER;
2653 l_unplanned_amount NUMBER := 0;
2654
2655 l_proceeds_of_sale NUMBER;
2656 l_cost_of_removal NUMBER;
2657 l_reserve_retired NUMBER;
2658 l_nbv_retired NUMBER;
2659
2660 l_depreciate_flag_change BOOLEAN := FALSE;
2661 l_disabled_flag_change BOOLEAN := FALSE;
2662
2663 l_temp_num NUMBER; -- temporary numbers for calculation
2664 l_valid_type_change BOOLEAN := TRUE;
2665
2666 adj_err EXCEPTION;
2667
2668 BEGIN
2669
2670 if (p_log_level_rec.statement_level) then
2671 fa_debug_pkg.add(l_calling_fn||'()+', 'asset type', p_asset_type_rec.asset_type);
2672 fa_debug_pkg.add(l_calling_fn, 'member trx id',
2673 p_trans_rec.member_transaction_header_id, p_log_level_rec => p_log_level_rec);
2674 fa_debug_pkg.add(l_calling_fn, 'trx key',
2675 p_trans_rec.transaction_key, p_log_level_rec => p_log_level_rec);
2676 end if;
2677
2678 -- Bug5149789: checking whether member exists or not
2679 -- Call function check_member_existence if either of
2680 -- salvage or deprn limit type is being changed and there is 0 group cost
2681 if (((px_asset_fin_rec_new.salvage_type = 'SUM') and
2682 (px_asset_fin_rec_new.salvage_type <> nvl(p_asset_fin_rec_old.salvage_type,
2683 px_asset_fin_rec_new.salvage_type))) or
2684 ((px_asset_fin_rec_new.deprn_limit_type = 'SUM') and
2685 (px_asset_fin_rec_new.deprn_limit_type <> nvl(p_asset_fin_rec_old.deprn_limit_type,
2686 px_asset_fin_rec_new.deprn_limit_type)))) then
2687
2688 if (px_asset_fin_rec_new.cost = 0) then
2689
2690 if not check_member_existence (p_asset_hdr_rec => p_asset_hdr_rec,
2691 p_log_level_rec => p_log_level_rec) then
2692 if (p_log_level_rec.statement_level) then
2693 fa_debug_pkg.add(l_calling_fn, 'calling check_member_existence', 'FAILED', p_log_level_rec => p_log_level_rec);
2694 end if;
2695
2696 l_valid_type_change := FALSE;
2697
2698 end if;
2699
2700 else
2701 if (p_log_level_rec.statement_level) then
2702 fa_debug_pkg.add(l_calling_fn, 'Method.deprn_limit type change', 'FAILED', p_log_level_rec => p_log_level_rec);
2703 fa_debug_pkg.add(l_calling_fn, 'cost', px_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
2704 end if;
2705
2706 l_valid_type_change := FALSE;
2707
2708 end if;
2709
2710 if (not l_valid_type_change) then
2711 if (px_asset_fin_rec_new.salvage_type = 'SUM') then
2712 fa_srvr_msg.add_message(
2713 calling_fn => l_calling_fn,
2714 name => 'FA_INVALID_PARAMETER',
2715 token1 => 'VALUE',
2716 value1 => px_asset_fin_rec_new.salvage_type,
2717 token2 => 'PARAM',
2718 value2 => 'SALVAGE_TYPE', p_log_level_rec => p_log_level_rec);
2719
2720 else
2721 fa_srvr_msg.add_message(
2722 calling_fn => l_calling_fn,
2723 name => 'FA_INVALID_PARAMETER',
2724 token1 => 'VALUE',
2725 value1 => px_asset_fin_rec_new.deprn_limit_type,
2726 token2 => 'PARAM',
2727 value2 => 'DEPRN_LIMIT_TYPE', p_log_level_rec => p_log_level_rec);
2728 end if;
2729
2730 return false;
2731 end if;
2732
2733 end if; -- (((px_asset_fin_rec_new.salvage_type = 'SUM') and
2734
2735 /*Bug#8205561 - To populate fa_books_summary in case of dpis change*/
2736 if (p_trans_rec.transaction_type_code = 'GROUP ADJUSTMENT' and
2737 p_trans_rec.transaction_key = 'GJ' and
2738 p_asset_fin_rec_old.date_placed_in_service <> px_asset_fin_rec_new.date_placed_in_service) then
2742 p_trans_rec => p_trans_rec,
2739 -- Group adjustment in period of group addition before
2740 -- depreciation run or first member addition
2741 if not createGroup(
2743 p_asset_hdr_rec => p_asset_hdr_rec,
2744 p_asset_type_rec => p_asset_type_rec,
2745 p_period_rec => p_period_rec,
2746 p_asset_fin_rec => px_asset_fin_rec_new,
2747 p_asset_deprn_rec => p_asset_deprn_rec_adj,
2748 p_mrc_sob_type_code => p_mrc_sob_type_code,
2749 p_calling_fn => l_calling_fn
2750 ,p_log_level_rec => p_log_level_rec) then
2751
2752 if (p_log_level_rec.statement_level) then
2753 fa_debug_pkg.add(l_calling_fn, 'calling FA_AMORT_PVT.createGroup', 'FAILED'
2754 ,p_log_level_rec => p_log_level_rec);
2755 end if;
2756 raise adj_err;
2757 end if;
2758 end if;
2759 /*Bug#8205561 end */
2760
2761 if (p_asset_fin_rec_old.depreciate_flag = 'NO') or
2762 (nvl(p_asset_fin_rec_old.disabled_flag, 'N') = 'Y') then
2763
2764 l_depreciate_flag_change := (p_asset_fin_rec_old.depreciate_flag <>
2765 px_asset_fin_rec_new.depreciate_flag);
2766
2767 l_disabled_flag_change := (nvl(p_asset_fin_rec_old.disabled_flag, 'N') <>
2768 nvl(px_asset_fin_rec_new.disabled_flag, 'N'));
2769
2770 if (not catchupBooksSummary (
2771 p_trans_rec => p_trans_rec,
2772 p_asset_hdr_rec => p_asset_hdr_rec,
2773 p_period_rec => p_period_rec,
2774 p_asset_fin_rec_new => px_asset_fin_rec_new,
2775 p_depreciate_flag_change => l_depreciate_flag_change,
2776 p_disabled_flag_change => l_disabled_flag_change,
2777 p_mrc_sob_type_code => p_mrc_sob_type_code,
2778 p_calling_fn => l_calling_fn,
2779 p_log_level_rec => p_log_level_rec)) then
2780
2781 if (p_log_level_rec.statement_level) then
2782 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'catchupBooksSummary', p_log_level_rec => p_log_level_rec);
2783 end if;
2784
2785 raise adj_err;
2786
2787 end if;
2788 elsif (p_asset_fin_rec_old.period_counter_fully_reserved is not null) or
2789 (p_asset_fin_rec_old.period_counter_life_complete is not null) then
2790 l_temp_num := null;
2791
2792 if (p_mrc_sob_type_code = 'R') then
2793 OPEN c_check_mc_record_exists;
2794 FETCH c_check_mc_record_exists INTO l_temp_num;
2795 CLOSE c_check_mc_record_exists;
2796 else
2797 OPEN c_check_record_exists;
2798 FETCH c_check_record_exists INTO l_temp_num;
2799 CLOSE c_check_record_exists;
2800 end if;
2801
2802 if l_temp_num is null then
2803 if (not catchupBooksSummary (
2804 p_trans_rec => p_trans_rec,
2805 p_asset_hdr_rec => p_asset_hdr_rec,
2806 p_period_rec => p_period_rec,
2807 p_asset_fin_rec_new => px_asset_fin_rec_new,
2808 p_depreciate_flag_change => l_depreciate_flag_change,
2809 p_disabled_flag_change => l_disabled_flag_change,
2810 p_mrc_sob_type_code => p_mrc_sob_type_code,
2811 p_calling_fn => l_calling_fn,
2812 p_log_level_rec => p_log_level_rec)) then
2813
2814 if (p_log_level_rec.statement_level) then
2815 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'catchupBooksSummary', p_log_level_rec => p_log_level_rec);
2816 end if;
2817
2818 raise adj_err;
2819
2820 end if;
2821 end if;
2822 end if;
2823
2824 /*
2825 --
2826 -- Unplanned Depreciation
2827 --
2828 if (p_trans_rec.transaction_key in ('UA', 'UE')) then
2829 -- Expecting unplanned amount stored in p_asset_deprn_rec_adj.deprn_amount
2830 l_expense_amount := p_asset_deprn_rec_adj.deprn_amount;
2831 l_unplanned_amount := p_asset_deprn_rec_adj.deprn_amount;
2832 elsif (p_trans_rec.transaction_key in ('GV', 'GR')) then
2833 l_reserve_amount := p_asset_deprn_rec_adj.deprn_reserve;
2834 end if;
2835 */
2836 l_expense_amount := nvl(p_asset_deprn_rec_adj.deprn_amount, 0);
2837 l_unplanned_amount := nvl(p_asset_deprn_rec_adj.deprn_amount, 0);
2838 l_reserve_amount := nvl(p_asset_deprn_rec_adj.deprn_reserve, 0);
2839
2840 --tk_util.debug('p_asset_fin_rec_old.adjusted_capacity: '||to_char(p_asset_fin_rec_old.adjusted_capacity));
2841 --tk_util.debug('p_asset_fin_rec_adj.adjusted_capacity: '||to_char(p_asset_fin_rec_adj.adjusted_capacity));
2842
2843 /*
2844 if (nvl(px_asset_fin_rec_new.tracking_method, 'NO TRACK') = 'ALLOCATE') and -- ENERGY
2845 (fa_cache_pkg.fazcdrd_record.rule_name = 'ENERGY PERIOD END BALANCE') and -- ENERGY
2846 (fa_cache_pkg.fazccmt_record.rate_source_rule = FA_STD_TYPES.FAD_RSR_PROD) then
2847 px_asset_fin_rec_new.adjusted_capacity := nvl(px_asset_fin_rec_new.production_capacity, 0) +
2848 nvl(p_asset_fin_rec_adj.adjusted_capacity, 0);
2849 end if;
2850 */
2851
2852 if (p_trans_rec.member_transaction_header_id is null) then
2853
2854 --tk_util.debug('p_asset_fin_rec_adj.cost: '||to_char(p_asset_fin_rec_adj.cost));
2858 --tk_util.debug('p_proceeds_of_sale: '||to_char(p_proceeds_of_sale));
2855 --tk_util.debug('p_asset_fin_rec_adj.cip_cost: '||to_char(p_asset_fin_rec_adj.cip_cost));
2856 --tk_util.debug('l_delta_salvage_value: '||to_char(l_delta_salvage_value));
2857 --tk_util.debug('l_delta_deprn_limit_amount: '||to_char(l_delta_deprn_limit_amount));
2859 --tk_util.debug('p_cost_of_removal: '||to_char(p_cost_of_removal));
2860 --tk_util.debug('l_unplanned_amount: '||to_char(l_unplanned_amount));
2861 --tk_util.debug('l_expense_amount: '||to_char(l_expense_amount));
2862 --tk_util.debug('l_reserve_amount: '||to_char(l_reserve_amount));
2863
2864 if (p_mrc_sob_type_code = 'R') then
2865
2866 UPDATE FA_MC_BOOKS_SUMMARY
2867 SET RESET_ADJUSTED_COST_FLAG = 'Y'
2868 , SALVAGE_TYPE = px_asset_fin_rec_new.salvage_type
2869 , PERCENT_SALVAGE_VALUE = px_asset_fin_rec_new.percent_salvage_value
2870 , SALVAGE_VALUE = px_asset_fin_rec_new.salvage_value
2871 , RECOVERABLE_COST = px_asset_fin_rec_new.recoverable_cost
2872 , DEPRN_LIMIT_TYPE = px_asset_fin_rec_new.deprn_limit_type
2873 , ALLOWED_DEPRN_LIMIT = px_asset_fin_rec_new.allowed_deprn_limit
2874 , ALLOWED_DEPRN_LIMIT_AMOUNT = px_asset_fin_rec_new.allowed_deprn_limit_amount
2875 , ADJUSTED_RECOVERABLE_COST = px_asset_fin_rec_new.adjusted_recoverable_cost
2876 , ADJUSTED_COST = px_asset_fin_rec_new.adjusted_cost
2877 , DEPRECIATE_FLAG = px_asset_fin_rec_new.depreciate_flag
2878 , DISABLED_FLAG = px_asset_fin_rec_new.disabled_flag
2879 , DEPRN_METHOD_CODE = px_asset_fin_rec_new.deprn_method_code
2880 , LIFE_IN_MONTHS = px_asset_fin_rec_new.life_in_months
2881 , RATE_ADJUSTMENT_FACTOR = px_asset_fin_rec_new.rate_adjustment_factor
2882 , ADJUSTED_RATE = px_asset_fin_rec_new.adjusted_rate
2883 , BONUS_RULE = px_asset_fin_rec_new.bonus_rule
2884 , ADJUSTED_CAPACITY = px_asset_fin_rec_new.adjusted_capacity
2885 , PRODUCTION_CAPACITY = px_asset_fin_rec_new.production_capacity
2886 , UNIT_OF_MEASURE = px_asset_fin_rec_new.unit_of_measure
2887 , REMAINING_LIFE1 = px_asset_fin_rec_new.remaining_life1
2888 , REMAINING_LIFE2 = px_asset_fin_rec_new.remaining_life2
2889 , FORMULA_FACTOR = px_asset_fin_rec_new.formula_factor
2890 , CEILING_NAME = px_asset_fin_rec_new.ceiling_name
2891 , SHORT_FISCAL_YEAR_FLAG = px_asset_fin_rec_new.short_fiscal_year_flag
2892 , SUPER_GROUP_ID = px_asset_fin_rec_new.super_group_id
2893 , OVER_DEPRECIATE_OPTION = px_asset_fin_rec_new.over_depreciate_option
2894 , DEPRN_AMOUNT = DEPRN_AMOUNT + l_expense_amount
2895 , YTD_DEPRN = YTD_DEPRN + l_expense_amount
2896 , DEPRN_RESERVE = DEPRN_RESERVE + l_expense_amount + l_reserve_amount
2897 , YTD_PROCEEDS_OF_SALE = nvl(YTD_PROCEEDS_OF_SALE, 0) + p_proceeds_of_sale
2898 , LTD_PROCEEDS_OF_SALE = nvl(LTD_PROCEEDS_OF_SALE, 0) + p_proceeds_of_sale
2899 , YTD_COST_OF_REMOVAL = nvl(YTD_COST_OF_REMOVAL, 0) + p_cost_of_removal
2900 , LTD_COST_OF_REMOVAL = nvl(LTD_COST_OF_REMOVAL, 0) + p_cost_of_removal
2901 , UNPLANNED_AMOUNT = UNPLANNED_AMOUNT + l_unplanned_amount
2902 , EXPENSE_ADJUSTMENT_AMOUNT = EXPENSE_ADJUSTMENT_AMOUNT + l_expense_amount
2903 , RESERVE_ADJUSTMENT_AMOUNT = RESERVE_ADJUSTMENT_AMOUNT + l_reserve_amount
2904 , LAST_UPDATE_DATE = p_trans_rec.who_info.last_update_date
2905 , LAST_UPDATED_BY = p_trans_rec.who_info.last_updated_by
2906 , LAST_UPDATE_LOGIN = p_trans_rec.who_info.last_update_login
2907 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
2908 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
2909 AND PERIOD_COUNTER = p_period_rec.period_counter
2910 AND SET_OF_BOOKS_ID = p_asset_hdr_rec.set_of_books_id;
2911
2912 else
2913
2914 UPDATE FA_BOOKS_SUMMARY
2915 SET RESET_ADJUSTED_COST_FLAG = 'Y'
2916 , SALVAGE_TYPE = px_asset_fin_rec_new.salvage_type
2917 , PERCENT_SALVAGE_VALUE = px_asset_fin_rec_new.percent_salvage_value
2918 , SALVAGE_VALUE = px_asset_fin_rec_new.salvage_value
2919 , RECOVERABLE_COST = px_asset_fin_rec_new.recoverable_cost
2920 , DEPRN_LIMIT_TYPE = px_asset_fin_rec_new.deprn_limit_type
2921 , ALLOWED_DEPRN_LIMIT = px_asset_fin_rec_new.allowed_deprn_limit
2922 , ALLOWED_DEPRN_LIMIT_AMOUNT = px_asset_fin_rec_new.allowed_deprn_limit_amount
2923 , ADJUSTED_RECOVERABLE_COST = px_asset_fin_rec_new.adjusted_recoverable_cost
2924 , ADJUSTED_COST = px_asset_fin_rec_new.adjusted_cost
2925 , DEPRECIATE_FLAG = px_asset_fin_rec_new.depreciate_flag
2926 , DISABLED_FLAG = px_asset_fin_rec_new.disabled_flag
2927 , DEPRN_METHOD_CODE = px_asset_fin_rec_new.deprn_method_code
2928 , LIFE_IN_MONTHS = px_asset_fin_rec_new.life_in_months
2929 , RATE_ADJUSTMENT_FACTOR = px_asset_fin_rec_new.rate_adjustment_factor
2930 , ADJUSTED_RATE = px_asset_fin_rec_new.adjusted_rate
2931 , BONUS_RULE = px_asset_fin_rec_new.bonus_rule
2932 , ADJUSTED_CAPACITY = px_asset_fin_rec_new.adjusted_capacity
2933 , PRODUCTION_CAPACITY = px_asset_fin_rec_new.production_capacity
2934 , UNIT_OF_MEASURE = px_asset_fin_rec_new.unit_of_measure
2935 , REMAINING_LIFE1 = px_asset_fin_rec_new.remaining_life1
2939 , SHORT_FISCAL_YEAR_FLAG = px_asset_fin_rec_new.short_fiscal_year_flag
2936 , REMAINING_LIFE2 = px_asset_fin_rec_new.remaining_life2
2937 , FORMULA_FACTOR = px_asset_fin_rec_new.formula_factor
2938 , CEILING_NAME = px_asset_fin_rec_new.ceiling_name
2940 , SUPER_GROUP_ID = px_asset_fin_rec_new.super_group_id
2941 , OVER_DEPRECIATE_OPTION = px_asset_fin_rec_new.over_depreciate_option
2942 , DEPRN_AMOUNT = DEPRN_AMOUNT + l_expense_amount
2943 , YTD_DEPRN = YTD_DEPRN + l_expense_amount
2944 , DEPRN_RESERVE = DEPRN_RESERVE + l_expense_amount + l_reserve_amount
2945 , YTD_PROCEEDS_OF_SALE = nvl(YTD_PROCEEDS_OF_SALE, 0) + p_proceeds_of_sale
2946 , LTD_PROCEEDS_OF_SALE = nvl(LTD_PROCEEDS_OF_SALE, 0) + p_proceeds_of_sale
2947 , YTD_COST_OF_REMOVAL = nvl(YTD_COST_OF_REMOVAL, 0) + p_cost_of_removal
2948 , LTD_COST_OF_REMOVAL = nvl(LTD_COST_OF_REMOVAL, 0) + p_cost_of_removal
2949 , UNPLANNED_AMOUNT = UNPLANNED_AMOUNT + l_unplanned_amount
2950 , EXPENSE_ADJUSTMENT_AMOUNT = EXPENSE_ADJUSTMENT_AMOUNT + l_expense_amount
2951 , RESERVE_ADJUSTMENT_AMOUNT = RESERVE_ADJUSTMENT_AMOUNT + l_reserve_amount
2952 , LAST_UPDATE_DATE = p_trans_rec.who_info.last_update_date
2953 , LAST_UPDATED_BY = p_trans_rec.who_info.last_updated_by
2954 , LAST_UPDATE_LOGIN = p_trans_rec.who_info.last_update_login
2955 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
2956 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
2957 AND PERIOD_COUNTER = p_period_rec.period_counter;
2958
2959 end if;
2960
2961 else
2962
2963 if (p_mrc_sob_type_code = 'R') then
2964 OPEN c_get_mc_deltas;
2965 FETCH c_get_mc_deltas INTO l_delta_salvage_value
2966 , l_delta_deprn_limit_amount;
2967 CLOSE c_get_mc_deltas;
2968 else
2969 OPEN c_get_deltas;
2970 FETCH c_get_deltas INTO l_delta_salvage_value
2971 , l_delta_deprn_limit_amount;
2972 CLOSE c_get_deltas;
2973 end if;
2974
2975 --
2976 -- Get Retirement information
2977 --
2978 if (p_trans_rec.transaction_key = 'MR') then
2979 if (p_mrc_sob_type_code = 'R') then
2980 OPEN c_get_mc_ret_info(p_trans_rec.member_transaction_header_id);
2981 FETCH c_get_mc_ret_info INTO l_proceeds_of_sale
2982 , l_cost_of_removal
2983 , l_reserve_retired
2984 , l_nbv_retired;
2985 CLOSE c_get_mc_ret_info;
2986 else
2987 OPEN c_get_ret_info(p_trans_rec.member_transaction_header_id);
2988 FETCH c_get_ret_info INTO l_proceeds_of_sale
2989 , l_cost_of_removal
2990 , l_reserve_retired
2991 , l_nbv_retired;
2992 CLOSE c_get_ret_info;
2993 end if;
2994 elsif (p_trans_rec.transaction_key = 'MS') then
2995 if (p_mrc_sob_type_code = 'R') then
2996 OPEN c_get_mc_rein_info(p_trans_rec.member_transaction_header_id);
2997 FETCH c_get_mc_rein_info INTO l_proceeds_of_sale
2998 , l_cost_of_removal
2999 , l_reserve_retired
3000 , l_nbv_retired;
3001 CLOSE c_get_mc_rein_info;
3002 else
3003 OPEN c_get_rein_info(p_trans_rec.member_transaction_header_id);
3004 FETCH c_get_rein_info INTO l_proceeds_of_sale
3005 , l_cost_of_removal
3006 , l_reserve_retired
3007 , l_nbv_retired;
3008 CLOSE c_get_rein_info;
3009 end if;
3010
3011 l_reserve_amount := l_reserve_retired;
3012 else
3013 l_proceeds_of_sale := 0;
3014 l_cost_of_removal := 0;
3015 l_reserve_retired := 0;
3016 l_nbv_retired := 0;
3017 end if;
3018
3019 --tk_util.debug('p_asset_fin_rec_adj.cost: '||to_char(p_asset_fin_rec_adj.cost));
3020 --tk_util.debug('p_asset_fin_rec_adj.cip_cost: '||to_char(p_asset_fin_rec_adj.cip_cost));
3021 --tk_util.debug('l_delta_salvage_value: '||to_char(l_delta_salvage_value));
3022 --tk_util.debug('l_delta_deprn_limit_amount: '||to_char(l_delta_deprn_limit_amount));
3023 --tk_util.debug('p_proceeds_of_sale: '||to_char(l_proceeds_of_sale));
3024 --tk_util.debug('p_cost_of_removal: '||to_char(l_cost_of_removal));
3025 --tk_util.debug('l_unplanned_amount: '||to_char(l_unplanned_amount));
3026 --tk_util.debug('l_expense_amount: '||to_char(l_expense_amount));
3027 --tk_util.debug('l_reserve_amount: '||to_char(l_reserve_amount));
3028
3029 if (p_mrc_sob_type_code = 'R') then
3030
3031 UPDATE FA_MC_BOOKS_SUMMARY
3032 SET RESET_ADJUSTED_COST_FLAG = 'Y'
3033 , CHANGE_IN_COST = CHANGE_IN_COST + nvl(p_asset_fin_rec_adj.cost, 0)
3034 , CHANGE_IN_CIP_COST = CHANGE_IN_CIP_COST + nvl(p_asset_fin_rec_adj.cip_cost, 0)
3035 , COST = px_asset_fin_rec_new.cost
3036 , CIP_COST = px_asset_fin_rec_new.cip_cost
3037 , SALVAGE_VALUE = px_asset_fin_rec_new.salvage_value
3038 , MEMBER_SALVAGE_VALUE = MEMBER_SALVAGE_VALUE + nvl(l_delta_salvage_value, 0)
3039 , RECOVERABLE_COST = px_asset_fin_rec_new.recoverable_cost
3040 , ALLOWED_DEPRN_LIMIT_AMOUNT = px_asset_fin_rec_new.allowed_deprn_limit_amount
3041 , MEMBER_DEPRN_LIMIT_AMOUNT = MEMBER_DEPRN_LIMIT_AMOUNT +
3045 , ADJUSTED_COST = px_asset_fin_rec_new.ADJUSTED_COST
3042 nvl(l_delta_deprn_limit_amount,
3043 decode(MEMBER_DEPRN_LIMIT_AMOUNT, NULL, NUll, 0))
3044 , ADJUSTED_RECOVERABLE_COST = px_asset_fin_rec_new.adjusted_recoverable_cost
3046 , UNREVALUED_COST = px_asset_fin_rec_new.UNREVALUED_COST
3047 , REVAL_AMORTIZATION_BASIS = px_asset_fin_rec_new.REVAL_AMORTIZATION_BASIS
3048 , DEPRN_AMOUNT = DEPRN_AMOUNT + l_expense_amount
3049 , YTD_DEPRN = YTD_DEPRN + l_expense_amount
3050 , DEPRN_RESERVE = DEPRN_RESERVE + l_expense_amount + l_reserve_amount
3051 , YTD_PROCEEDS_OF_SALE = nvl(YTD_PROCEEDS_OF_SALE, 0) + l_proceeds_of_sale
3052 , LTD_PROCEEDS_OF_SALE = nvl(LTD_PROCEEDS_OF_SALE, 0) + l_proceeds_of_sale
3053 , YTD_COST_OF_REMOVAL = nvl(YTD_COST_OF_REMOVAL, 0) + l_cost_of_removal
3054 , LTD_COST_OF_REMOVAL = nvl(LTD_COST_OF_REMOVAL, 0) + l_cost_of_removal
3055 , UNPLANNED_AMOUNT = UNPLANNED_AMOUNT + l_unplanned_amount
3056 , EXPENSE_ADJUSTMENT_AMOUNT = EXPENSE_ADJUSTMENT_AMOUNT + l_expense_amount
3057 , RESERVE_ADJUSTMENT_AMOUNT = RESERVE_ADJUSTMENT_AMOUNT + l_reserve_amount
3058 , LAST_UPDATE_DATE = p_trans_rec.who_info.last_update_date
3059 , LAST_UPDATED_BY = p_trans_rec.who_info.last_updated_by
3060 , LAST_UPDATE_LOGIN = p_trans_rec.who_info.last_update_login
3061 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
3062 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
3063 AND PERIOD_COUNTER = p_period_rec.period_counter
3064 AND SET_OF_BOOKS_ID = p_asset_hdr_rec.set_of_books_id;
3065
3066 else
3067
3068 UPDATE FA_BOOKS_SUMMARY
3069 SET RESET_ADJUSTED_COST_FLAG = 'Y'
3070 , CHANGE_IN_COST = CHANGE_IN_COST + nvl(p_asset_fin_rec_adj.cost, 0)
3071 , CHANGE_IN_CIP_COST = CHANGE_IN_CIP_COST + nvl(p_asset_fin_rec_adj.cip_cost, 0)
3072 , COST = COST + nvl(p_asset_fin_rec_adj.cost, 0)
3073 , CIP_COST = CIP_COST + nvl(p_asset_fin_rec_adj.cip_cost, 0)
3074 , SALVAGE_VALUE = px_asset_fin_rec_new.salvage_value
3075 , MEMBER_SALVAGE_VALUE = MEMBER_SALVAGE_VALUE + nvl(l_delta_salvage_value, 0)
3076 , RECOVERABLE_COST = px_asset_fin_rec_new.recoverable_cost
3077 , ALLOWED_DEPRN_LIMIT_AMOUNT = px_asset_fin_rec_new.allowed_deprn_limit_amount
3078 , MEMBER_DEPRN_LIMIT_AMOUNT = MEMBER_DEPRN_LIMIT_AMOUNT +
3079 nvl(l_delta_deprn_limit_amount,
3080 decode(MEMBER_DEPRN_LIMIT_AMOUNT, NULL, NUll, 0))
3081 , ADJUSTED_RECOVERABLE_COST = px_asset_fin_rec_new.adjusted_recoverable_cost
3082 , ADJUSTED_COST = px_asset_fin_rec_new.ADJUSTED_COST
3083 , UNREVALUED_COST = px_asset_fin_rec_new.UNREVALUED_COST
3084 , REVAL_AMORTIZATION_BASIS = px_asset_fin_rec_new.REVAL_AMORTIZATION_BASIS
3085 , DEPRN_AMOUNT = DEPRN_AMOUNT + l_expense_amount
3086 , YTD_DEPRN = YTD_DEPRN + l_expense_amount
3087 , DEPRN_RESERVE = DEPRN_RESERVE + l_expense_amount + l_reserve_amount
3088 , YTD_PROCEEDS_OF_SALE = nvl(YTD_PROCEEDS_OF_SALE, 0) + l_proceeds_of_sale
3089 , LTD_PROCEEDS_OF_SALE = nvl(LTD_PROCEEDS_OF_SALE, 0) + l_proceeds_of_sale
3090 , YTD_COST_OF_REMOVAL = nvl(YTD_COST_OF_REMOVAL, 0) + l_cost_of_removal
3091 , LTD_COST_OF_REMOVAL = nvl(LTD_COST_OF_REMOVAL, 0) + l_cost_of_removal
3092 , UNPLANNED_AMOUNT = UNPLANNED_AMOUNT + l_unplanned_amount
3093 , EXPENSE_ADJUSTMENT_AMOUNT = EXPENSE_ADJUSTMENT_AMOUNT + l_expense_amount
3094 , RESERVE_ADJUSTMENT_AMOUNT = RESERVE_ADJUSTMENT_AMOUNT + l_reserve_amount
3095 , LAST_UPDATE_DATE = p_trans_rec.who_info.last_update_date
3096 , LAST_UPDATED_BY = p_trans_rec.who_info.last_updated_by
3097 , LAST_UPDATE_LOGIN = p_trans_rec.who_info.last_update_login
3098 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
3099 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
3100 AND PERIOD_COUNTER = p_period_rec.period_counter;
3101
3102 end if;
3103
3104 end if;
3105
3106 printBooksSummary(p_asset_id => p_asset_hdr_rec.asset_id,
3107 p_book_type_code => p_asset_hdr_rec.book_type_code,
3108 p_log_level_rec => p_log_level_rec);
3109 -- p_period_counter => p_period_rec.period_counter);
3110
3111 if (p_log_level_rec.statement_level) then
3112 fa_debug_pkg.add(l_calling_fn||'()-', 'asset id', p_asset_hdr_rec.asset_id);
3113 end if;
3114
3115 return TRUE;
3116
3117 EXCEPTION
3118 WHEN adj_err THEN
3119 if (p_log_level_rec.statement_level) then
3120 fa_debug_pkg.add(l_calling_fn||'(adj_err)-', 'sqlcode', sqlcode);
3121 end if;
3122
3123 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3124 return false;
3125
3126 WHEN OTHERS THEN
3127
3128 if (p_log_level_rec.statement_level) then
3129 fa_debug_pkg.add(l_calling_fn||'(OTHERS)-', 'sqlcode', sqlcode);
3130 end if;
3131
3132 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3133 return false;
3134
3135 END CurrentPeriodAdj;
3136
3137 --+==============================================================================
3138 -- Function: bsRecalculate
3139 --
3140 -- This function calculate catch-up amounts due to backdated
3141 -- amortization transactions.
3142
3146 --+==============================================================================
3143 -- 3.2: Call faxcde to get reserve for adjusted_cost, raf and formula_factor
3144 -- 3.3: Call Deprn Basis function to get new adjusted_cost, raf and formula_factor.
3145 -- 4: Return catch-up amount.
3147 FUNCTION bsRecalculate(
3148 p_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
3149 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
3150 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
3151 p_asset_desc_rec FA_API_TYPES.asset_desc_rec_type,
3152 p_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type,
3153 p_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type default null,
3154 p_period_rec FA_API_TYPES.period_rec_type,
3155 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
3156 p_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type,
3157 p_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type default null,
3158 x_deprn_expense OUT NOCOPY NUMBER,
3159 x_bonus_expense OUT NOCOPY NUMBER,
3160 x_impairment_expense OUT NOCOPY NUMBER,
3161 x_deprn_reserve OUT NOCOPY NUMBER,
3162 p_running_mode IN NUMBER,
3163 p_used_by_revaluation IN NUMBER,
3164 p_reclassed_asset_id NUMBER,
3165 p_reclass_src_dest VARCHAR2,
3166 p_reclassed_asset_dpis DATE,
3167 p_update_books_summary BOOLEAN default FALSE,
3168 p_mrc_sob_type_code VARCHAR2,
3169 p_calling_fn VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
3170
3171 l_calling_fn VARCHAR2(100) := 'FA_AMORT_PVT.bsRecalculate';
3172
3173 --
3174 -- This is to get date placed in service using transaction header id
3175 -- Bug4958977: Needed to modify to use older dpis
3176 CURSOR c_get_dpis (c_thid number) IS
3177 select least(inbk.date_placed_in_service, nvl(outbk.date_placed_in_service, inbk.date_placed_in_service))
3178 from fa_books inbk
3179 , fa_books outbk
3180 where inbk.transaction_header_id_in = c_thid
3181 and outbk.transaction_header_id_out(+) = inbk.transaction_header_id_in
3182 and outbk.asset_id(+) = inbk.asset_id
3183 and outbk.book_type_code(+) = inbk.book_type_code;
3184
3185
3186 --
3187 -- This is to get period counter using FA_BOOKS_SUMMARY table
3188 --
3189 CURSOR c_get_books_summary(c_period_counter number) IS
3190 select
3191 bs.period_counter
3192 , bs.fiscal_year
3193 , bs.period_num
3194 , bs.calendar_period_open_date
3195 , bs.calendar_period_close_date
3196 , bs.reset_adjusted_cost_flag
3197 , bs.change_in_cost
3198 , bs.change_in_cip_cost
3199 , bs.cost
3200 , bs.cip_cost
3201 , bs.salvage_type
3202 , bs.percent_salvage_value
3203 , bs.salvage_value
3204 , bs.member_salvage_value
3205 , bs.recoverable_cost
3206 , bs.deprn_limit_type
3207 , bs.allowed_deprn_limit
3208 , bs.allowed_deprn_limit_amount
3209 , bs.member_deprn_limit_amount
3210 , bs.adjusted_recoverable_cost
3211 , bs.adjusted_cost
3212 , bs.depreciate_flag
3213 , bs.date_placed_in_service
3214 , bs.deprn_method_code
3215 , bs.life_in_months
3216 , bs.rate_adjustment_factor
3217 , bs.adjusted_rate
3218 , bs.bonus_rule
3219 , bs.adjusted_capacity
3220 , bs.production_capacity
3221 , bs.unit_of_measure
3222 , bs.remaining_life1
3223 , bs.remaining_life2
3224 , bs.formula_factor
3225 , bs.unrevalued_cost
3226 , bs.reval_amortization_basis
3227 , bs.reval_ceiling
3228 , bs.ceiling_name
3229 , bs.eofy_adj_cost
3230 , bs.eofy_formula_factor
3231 , bs.eofy_reserve
3232 , bs.eop_adj_cost
3233 , bs.eop_formula_factor
3234 , bs.short_fiscal_year_flag
3235 , bs.group_asset_id
3236 , bs.super_group_id
3237 , bs.over_depreciate_option
3238 , bs.deprn_amount
3239 , bs.ytd_deprn
3240 , bs.deprn_reserve
3241 , bs.bonus_deprn_amount
3242 , bs.bonus_ytd_deprn
3243 , bs.bonus_deprn_reserve
3244 , bs.bonus_rate
3245 , bs.impairment_amount
3246 , bs.ytd_impairment
3247 , bs.impairment_reserve
3248 , bs.ltd_production
3249 , bs.ytd_production
3250 , bs.production
3251 , bs.reval_amortization
3252 , bs.reval_deprn_expense
3253 , bs.reval_reserve
3254 , bs.ytd_reval_deprn_expense
3255 , bs.deprn_override_flag
3256 , bs.system_deprn_amount
3257 , bs.system_bonus_deprn_amount
3258 , bs.ytd_proceeds_of_sale
3259 , bs.ltd_proceeds_of_sale
3260 , bs.ytd_cost_of_removal
3261 , bs.ltd_cost_of_removal
3262 , bs.deprn_adjustment_amount
3263 , bs.expense_adjustment_amount
3264 , bs.reserve_adjustment_amount
3265 , bs.change_in_eofy_reserve
3266 , 0 impairment_amount
3267 , 0 ytd_impairment
3268 , 0 impairment_reserve
3269 from fa_books_summary bs
3273 order by bs.period_counter;
3270 where bs.asset_id = p_asset_hdr_rec.asset_id
3271 and bs.book_type_code = p_asset_hdr_rec.book_type_code
3272 and bs.period_counter >= c_period_counter
3274
3275 CURSOR c_get_mc_books_summary(c_period_counter number) IS
3276 select
3277 bs.period_counter
3278 , bs.fiscal_year
3279 , bs.period_num
3280 , bs.calendar_period_open_date
3281 , bs.calendar_period_close_date
3282 , bs.reset_adjusted_cost_flag
3283 , bs.change_in_cost
3284 , bs.change_in_cip_cost
3285 , bs.cost
3286 , bs.cip_cost
3287 , bs.salvage_type
3288 , bs.percent_salvage_value
3289 , bs.salvage_value
3290 , bs.member_salvage_value
3291 , bs.recoverable_cost
3292 , bs.deprn_limit_type
3293 , bs.allowed_deprn_limit
3294 , bs.allowed_deprn_limit_amount
3295 , bs.member_deprn_limit_amount
3296 , bs.adjusted_recoverable_cost
3297 , bs.adjusted_cost
3298 , bs.depreciate_flag
3299 , bs.date_placed_in_service
3300 , bs.deprn_method_code
3301 , bs.life_in_months
3302 , bs.rate_adjustment_factor
3303 , bs.adjusted_rate
3304 , bs.bonus_rule
3305 , bs.adjusted_capacity
3306 , bs.production_capacity
3307 , bs.unit_of_measure
3308 , bs.remaining_life1
3309 , bs.remaining_life2
3310 , bs.formula_factor
3311 , bs.unrevalued_cost
3312 , bs.reval_amortization_basis
3313 , bs.reval_ceiling
3314 , bs.ceiling_name
3315 , bs.eofy_adj_cost
3316 , bs.eofy_formula_factor
3317 , bs.eofy_reserve
3318 , bs.eop_adj_cost
3319 , bs.eop_formula_factor
3320 , bs.short_fiscal_year_flag
3321 , bs.group_asset_id
3322 , bs.super_group_id
3323 , bs.over_depreciate_option
3324 , bs.deprn_amount
3325 , bs.ytd_deprn
3326 , bs.deprn_reserve
3327 , bs.bonus_deprn_amount
3328 , bs.bonus_ytd_deprn
3329 , bs.bonus_deprn_reserve
3330 , bs.bonus_rate
3331 , bs.impairment_amount
3332 , bs.ytd_impairment
3333 , bs.impairment_reserve
3334 , bs.ltd_production
3335 , bs.ytd_production
3336 , bs.production
3337 , bs.reval_amortization
3338 , bs.reval_deprn_expense
3339 , bs.reval_reserve
3340 , bs.ytd_reval_deprn_expense
3341 , bs.deprn_override_flag
3342 , bs.system_deprn_amount
3343 , bs.system_bonus_deprn_amount
3344 , bs.ytd_proceeds_of_sale
3345 , bs.ltd_proceeds_of_sale
3346 , bs.ytd_cost_of_removal
3347 , bs.ltd_cost_of_removal
3348 , deprn_adjustment_amount
3349 , bs.expense_adjustment_amount
3350 , bs.reserve_adjustment_amount
3351 , bs.change_in_eofy_reserve
3352 , 0 impairment_amount
3353 , 0 ytd_impairment
3354 , 0 impairment_reserve
3355 from fa_mc_books_summary bs
3356 where bs.asset_id = p_asset_hdr_rec.asset_id
3357 and bs.book_type_code = p_asset_hdr_rec.book_type_code
3358 and bs.period_counter >= c_period_counter
3359 and bs.set_of_books_id = p_asset_hdr_rec.set_of_books_id
3360 order by bs.period_counter;
3361
3362
3363 CURSOR c_get_eofy_amts(c_period_counter number) IS
3364 select recoverable_cost
3365 , salvage_value
3366 , deprn_reserve
3367 from fa_books_summary
3368 where asset_id = p_asset_hdr_rec.asset_id
3369 and book_type_code = p_asset_hdr_rec.book_type_code
3370 and period_counter = c_period_counter;
3371
3372 CURSOR c_get_mc_eofy_amts(c_period_counter number) IS
3373 select recoverable_cost
3374 , salvage_value
3375 , deprn_reserve
3376 from fa_mc_books_summary
3377 where asset_id = p_asset_hdr_rec.asset_id
3378 and book_type_code = p_asset_hdr_rec.book_type_code
3379 and period_counter = c_period_counter
3380 and set_of_books_id = p_asset_hdr_rec.set_of_books_id ;
3381
3382 --
3383 -- Cursor to get retirement information using reinsatement
3384 -- transaction_header_id
3385 --
3386 CURSOR c_get_rein_info IS
3387 select -1 * ret.proceeds_of_sale
3388 , -1 * ret.cost_of_removal
3389 , ret.reserve_retired
3390 , nbv_retired
3391 , ret.recognize_gain_loss -- Added for bug 8425794 / 8244128
3392 , ret.recapture_amount
3393 from fa_retirements ret
3394 , fa_transaction_headers mth
3395 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
3396 and mth.asset_id = ret.asset_id
3397 and mth.book_type_code = p_asset_hdr_rec.book_type_code
3398 and ret.book_type_code = p_asset_hdr_rec.book_type_code
3399 and ret.transaction_header_id_out = p_trans_rec.member_transaction_header_id;
3400
3401 CURSOR c_get_mc_rein_info IS
3402 select -1 * ret.proceeds_of_sale
3403 , -1 * ret.cost_of_removal
3404 , nvl(ret.reserve_retired, 0)
3405 , nbv_retired
3406 , ret.recognize_gain_loss -- Added for bug 8425794 / 8244128
3407 , ret.recapture_amount
3408 from fa_mc_retirements ret
3409 , fa_transaction_headers mth
3413 and ret.book_type_code = p_asset_hdr_rec.book_type_code
3410 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
3411 and mth.asset_id = ret.asset_id
3412 and mth.book_type_code = p_asset_hdr_rec.book_type_code
3414 and ret.transaction_header_id_out = p_trans_rec.member_transaction_header_id
3415 and ret.set_of_books_id = p_asset_hdr_rec.set_of_books_id ;
3416
3417 CURSOR c_check_record_exists IS
3418 select bs.period_counter
3419 from fa_books_summary bs
3420 where bs.asset_id = p_asset_hdr_rec.asset_id
3421 and bs.book_type_code = p_asset_hdr_rec.book_type_code
3422 and bs.period_counter = p_period_rec.period_counter;
3423
3424 CURSOR c_check_mc_record_exists IS
3425 select bs.period_counter
3426 from fa_mc_books_summary bs
3427 where bs.asset_id = p_asset_hdr_rec.asset_id
3428 and bs.book_type_code = p_asset_hdr_rec.book_type_code
3429 and bs.period_counter = p_period_rec.period_counter
3430 and bs.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3431
3432 /* Following cursor is added by HHIRAGA for tracking */
3433 CURSOR c_get_current_period IS
3434 select dp.period_counter
3435 from fa_deprn_periods dp
3436 where dp.book_type_code = p_asset_hdr_rec.book_type_code
3437 and dp.period_close_date is null;
3438
3439 CURSOR c_get_current_period_mrc IS
3440 select dp.period_counter
3441 from fa_mc_deprn_periods dp
3442 where dp.book_type_code = p_asset_hdr_rec.book_type_code
3443 and dp.period_close_date is null
3444 and dp.set_of_books_id = p_asset_hdr_rec.set_of_books_id ;
3445
3446
3447 l_mem_trx BOOLEAN := FALSE; -- FALSE if this is group trx
3448 l_temp_num NUMBER; -- temporary numbers for calculation
3449
3450 l_period_rec FA_API_TYPES.period_rec_type; -- Store period information of
3451 -- the period where trx date
3452 -- falls into
3453 -- the period where trx date
3454 -- falls into, then
3455 -- store period info for
3456 -- each period processed.
3457 l_trx_period_rec FA_API_TYPES.period_rec_type; -- Store period information of
3458 -- the period where trx date
3459 -- falls into
3460
3461 l_ind BINARY_INTEGER; -- Used to find delta amounts for each period
3462 l_temp_ind BINARY_INTEGER; -- Indicate where to start updating FA_BOOKS_SUMMARY
3463 l_old_reserve NUMBER;
3464
3465 --
3466 -- Tables to store member delta information
3467 --
3468 td_period_counter fa_amort_pvt.tab_num15_type; -- not used
3469 td_cost fa_amort_pvt.tab_num_type; -- not used
3470 td_cip_cost fa_amort_pvt.tab_num_type; -- not used
3471 td_salvage_value fa_amort_pvt.tab_num_type;
3472 td_deprn_limit_amount fa_amort_pvt.tab_num_type;
3473
3474
3475 l_transaction_date_entered date; -- This is used as parameter for c_get_books_summary
3476 l_period_counter NUMBER(15);
3477
3478 l_bs_ind BINARY_INTEGER := 1;
3479 d BINARY_INTEGER := 0; -- index for delta tables
3480 e BINARY_INTEGER := 0; -- index for delta tables to look for
3481 -- next period to maintain books summary
3482
3483
3484 --
3485 -- Used to populate dpr_in
3486 --
3487 l_fiscal_year NUMBER(15);
3488 l_period_num NUMBER(15);
3489 l_adjusted_ind BINARY_INTEGER;
3490 l_count BINARY_INTEGER := 0; -- Stores count of tbs tables
3491
3492 --+++++ Store data related to each transactions +++++
3493 l_trans_rec FA_API_TYPES.trans_rec_type; -- Not used
3494 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type; -- For Deprn Basis
3495 l_asset_deprn_rec_raf FA_API_TYPES.asset_deprn_rec_type; -- For Deprn Basis
3496 l_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type; -- For Deprn Basis
3497 l_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type;
3498
3499 --+++++ Variables for calling buildMemberTable function +++++
3500 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type; -- Store member info
3501 t_period_counter fa_amort_pvt.tab_num15_type;
3502 t_delta_cost fa_amort_pvt.tab_num_type;
3503 t_delta_cip_cost fa_amort_pvt.tab_num_type;
3504 t_delta_salvage_value fa_amort_pvt.tab_num_type;
3505 t_delta_deprn_limit_amount fa_amort_pvt.tab_num_type;
3506 l_member_dpis DATE;
3507 l_multiplier NUMBER := 1;
3508 l_m_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type; -- member's delta info
3509 l_asset_fin_rec_reclass FA_API_TYPES.asset_fin_rec_type; -- correct fin rec adj for
3510 l_salvage_limit_type VARCHAR2(30);
3511 -- reclass
3512
3513 --+++++ Variables for CURSOR c_get_rein_info +++++
3514 l_nbv_retired NUMBER := 0;
3515 l_reserve_retired NUMBER;
3516 l_proceeds_of_sale NUMBER := 0;
3517 l_cost_of_removal NUMBER := 0;
3521
3518 l_recognize_gain_loss fa_retirements.recognize_gain_loss%type; -- Added for bug 8425794 / 8244128
3519 l_recapture_amount NUMBER := 0;
3520
3522 --+++++++++++++++ For calling faxcde +++++++++++++++
3523 l_dpr_in FA_STD_TYPES.dpr_struct;
3524 l_dpr_out FA_STD_TYPES.dpr_out_struct;
3525 l_dpr_arr FA_STD_TYPES.dpr_arr_type;
3526 l_running_mode NUMBER;
3527
3528 --
3529 -- These are used to store return values from faxcde which
3530 -- may not be used.
3531 --
3532 l_out_deprn_exp NUMBER;
3533 l_out_reval_exp NUMBER;
3534 l_out_reval_amo NUMBER;
3535 l_out_prod NUMBER;
3536 l_out_ann_adj_exp NUMBER;
3537 l_out_ann_adj_reval_exp NUMBER;
3538 l_out_ann_adj_reval_amo NUMBER;
3539 l_out_bonus_rate_used NUMBER;
3540 l_out_full_rsv_flag BOOLEAN;
3541 l_out_life_comp_flag BOOLEAN;
3542 l_out_deprn_override_flag VARCHAR2(1);
3543
3544
3545
3546 --+++++++ variables for old information +++++++
3547 l_eofy_rec_cost NUMBER; -- This needs to be populated from tbs
3548 l_eofy_sal_val NUMBER; -- This needs to be populated from tbs
3549 l_eop_rec_cost NUMBER; -- This needs to be populated from tbs
3550 l_eop_sal_val NUMBER; -- This needs to be populated from tbs
3551 l_eofy_reserve NUMBER;
3552
3553
3554 --++++++++ variables for manual override ++++++++
3555 l_rate_source_rule VARCHAR2(25);
3556 l_deprn_basis_rule VARCHAR2(25);
3557
3558 --++++++++ variables for calling catchupBooksSummary ++++++++
3559 l_depreciate_flag_change BOOLEAN := FALSE;
3560 l_disabled_flag_change BOOLEAN := FALSE;
3561
3562 l_gr_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type; -- For Reclass
3563 l_gr_ind BINARY_INTEGER;
3564
3565 --+ HHIRAGA added on Oct/Nov in 2003
3566 --++++++++ variables for Trackking Member Feature ++++++++
3567 l_processed_flag BOOLEAN := FALSE;
3568 l_backup_processed_flag BOOLEAN := FALSE;
3569 l_raf_processed_flag BOOLEAN := FALSE;
3570 l_first_process BOOLEAN := TRUE;
3571 l_current_period_counter NUMBER;
3572 l_mem_period_counter NUMBER;
3573
3574 l_mem_deprn_reserve NUMBER;
3575 l_mem_eofy_reserve NUMBER;
3576 l_mem_loop_first BOOLEAN := TRUE;
3577
3578 l_mem_ytd_deprn_addition NUMBER;
3579 l_mem_deprn_reserve_addition NUMBER;
3580
3581 l_recalc_start_fy NUMBER;
3582 l_recalc_start_period_num NUMBER;
3583 l_recalc_start_period_counter NUMBER;
3584 l_old_recalc_start_fy NUMBER;
3585 l_old_recalc_start_period_num NUMBER;
3586 l_old_recalc_end_fy NUMBER;
3587 l_old_recalc_end_period_num NUMBER;
3588 l_no_allocation_for_last VARCHAR2(1);
3589 l_chk_bs_row_exists VARCHAR2(1);
3590
3591 CURSOR c_chk_bs_row_exists IS
3592 select 'Y'
3593 from fa_books_summary
3594 where book_type_code = p_asset_hdr_rec.book_type_code
3595 and group_asset_id = p_asset_hdr_rec.asset_id
3596 and asset_id <> group_asset_id
3597 and period_counter = l_recalc_start_period_counter - 1;
3598
3599 CURSOR c_get_mem_bs_row IS
3600 select ytd_deprn,deprn_reserve,bonus_ytd_deprn,bonus_deprn_reserve,
3601 eofy_reserve,ytd_impairment,impairment_reserve
3602 from fa_books_summary
3603 where book_type_code = p_asset_hdr_rec.book_type_code
3604 and asset_id = p_reclassed_asset_id
3605 and group_asset_id = p_asset_hdr_rec.asset_id
3606 and period_counter = l_trx_period_rec.period_counter - 1;
3607
3608 CURSOR c_get_ytd_deprn IS
3609 select ytd_deprn,deprn_reserve
3610 from fa_deprn_summary
3611 where book_type_code = p_asset_hdr_rec.book_type_code
3612 and asset_id = p_reclassed_asset_id
3613 and period_counter = l_mem_period_counter
3614 and deprn_source_code = 'BOOKS';
3615
3616 --+ MRCsupport
3617 CURSOR c_chk_bs_row_exists_mrc IS
3618 select 'Y'
3619 from fa_mc_books_summary
3620 where book_type_code = p_asset_hdr_rec.book_type_code
3621 and group_asset_id = p_asset_hdr_rec.asset_id
3622 and asset_id <> group_asset_id
3623 and period_counter = l_recalc_start_period_counter - 1
3624 and set_of_books_id = p_asset_hdr_rec.set_of_books_id ;
3625
3626 CURSOR c_get_mem_bs_row_mrc IS
3627 select ytd_deprn,deprn_reserve,bonus_ytd_deprn,bonus_deprn_reserve,
3628 eofy_reserve, ytd_impairment, impairment_reserve
3629 from fa_mc_books_summary
3630 where book_type_code = p_asset_hdr_rec.book_type_code
3631 and asset_id = p_reclassed_asset_id
3632 and group_asset_id = p_asset_hdr_rec.asset_id
3633 and period_counter = l_trx_period_rec.period_counter - 1
3634 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3635
3636 CURSOR c_get_ytd_deprn_mrc IS
3637 select ytd_deprn,deprn_reserve
3638 from fa_mc_deprn_summary
3639 where book_type_code = p_asset_hdr_rec.book_type_code
3640 and asset_id = p_reclassed_asset_id
3641 and period_counter = l_mem_period_counter
3642 and deprn_source_code = 'BOOKS'
3643 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3644
3645
3646 --+++++++++++++++++ Exceptions ++++++++++++++++++++++
3647 invalid_trx_to_overlap EXCEPTION; --This is currently not used but there is a
3651 /*Bug 8765735 - Start*/
3648 --section in exception handling for future use.
3649 calc_failed EXCEPTION;
3650 l_adj_amt number; ----- bug# 5768759
3652 l_dpr FA_STD_TYPES.FA_DEPRN_ROW_STRUCT;
3653 l_run_mode VARCHAR2(20) := 'TRANSACTION';
3654 l_status BOOLEAN;
3655 /*Bug 8765735 - End*/
3656 l_prev_adj_cost_flag boolean := false; --bug#15897249
3657
3658 BEGIN
3659
3660 if (p_log_level_rec.statement_level) then
3661 fa_debug_pkg.add(l_calling_fn, 'Begin', p_asset_type_rec.asset_type||
3662 ':'||p_asset_hdr_rec.asset_id , p_log_level_rec => p_log_level_rec);
3663 fa_debug_pkg.add(l_calling_fn, 'Reclass values', p_reclass_src_dest||
3664 ':'||to_char(p_reclassed_asset_id)||':'||
3665 to_char(p_reclassed_asset_dpis, 'DD-MON-RR'));
3666 fa_debug_pkg.add(l_calling_fn, 'Begin BSrec sob_id',
3667 p_asset_hdr_rec.set_of_books_id);
3668
3669
3670 end if;
3671
3672 if (p_asset_fin_rec_old.depreciate_flag = 'NO') or
3673 (nvl(p_asset_fin_rec_old.disabled_flag, 'N') = 'Y') then
3674
3675 l_depreciate_flag_change := (p_asset_fin_rec_old.depreciate_flag <>
3676 px_asset_fin_rec_new.depreciate_flag);
3677
3678 l_disabled_flag_change := (nvl(p_asset_fin_rec_old.disabled_flag, 'N') <>
3679 nvl(px_asset_fin_rec_new.disabled_flag, 'N'));
3680
3681 if (not catchupBooksSummary (
3682 p_trans_rec => p_trans_rec,
3683 p_asset_hdr_rec => p_asset_hdr_rec,
3684 p_period_rec => p_period_rec,
3685 p_asset_fin_rec_new => px_asset_fin_rec_new,
3686 p_depreciate_flag_change => l_depreciate_flag_change,
3687 p_disabled_flag_change => l_disabled_flag_change,
3688 p_mrc_sob_type_code => p_mrc_sob_type_code,
3689 p_calling_fn => l_calling_fn,
3690 p_log_level_rec => p_log_level_rec)) then
3691
3692 if (p_log_level_rec.statement_level) then
3693 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'catchupBooksSummary', p_log_level_rec => p_log_level_rec);
3694 end if;
3695
3696 raise calc_failed;
3697
3698 end if;
3699 elsif (p_asset_fin_rec_old.period_counter_fully_reserved is not null) or
3700 (p_asset_fin_rec_old.period_counter_life_complete is not null) then
3701 l_temp_num := null;
3702
3703 if (p_mrc_sob_type_code = 'R') then
3704 OPEN c_check_mc_record_exists;
3705 FETCH c_check_mc_record_exists INTO l_temp_num;
3706 CLOSE c_check_mc_record_exists;
3707 else
3708 OPEN c_check_record_exists;
3709 FETCH c_check_record_exists INTO l_temp_num;
3710 CLOSE c_check_record_exists;
3711 end if;
3712
3713 if l_temp_num is null then
3714 if (not catchupBooksSummary (
3715 p_trans_rec => p_trans_rec,
3716 p_asset_hdr_rec => p_asset_hdr_rec,
3717 p_period_rec => p_period_rec,
3718 p_asset_fin_rec_new => px_asset_fin_rec_new,
3719 p_depreciate_flag_change => l_depreciate_flag_change,
3720 p_disabled_flag_change => l_disabled_flag_change,
3721 p_mrc_sob_type_code => p_mrc_sob_type_code,
3722 p_calling_fn => l_calling_fn,
3723 p_log_level_rec => p_log_level_rec)) then
3724
3725 if (p_log_level_rec.statement_level) then
3726 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'catchupBooksSummary', p_log_level_rec => p_log_level_rec);
3727 end if;
3728
3729 raise calc_failed;
3730
3731 end if;
3732 end if;
3733 end if;
3734
3735
3736 --
3737 -- Initialize global variables
3738 --
3739 InitGlobeVariables;
3740
3741 x_deprn_reserve := 0;
3742
3743 l_mem_trx := (p_trans_rec.member_transaction_header_id is not null);
3744
3745 l_transaction_date_entered := nvl(p_trans_rec.amortization_start_date,
3746 p_trans_rec.transaction_date_entered);
3747
3748 --
3749 -- Get period information of the period where transaction date falls into.
3750 --
3751 if not GetPeriodInfo(to_number(to_char(l_transaction_date_entered, 'J')),
3752 p_asset_hdr_rec.book_type_code,
3753 p_mrc_sob_type_code,
3754 p_asset_hdr_rec.set_of_books_id,
3755 l_period_rec,
3756 p_log_level_rec) then
3757
3758 if (p_log_level_rec.statement_level) then
3759 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
3760 end if;
3761
3762 raise calc_failed;
3763
3764 end if;
3765
3766 l_trx_period_rec := l_period_rec;
3767
3768 if not fa_cache_pkg.fazcct(fa_cache_pkg.fazcbc_record.deprn_calendar, p_log_level_rec => p_log_level_rec) then
3769
3770 if (p_log_level_rec.statement_level) then
3771 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'fa_cache_pkg.fazcct', p_log_level_rec => p_log_level_rec);
3772 end if;
3773
3774 raise calc_failed;
3775
3776 end if;
3777
3778 if (l_mem_trx) then
3779
3780 --
3784 l_member_dpis := p_reclassed_asset_dpis;
3781 -- Find member's date placed in service
3782 --
3783 if (p_trans_rec.transaction_key = 'GC') then
3785 else
3786 OPEN c_get_dpis(p_trans_rec.member_transaction_header_id);
3787 FETCH c_get_dpis INTO l_member_dpis;
3788 CLOSE c_get_dpis;
3789 end if;
3790
3791 -- Bug4958977: Adding following entire if statement
3792 if (p_trans_rec.transaction_key not in ('MR', 'MS', 'GC') and
3793 nvl(p_asset_fin_rec_adj.cost, 0) = 0 and
3794 nvl(p_asset_fin_rec_adj.cip_cost, 0) = 0 and
3795 nvl(p_asset_fin_rec_adj.salvage_value, 0) = 0 and
3796 nvl(p_asset_fin_rec_adj.allowed_deprn_limit_amount, 0) = 0) then
3797
3798
3799 --
3800 -- Get period information of the period where transaction date falls into.
3801 --
3802 if not GetPeriodInfo(to_number(to_char(l_member_dpis, 'J')),
3803 p_asset_hdr_rec.book_type_code,
3804 p_mrc_sob_type_code,
3805 p_asset_hdr_rec.set_of_books_id,
3806 l_period_rec,
3807 p_log_level_rec) then
3808
3809 if (p_log_level_rec.statement_level) then
3810 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
3811 end if;
3812
3813 raise calc_failed;
3814
3815 end if;
3816
3817 l_trx_period_rec := l_period_rec;
3818
3819 end if;
3820
3821 l_asset_hdr_rec := p_asset_hdr_rec;
3822 l_asset_hdr_rec.asset_id := p_reclassed_asset_id;
3823
3824 if (p_reclass_src_dest = 'SOURCE') then
3825 l_multiplier := -1;
3826 end if;
3827
3828 --
3829 -- bug5141789: Need to pass this new variable to see if
3830 -- we need to track sum of member salvage value or not.
3831 --
3832 if (px_asset_fin_rec_new.salvage_type = 'SUM' or
3833 px_asset_fin_rec_new.deprn_limit_type = 'SUM') then
3834 l_salvage_limit_type := 'SUM';
3835 else
3836 l_salvage_limit_type := 'PCT';
3837 end if;
3838
3839 if not buildMemberTable(
3840 p_trans_rec => p_trans_rec,
3841 p_asset_hdr_rec => l_asset_hdr_rec,
3842 p_period_rec => l_period_rec,
3843 p_date_placed_in_service => l_member_dpis,
3844 p_group_asset_id => p_asset_hdr_rec.asset_id,
3845 p_reclass_multiplier => l_multiplier,
3846 p_reclass_src_dest => p_reclass_src_dest,
3847 p_salvage_limit_type => l_salvage_limit_type,
3848 x_td_period_counter => td_period_counter,
3849 x_td_cost => td_cost,
3850 x_td_cip_cost => td_cip_cost,
3851 x_td_salvage_value => td_salvage_value,
3852 x_td_deprn_limit_amount => td_deprn_limit_amount,
3853 x_asset_fin_rec => l_m_asset_fin_rec_adj,
3854 x_asset_fin_rec_reclass => l_asset_fin_rec_reclass,
3855 p_mrc_sob_type_code => p_mrc_sob_type_code,
3856 p_log_level_rec => p_log_level_rec) then
3857
3858 if (p_log_level_rec.statement_level) then
3859 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'buildMemberTable', p_log_level_rec => p_log_level_rec);
3860 end if;
3861
3862 raise calc_failed;
3863 end if;
3864
3865 if (p_log_level_rec.statement_level) then
3866 fa_debug_pkg.add(l_calling_fn, '# of rows in delta talbe', td_cost.COUNT, p_log_level_rec => p_log_level_rec);
3867 end if;
3868
3869 else
3870 if (p_log_level_rec.statement_level) then
3871 fa_debug_pkg.add(l_calling_fn, 'Group Transaction', p_trans_rec.transaction_key, p_log_level_rec => p_log_level_rec);
3872 end if;
3873 end if; -- (l_mem_trx)
3874
3875 -- NOTE:
3876 -- if reclass NOT from DPIS
3877 -- then create one record to find cost, sal, etc... as of the date.
3878 -- for rest of period, apply delta directly.
3879 -- This means that if reclass from dpis, apply delta directly.
3880 -- if it is from current, use member's latest info.
3881 -- if it is from between dpis and current, then build first row
3882 -- and apply it and then apply rest of records.
3883
3884 -- HHIRAGA
3885 -- In case this is DESTINATION, group_asset_id in FA_BOOKS_SUMMARY must be updated before starting to
3886 -- processing
3887
3888 if (p_reclass_src_dest = 'DESTINATION') and
3889 nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'ALLOCATE' then
3890
3891 -- Bug 6903588: Initialize global variables
3892 -- similar to what is done in the case of 'SOURCE' below
3893 if (nvl(p_reclassed_asset_id, 0) <> nvl(g_mem_asset_id, 0)) then
3894 g_mem_ytd_deprn := 0;
3895 g_mem_deprn_reserve := 0;
3896 g_mem_bonus_ytd_deprn := 0;
3897 g_mem_bonus_deprn_reserve := 0;
3898 g_mem_ytd_impairment := 0;
3899 g_mem_impairment_reserve := 0;
3900 g_mem_eofy_reserve := 0;
3901 end if;
3902
3903 begin
3904
3905 l_mem_period_counter := l_trx_period_rec.period_counter - 1;
3906
3907 if (p_log_level_rec.statement_level) then
3908 fa_debug_pkg.add(l_calling_fn, 'Insert new row for proceessing','Start', p_log_level_rec => p_log_level_rec);
3909 fa_debug_pkg.add(l_calling_fn, 'Insert row',
3910 l_asset_hdr_rec.book_type_code||':'||p_reclassed_asset_id||':'||p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
3914 g_mem_bonus_ytd_deprn||':'||g_mem_bonus_deprn_reserve||':'||g_mem_eofy_reserve, p_log_level_rec => p_log_level_rec);
3911 fa_debug_pkg.add(l_calling_fn, 'Insert row',
3912 l_mem_period_counter||':'||g_mem_ytd_deprn||':'||g_mem_deprn_reserve, p_log_level_rec => p_log_level_rec);
3913 fa_debug_pkg.add(l_calling_fn, 'Insert row',
3915 end if;
3916
3917 -- Query YTD and Reserve from FA_DEPRN_SUMMARY for addition
3918 if p_mrc_sob_type_Code <> 'R' then
3919
3920 update fa_books_summary
3921 set group_Asset_id = p_asset_hdr_rec.asset_id
3922 where asset_id=p_reclassed_asset_id
3923 and period_counter >= l_trx_period_rec.period_counter;
3924
3925 open c_get_ytd_deprn;
3926 fetch c_get_ytd_deprn into l_mem_ytd_deprn_addition,l_mem_deprn_reserve_addition;
3927 close c_get_ytd_deprn;
3928
3929 if nvl(g_mem_ytd_deprn,0) = 0 and l_mem_ytd_deprn_addition is not null then
3930 g_mem_ytd_deprn := nvl(l_mem_ytd_deprn_addition,0);
3931 end if;
3932
3933 if nvl(g_mem_deprn_reserve,0) = 0 and l_mem_deprn_reserve_addition is not null then
3934 g_mem_deprn_reserve := nvl(l_mem_deprn_reserve_addition,0);
3935 g_mem_eofy_reserve := g_mem_deprn_reserve - g_mem_ytd_deprn;
3936 end if;
3937
3938 insert into fa_books_summary(book_type_code,
3939 asset_id,
3940 group_asset_id,
3941 period_counter,
3942 cost,
3943 salvage_value,
3944 recoverable_cost,
3945 adjusted_cost,
3946 adjusted_recoverable_cost,
3947 deprn_amount,
3948 ytd_deprn,
3949 deprn_reserve,
3950 bonus_ytd_deprn,
3951 bonus_deprn_reserve,
3952 ytd_impairment,
3953 impairment_reserve,
3954 eofy_reserve,
3955 creation_date,
3956 created_by,
3957 last_update_date,
3958 last_updated_by)
3959 values (l_asset_hdr_rec.book_type_code,
3960 p_reclassed_asset_id,
3961 p_asset_hdr_rec.asset_id,
3962 l_mem_period_counter,
3963 0,0,0,0,0,0,
3964 nvl(g_mem_ytd_deprn,0),
3965 nvl(g_mem_deprn_reserve,0),
3966 nvl(g_mem_bonus_ytd_deprn,0),
3967 nvl(g_mem_bonus_deprn_reserve,0),
3968 nvl(g_mem_ytd_impairment,0),
3969 nvl(g_mem_impairment_reserve,0),
3970 nvl(g_mem_eofy_reserve,0),
3971 p_trans_rec.who_info.creation_date,
3972 p_trans_rec.who_info.created_by,
3973 p_trans_rec.who_info.last_update_date,
3974 p_trans_rec.who_info.last_updated_by);
3975 else -- Reporting
3976
3977 update fa_mc_books_summary
3978 set group_Asset_id = p_asset_hdr_rec.asset_id
3979 where asset_id=p_reclassed_asset_id
3980 and period_counter >= l_trx_period_rec.period_counter
3981 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3982
3983 open c_get_ytd_deprn_mrc;
3984 fetch c_get_ytd_deprn_mrc into l_mem_ytd_deprn_addition,l_mem_deprn_reserve_addition;
3985 close c_get_ytd_deprn_mrc;
3986
3987 if nvl(g_mem_ytd_deprn,0) = 0 and l_mem_ytd_deprn_addition is not null then
3988 g_mem_ytd_deprn := nvl(l_mem_ytd_deprn_addition,0);
3989 end if;
3990
3991 if nvl(g_mem_deprn_reserve,0) = 0 and l_mem_deprn_reserve_addition is not null then
3992 g_mem_deprn_reserve := nvl(l_mem_deprn_reserve_addition,0);
3993 g_mem_eofy_reserve := g_mem_deprn_reserve - g_mem_ytd_deprn;
3994 end if;
3995
3996 insert into fa_mc_books_summary(set_of_books_id,
3997 book_type_code,
3998 asset_id,
3999 group_asset_id,
4000 period_counter,
4001 cost,
4002 salvage_value,
4003 recoverable_cost,
4004 adjusted_cost,
4005 adjusted_recoverable_cost,
4006 deprn_amount,
4007 ytd_deprn,
4008 deprn_reserve,
4009 bonus_ytd_deprn,
4010 bonus_deprn_reserve,
4011 ytd_impairment,
4012 impairment_reserve,
4013 eofy_reserve,
4014 creation_date,
4015 created_by,
4016 last_update_date,
4017 last_updated_by)
4018 values (l_asset_hdr_rec.set_of_books_id,
4019 l_asset_hdr_rec.book_type_code,
4023 0,0,0,0,0,0,
4020 p_reclassed_asset_id,
4021 p_asset_hdr_rec.asset_id,
4022 l_mem_period_counter,
4024 nvl(g_mem_ytd_deprn,0),
4025 nvl(g_mem_deprn_reserve,0),
4026 nvl(g_mem_bonus_ytd_deprn,0),
4027 nvl(g_mem_bonus_deprn_reserve,0),
4028 nvl(g_mem_ytd_impairment,0),
4029 nvl(g_mem_impairment_reserve,0),
4030 nvl(g_mem_eofy_reserve,0),
4031 p_trans_rec.who_info.creation_date,
4032 p_trans_rec.who_info.created_by,
4033 p_trans_rec.who_info.last_update_date,
4034 p_trans_rec.who_info.last_updated_by);
4035
4036 end if;
4037
4038 if (p_log_level_rec.statement_level) then
4039 fa_debug_pkg.add(l_calling_fn, 'Inserted rows','Without Error', p_log_level_rec => p_log_level_rec);
4040 end if;
4041
4042 exception
4043 when others then
4044 if (p_log_level_rec.statement_level) then
4045 fa_debug_pkg.add(l_calling_fn, 'Insert new row for proceessing','Error', p_log_level_rec => p_log_level_rec);
4046 end if;
4047 null;
4048 end;
4049 end if;
4050
4051 if (p_reclass_src_dest = 'SOURCE') then
4052
4053 --+ HHIRAGA added on Oct/Nov in 2003
4054 --
4055 -- If this processing is for Group Asset whose tracking method is
4056 -- setup and user specified reclassification date (amort date) is
4057 -- in the current open period, system don't need to recalculate from
4058 -- DPIS of the member asset to reclassify but jut get stored reserve,
4059 -- YTD Depreciation and EOFY Reserve from table using populate_member_reserve function
4060 -- defined in FA_TRACK_MEMBER_PVT.
4061 --
4062 -- Initialize global variables
4063 g_mem_asset_id := nvl(p_reclassed_asset_id, 0);
4064 g_mem_ytd_deprn := 0;
4065 g_mem_deprn_reserve := 0;
4066 g_mem_bonus_ytd_deprn := 0;
4067 g_mem_bonus_deprn_reserve := 0;
4068 g_mem_ytd_impairment := 0;
4069 g_mem_impairment_reserve := 0;
4070 g_mem_eofy_reserve := 0;
4071
4072 -- Query current open period counter
4073 if p_mrc_sob_type_code <> 'R' then
4074 open c_get_current_period;
4075 fetch c_get_current_period into l_current_period_counter;
4076 close c_get_current_period;
4077
4078 if nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'ALLOCATE' then
4079 if (p_log_level_rec.statement_level) then
4080 fa_debug_pkg.add(l_calling_fn, 'l_trx_period_rec.period_counter', l_trx_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
4081 fa_debug_pkg.add(l_calling_fn, 'p_Asset_hdr_rec.book_type_code', p_Asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
4082 fa_debug_pkg.add(l_calling_fn, 'p_reclassed_asset_id', p_reclassed_asset_id, p_log_level_rec => p_log_level_rec);
4083 fa_debug_pkg.add(l_calling_fn, 'p_asset_hdr_rec.asset_id', p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
4084 end if;
4085 open c_get_mem_bs_row;
4086 fetch c_get_mem_bs_row into g_mem_ytd_deprn,g_mem_deprn_reserve,
4087 g_mem_bonus_ytd_deprn,g_mem_bonus_deprn_reserve,g_mem_eofy_reserve,
4088 g_mem_ytd_impairment,g_mem_impairment_reserve;
4089
4090 close c_get_mem_bs_row;
4091 /*Bug 8765735 and 8814747 - Start*/
4092 if (fa_cache_pkg.fazcdbr_record.rule_name = 'ENERGY PERIOD END BALANCE') then
4093 l_dpr.asset_id := p_reclassed_asset_id;
4094 l_dpr.book := p_asset_hdr_rec.book_type_code;
4095 l_dpr.period_ctr := l_trx_period_rec.period_counter;
4096 l_dpr.dist_id := 0;
4097 l_dpr.mrc_sob_type_code := p_mrc_sob_type_code;
4098
4099 l_run_mode := 'STANDARD';
4100
4101 fa_query_balances_pkg.query_balances_int(
4102 X_DPR_ROW => l_dpr,
4103 X_RUN_MODE => l_run_mode,
4104 X_DEBUG => FALSE,
4105 X_SUCCESS => l_status,
4106 X_CALLING_FN => l_calling_fn,
4107 X_TRANSACTION_HEADER_ID => -1
4108 ,p_log_level_rec => p_log_level_rec);
4109 g_mem_ytd_deprn := l_dpr.ytd_deprn;
4110 g_mem_deprn_reserve := l_dpr.deprn_rsv;
4111 g_mem_bonus_ytd_deprn := l_dpr.bonus_ytd_deprn;
4112 g_mem_bonus_deprn_reserve := l_dpr.bonus_deprn_rsv;
4113 end if;
4114 /*Bug 8765735 and 8814747- End*/
4115 end if;
4116 else
4117 open c_get_current_period_mrc;
4118 fetch c_get_current_period_mrc into l_current_period_counter;
4119 close c_get_current_period_mrc;
4120
4121 if nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'ALLOCATE' then
4122 if (p_log_level_rec.statement_level) then
4123 fa_debug_pkg.add(l_calling_fn, 'l_trx_period_rec.period_counter', l_trx_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
4124 fa_debug_pkg.add(l_calling_fn, 'p_Asset_hdr_rec.book_type_code', p_Asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
4125 fa_debug_pkg.add(l_calling_fn, 'p_reclassed_asset_id', p_reclassed_asset_id, p_log_level_rec => p_log_level_rec);
4129 fetch c_get_mem_bs_row_mrc into g_mem_ytd_deprn,g_mem_deprn_reserve,
4126 fa_debug_pkg.add(l_calling_fn, 'p_asset_hdr_rec.asset_id', p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
4127 end if;
4128 open c_get_mem_bs_row_mrc;
4130 g_mem_bonus_ytd_deprn,g_mem_bonus_deprn_reserve,g_mem_eofy_reserve,
4131 g_mem_ytd_impairment,g_mem_impairment_reserve;
4132
4133 close c_get_mem_bs_row_mrc;
4134 /*Bug 8765735 and 8814747 - Start*/
4135 if (fa_cache_pkg.fazcdbr_record.rule_name = 'ENERGY PERIOD END BALANCE') then
4136 l_dpr.asset_id := p_reclassed_asset_id;
4137 l_dpr.book := p_asset_hdr_rec.book_type_code;
4138 l_dpr.period_ctr := l_trx_period_rec.period_counter;
4139 l_dpr.dist_id := 0;
4140 l_dpr.mrc_sob_type_code := p_mrc_sob_type_code;
4141 l_dpr.set_of_books_id := p_asset_hdr_rec.set_of_books_id; /*9090184 */
4142
4143 l_run_mode := 'STANDARD';
4144
4145 fa_query_balances_pkg.query_balances_int(
4146 X_DPR_ROW => l_dpr,
4147 X_RUN_MODE => l_run_mode,
4148 X_DEBUG => FALSE,
4149 X_SUCCESS => l_status,
4150 X_CALLING_FN => l_calling_fn,
4151 X_TRANSACTION_HEADER_ID => -1
4152 ,p_log_level_rec => p_log_level_rec);
4153 g_mem_ytd_deprn := l_dpr.ytd_deprn;
4154 g_mem_deprn_reserve := l_dpr.deprn_rsv;
4155 g_mem_bonus_ytd_deprn := l_dpr.bonus_ytd_deprn;
4156 g_mem_bonus_deprn_reserve := l_dpr.bonus_deprn_rsv;
4157 end if;
4158 /*Bug 8765735 and 8814747- End*/
4159 end if;
4160 end if;
4161
4162 if nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'CALCULATE' and
4163 l_trx_period_rec.period_counter = l_current_period_counter then
4164
4165 -- Call populate_member_reserve
4166 if not FA_TRACK_MEMBER_PVT.populate_member_reserve
4167 (p_trans_rec => p_trans_rec,
4168 p_asset_hdr_rec => p_asset_hdr_rec,
4169 p_asset_fin_rec_new => px_asset_fin_rec_new,
4170 p_mrc_sob_type_code => p_mrc_sob_type_code,
4171 x_deprn_reserve => l_mem_deprn_reserve,
4172 x_eofy_reserve => l_mem_eofy_reserve, p_log_level_rec => p_log_level_rec) then
4173 if (p_log_level_rec.statement_level) then
4174 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'populate_member_reserve', p_log_level_rec => p_log_level_rec);
4175 end if;
4176
4177 raise calc_failed;
4178 end if;
4179
4180 if (p_log_level_rec.statement_level) then
4181 fa_debug_pkg.add(l_calling_fn, '++ This is after POPULATE_MEMBER_RESERVE ++', '+++++', p_log_level_rec => p_log_level_rec);
4182 fa_debug_pkg.add(l_calling_fn, 'x_deprn_reserve', l_mem_deprn_reserve, p_log_level_rec => p_log_level_rec);
4183 fa_debug_pkg.add(l_calling_fn, 'x_eofy_reserve', l_mem_eofy_reserve, p_log_level_rec => p_log_level_rec);
4184 end if;
4185
4186 --
4187 -- Get period information of the period from member dpis
4188 --
4189 if not GetPeriodInfo(to_number(to_char(l_transaction_date_entered, 'J')),
4190 p_asset_hdr_rec.book_type_code,
4191 p_mrc_sob_type_code,
4192 p_asset_hdr_rec.set_of_books_id,
4193 l_period_rec,
4194 p_log_level_rec) then
4195
4196 if (p_log_level_rec.statement_level) then
4197 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
4198 end if;
4199
4200 raise calc_failed;
4201
4202 end if;
4203
4204 elsif nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'ALLOCATE' and
4205 g_mem_deprn_reserve is not null then
4206
4207 l_mem_deprn_reserve := g_mem_deprn_reserve;
4208 l_mem_eofy_reserve := nvl(g_mem_eofy_reserve,0);
4209
4210 l_mem_loop_first := TRUE;
4211
4212 If (p_log_level_rec.statement_level) then
4213 fa_debug_pkg.add(l_calling_fn, '++ This is a case for ALLOCATE and reclass in source group ++', '+++++', p_log_level_rec => p_log_level_rec);
4214 fa_debug_pkg.add(l_calling_fn, 'x_deprn_reserve', g_mem_deprn_reserve, p_log_level_rec => p_log_level_rec);
4215 fa_debug_pkg.add(l_calling_fn, 'x_eofy_reserve', g_mem_eofy_reserve, p_log_level_rec => p_log_level_rec);
4216 end if;
4217 /*115.211.211 branch to mainline porting - strats*/
4218 if (fa_cache_pkg.fazcdbr_record.rule_name <> 'ENERGY PERIOD END BALANCE') then
4219 if not GetPeriodInfo(to_number(to_char(p_reclassed_asset_dpis, 'J')),
4220 p_asset_hdr_rec.book_type_code,
4221 p_mrc_sob_type_code,
4222 p_asset_hdr_rec.set_of_books_id,
4223 l_period_rec,
4224 p_log_level_rec) then
4225
4226 if (p_log_level_rec.statement_level) then
4227 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
4228 end if;
4229
4230 raise calc_failed;
4231
4232 end if;
4233
4234 l_transaction_date_entered := p_reclassed_asset_dpis;
4238
4235 end if;
4236 /*115.211.211 branch to mainline porting - ends*/
4237
4239 else -- Tracking is not used or period is not current period
4240
4241 -- If this reclass is for source, group's books summary needs
4242 -- to be adjusted previously added period.
4243 -- If this is first time reclass out, it needs to be adjusted
4244 -- from dpis of the member asset. If not, period which this member
4245 -- became member needs to be addjusted until now.
4246 -- In here, the date needs to be determined.
4247 -- If this is for dest, trx date is the date that this member
4248 -- becomes the dest group's member.
4249 --
4250 -- Get period information of the period from member dpis
4251 --
4252 if not GetPeriodInfo(to_number(to_char(p_reclassed_asset_dpis, 'J')),
4253 p_asset_hdr_rec.book_type_code,
4254 p_mrc_sob_type_code,
4255 p_asset_hdr_rec.set_of_books_id,
4256 l_period_rec,
4257 p_log_level_rec) then
4258
4259 if (p_log_level_rec.statement_level) then
4260 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
4261 end if;
4262
4263 raise calc_failed;
4264
4265 end if;
4266
4267 l_transaction_date_entered := p_reclassed_asset_dpis;
4268
4269 end if; -- HHIRAGA if-statement
4270
4271 end if;
4272
4273 /*****************
4274 This part of code will be removed by adding new column change_in_eofy_reserve
4275 *****************
4276 --
4277 -- Setting period counter which is used to determine from which period
4278 -- is fa_books_summary records needed to be updated.
4279 -- If there is eofy_reserve in fin_rec_adj, need to get record from
4280 -- previous eofy record to reflect the amount and recalculate.
4281 --
4282 --tk_util.debug('p_asset_fin_rec_adj.eofy_reserve: '||to_char(p_asset_fin_rec_adj.eofy_reserve));
4283
4284 if (nvl(p_asset_fin_rec_adj.eofy_reserve, 0) <> 0) then
4285 --
4286 -- In case of trx w/ some eofy_reserve
4287 -- Update reserve_adjustment_amount by adj.eofy_reserve and reserve of the last eofy record,
4288 -- Update current fiscal years records' eofy_reserve
4289 -- Update current period's reserve_adjustment_amount with adj.reserve - adj.eofy_reserve
4290 -- This is why it needs to get extra periods(records before amortization start date) records
4291
4292 l_period_counter := (l_period_rec.period_counter - l_period_rec.period_num);
4293 else
4294 l_period_counter := l_period_rec.period_counter - 1;
4295 end if; -- (p_asset_fin_rec_adj.eofy_reserve is not null)
4296 */
4297
4298 l_period_counter := l_period_rec.period_counter - 1;
4299
4300 if (p_log_level_rec.statement_level) then
4301 fa_debug_pkg.add(l_calling_fn, 'Starting Period',
4302 l_period_counter, p_log_level_rec => p_log_level_rec);
4303 end if;
4304
4305 if (p_mrc_sob_type_code = 'R') then
4306
4307 OPEN c_get_mc_books_summary (l_period_counter);
4308 FETCH c_get_mc_books_summary BULK COLLECT INTO
4309 fa_amort_pvt.t_period_counter
4310 , fa_amort_pvt.t_fiscal_year
4311 , fa_amort_pvt.t_period_num
4312 , fa_amort_pvt.t_calendar_period_open_date
4313 , fa_amort_pvt.t_calendar_period_close_date
4314 , fa_amort_pvt.t_reset_adjusted_cost_flag
4315 , fa_amort_pvt.t_change_in_cost
4316 , fa_amort_pvt.t_change_in_cip_cost
4317 , fa_amort_pvt.t_cost
4318 , fa_amort_pvt.t_cip_cost
4319 , fa_amort_pvt.t_salvage_type
4320 , fa_amort_pvt.t_percent_salvage_value
4321 , fa_amort_pvt.t_salvage_value
4322 , fa_amort_pvt.t_member_salvage_value
4323 , fa_amort_pvt.t_recoverable_cost
4324 , fa_amort_pvt.t_deprn_limit_type
4325 , fa_amort_pvt.t_allowed_deprn_limit
4326 , fa_amort_pvt.t_allowed_deprn_limit_amount
4327 , fa_amort_pvt.t_member_deprn_limit_amount
4328 , fa_amort_pvt.t_adjusted_recoverable_cost
4329 , fa_amort_pvt.t_adjusted_cost
4330 , fa_amort_pvt.t_depreciate_flag
4331 , fa_amort_pvt.t_date_placed_in_service
4332 , fa_amort_pvt.t_deprn_method_code
4333 , fa_amort_pvt.t_life_in_months
4334 , fa_amort_pvt.t_rate_adjustment_factor
4335 , fa_amort_pvt.t_adjusted_rate
4336 , fa_amort_pvt.t_bonus_rule
4337 , fa_amort_pvt.t_adjusted_capacity
4338 , fa_amort_pvt.t_production_capacity
4339 , fa_amort_pvt.t_unit_of_measure
4340 , fa_amort_pvt.t_remaining_life1
4341 , fa_amort_pvt.t_remaining_life2
4342 , fa_amort_pvt.t_formula_factor
4343 , fa_amort_pvt.t_unrevalued_cost
4344 , fa_amort_pvt.t_reval_amortization_basis
4345 , fa_amort_pvt.t_reval_ceiling
4346 , fa_amort_pvt.t_ceiling_name
4347 , fa_amort_pvt.t_eofy_adj_cost
4348 , fa_amort_pvt.t_eofy_formula_factor
4349 , fa_amort_pvt.t_eofy_reserve
4350 , fa_amort_pvt.t_eop_adj_cost
4351 , fa_amort_pvt.t_eop_formula_factor
4352 , fa_amort_pvt.t_short_fiscal_year_flag
4353 , fa_amort_pvt.t_group_asset_id
4354 , fa_amort_pvt.t_super_group_id
4355 , fa_amort_pvt.t_over_depreciate_option
4356 , fa_amort_pvt.t_deprn_amount
4357 , fa_amort_pvt.t_ytd_deprn
4358 , fa_amort_pvt.t_deprn_reserve
4359 , fa_amort_pvt.t_bonus_deprn_amount
4363 , fa_amort_pvt.t_impairment_amount
4360 , fa_amort_pvt.t_bonus_ytd_deprn
4361 , fa_amort_pvt.t_bonus_deprn_reserve
4362 , fa_amort_pvt.t_bonus_rate
4364 , fa_amort_pvt.t_ytd_impairment
4365 , fa_amort_pvt.t_impairment_reserve
4366 , fa_amort_pvt.t_ltd_production
4367 , fa_amort_pvt.t_ytd_production
4368 , fa_amort_pvt.t_production
4369 , fa_amort_pvt.t_reval_amortization
4370 , fa_amort_pvt.t_reval_deprn_expense
4371 , fa_amort_pvt.t_reval_reserve
4372 , fa_amort_pvt.t_ytd_reval_deprn_expense
4373 , fa_amort_pvt.t_deprn_override_flag
4374 , fa_amort_pvt.t_system_deprn_amount
4375 , fa_amort_pvt.t_system_bonus_deprn_amount
4376 , fa_amort_pvt.t_ytd_proceeds_of_sale
4377 , fa_amort_pvt.t_ltd_proceeds_of_sale
4378 , fa_amort_pvt.t_ytd_cost_of_removal
4379 , fa_amort_pvt.t_ltd_cost_of_removal
4380 , fa_amort_pvt.t_deprn_adjustment_amount
4381 , fa_amort_pvt.t_expense_adjustment_amount
4382 , fa_amort_pvt.t_reserve_adjustment_amount
4383 , fa_amort_pvt.t_change_in_eofy_reserve
4384 , fa_amort_pvt.t_impairment_amount
4385 , fa_amort_pvt.t_ytd_impairment
4386 , fa_amort_pvt.t_impairment_reserve
4387 ;
4388
4389 CLOSE c_get_mc_books_summary;
4390
4391 else
4392
4393 OPEN c_get_books_summary (l_period_counter);
4394 FETCH c_get_books_summary BULK COLLECT INTO
4395 fa_amort_pvt.t_period_counter
4396 , fa_amort_pvt.t_fiscal_year
4397 , fa_amort_pvt.t_period_num
4398 , fa_amort_pvt.t_calendar_period_open_date
4399 , fa_amort_pvt.t_calendar_period_close_date
4400 , fa_amort_pvt.t_reset_adjusted_cost_flag
4401 , fa_amort_pvt.t_change_in_cost
4402 , fa_amort_pvt.t_change_in_cip_cost
4403 , fa_amort_pvt.t_cost
4404 , fa_amort_pvt.t_cip_cost
4408 , fa_amort_pvt.t_member_salvage_value
4405 , fa_amort_pvt.t_salvage_type
4406 , fa_amort_pvt.t_percent_salvage_value
4407 , fa_amort_pvt.t_salvage_value
4409 , fa_amort_pvt.t_recoverable_cost
4410 , fa_amort_pvt.t_deprn_limit_type
4411 , fa_amort_pvt.t_allowed_deprn_limit
4412 , fa_amort_pvt.t_allowed_deprn_limit_amount
4413 , fa_amort_pvt.t_member_deprn_limit_amount
4414 , fa_amort_pvt.t_adjusted_recoverable_cost
4415 , fa_amort_pvt.t_adjusted_cost
4416 , fa_amort_pvt.t_depreciate_flag
4417 , fa_amort_pvt.t_date_placed_in_service
4418 , fa_amort_pvt.t_deprn_method_code
4419 , fa_amort_pvt.t_life_in_months
4420 , fa_amort_pvt.t_rate_adjustment_factor
4421 , fa_amort_pvt.t_adjusted_rate
4422 , fa_amort_pvt.t_bonus_rule
4423 , fa_amort_pvt.t_adjusted_capacity
4424 , fa_amort_pvt.t_production_capacity
4425 , fa_amort_pvt.t_unit_of_measure
4426 , fa_amort_pvt.t_remaining_life1
4427 , fa_amort_pvt.t_remaining_life2
4428 , fa_amort_pvt.t_formula_factor
4429 , fa_amort_pvt.t_unrevalued_cost
4430 , fa_amort_pvt.t_reval_amortization_basis
4431 , fa_amort_pvt.t_reval_ceiling
4432 , fa_amort_pvt.t_ceiling_name
4433 , fa_amort_pvt.t_eofy_adj_cost
4434 , fa_amort_pvt.t_eofy_formula_factor
4435 , fa_amort_pvt.t_eofy_reserve
4436 , fa_amort_pvt.t_eop_adj_cost
4437 , fa_amort_pvt.t_eop_formula_factor
4438 , fa_amort_pvt.t_short_fiscal_year_flag
4439 , fa_amort_pvt.t_group_asset_id
4440 , fa_amort_pvt.t_super_group_id
4441 , fa_amort_pvt.t_over_depreciate_option
4442 , fa_amort_pvt.t_deprn_amount
4443 , fa_amort_pvt.t_ytd_deprn
4444 , fa_amort_pvt.t_deprn_reserve
4445 , fa_amort_pvt.t_bonus_deprn_amount
4446 , fa_amort_pvt.t_bonus_ytd_deprn
4447 , fa_amort_pvt.t_bonus_deprn_reserve
4448 , fa_amort_pvt.t_bonus_rate
4449 , fa_amort_pvt.t_impairment_amount
4450 , fa_amort_pvt.t_ytd_impairment
4451 , fa_amort_pvt.t_impairment_reserve
4452 , fa_amort_pvt.t_ltd_production
4453 , fa_amort_pvt.t_ytd_production
4454 , fa_amort_pvt.t_production
4455 , fa_amort_pvt.t_reval_amortization
4456 , fa_amort_pvt.t_reval_deprn_expense
4457 , fa_amort_pvt.t_reval_reserve
4458 , fa_amort_pvt.t_ytd_reval_deprn_expense
4462 , fa_amort_pvt.t_ytd_proceeds_of_sale
4459 , fa_amort_pvt.t_deprn_override_flag
4460 , fa_amort_pvt.t_system_deprn_amount
4461 , fa_amort_pvt.t_system_bonus_deprn_amount
4463 , fa_amort_pvt.t_ltd_proceeds_of_sale
4464 , fa_amort_pvt.t_ytd_cost_of_removal
4465 , fa_amort_pvt.t_ltd_cost_of_removal
4466 , fa_amort_pvt.t_deprn_adjustment_amount
4467 , fa_amort_pvt.t_expense_adjustment_amount
4468 , fa_amort_pvt.t_reserve_adjustment_amount
4469 , fa_amort_pvt.t_change_in_eofy_reserve
4470 , fa_amort_pvt.t_impairment_amount
4471 , fa_amort_pvt.t_ytd_impairment
4472 , fa_amort_pvt.t_impairment_reserve
4473 ;
4474
4475 CLOSE c_get_books_summary;
4476
4477 end if;
4478
4479 --tk_util.debug('period# : cost: adjcost: exp: eofy: rsvaj: rsv: dlmt: arec');
4480 /*
4481 for i in fa_amort_pvt.t_cost.FIRST..fa_amort_pvt.t_cost.LAST loop
4482 --tk_util.debug(rpad(to_char(fa_amort_pvt.t_period_counter(i)), 8, ' ')||':'||
4483 lpad(to_char(fa_amort_pvt.t_cost(i)), 10, ' ')||':'||
4484 lpad(to_char(fa_amort_pvt.t_adjusted_cost(i)), 10, ' ')||':'||
4485 lpad(to_char(fa_amort_pvt.t_deprn_amount(i)), 10, ' ')||':'||
4486 lpad(to_char(fa_amort_pvt.t_eofy_reserve(i)), 10, ' ')||':'||
4487 lpad(to_char(fa_amort_pvt.t_reserve_adjustment_amount(i)), 10, ' ')||':'||
4488 lpad(to_char(fa_amort_pvt.t_deprn_reserve(i)), 10, ' ')||':'||
4489 lpad(nvl(to_char(fa_amort_pvt.t_allowed_deprn_limit_amount(i)), 'null'), 5, ' ')||':'||
4490 lpad(to_char(fa_amort_pvt.t_adjusted_recoverable_cost(i)), 10, ' ')
4491 );
4492 end loop;
4493 */
4494 l_count := fa_amort_pvt.t_period_counter.COUNT;
4495
4496 if (p_log_level_rec.statement_level) then
4497 fa_debug_pkg.add(l_calling_fn, 'Number of period fetched', l_count, p_log_level_rec => p_log_level_rec);
4498 end if;
4499
4500 if (l_count = 1) then
4501 --
4502 -- Get eofy information from fa_books_summary_table
4503 --
4504 if (p_mrc_sob_type_code = 'R') then
4505 OPEN c_get_mc_eofy_amts(fa_amort_pvt.t_period_counter(1) - fa_amort_pvt.t_period_num(1));
4506 FETCH c_get_mc_eofy_amts INTO l_eofy_rec_cost
4507 , l_eofy_sal_val
4508 , l_eofy_reserve;
4509 if c_get_mc_eofy_amts%NOTFOUND then
4510 CLOSE c_get_mc_eofy_amts;
4511 l_eofy_rec_cost := 0;
4512 l_eofy_sal_val := 0;
4513 l_eofy_reserve := 0;
4514 else
4515 CLOSE c_get_mc_eofy_amts;
4516 end if;
4517 else
4518 OPEN c_get_eofy_amts(fa_amort_pvt.t_period_counter(1) - fa_amort_pvt.t_period_num(1));
4519 FETCH c_get_eofy_amts INTO l_eofy_rec_cost
4520 , l_eofy_sal_val
4521 , l_eofy_reserve;
4522 if c_get_eofy_amts%NOTFOUND then
4523 CLOSE c_get_eofy_amts;
4524 l_eofy_rec_cost := 0;
4525 l_eofy_sal_val := 0;
4526 l_eofy_reserve := 0;
4527 else
4528 CLOSE c_get_eofy_amts;
4529 end if;
4530 end if;
4531
4532 else
4533 --
4534 -- Get eofy information from fa_books_summary_table
4535 --
4536 if (p_mrc_sob_type_code = 'R') then
4537 OPEN c_get_mc_eofy_amts(fa_amort_pvt.t_period_counter(2) - fa_amort_pvt.t_period_num(2));
4538 FETCH c_get_mc_eofy_amts INTO l_eofy_rec_cost
4539 , l_eofy_sal_val
4540 , l_eofy_reserve;
4541 if c_get_mc_eofy_amts%NOTFOUND then
4542 CLOSE c_get_mc_eofy_amts;
4543 l_eofy_rec_cost := 0;
4544 l_eofy_sal_val := 0;
4545 l_eofy_reserve := 0;
4546 else
4547 CLOSE c_get_mc_eofy_amts;
4548 end if;
4549 else
4550 OPEN c_get_eofy_amts(fa_amort_pvt.t_period_counter(2) - fa_amort_pvt.t_period_num(2));
4551 FETCH c_get_eofy_amts INTO l_eofy_rec_cost
4552 , l_eofy_sal_val
4553 , l_eofy_reserve;
4554 if c_get_eofy_amts%NOTFOUND then
4555 CLOSE c_get_eofy_amts;
4556 l_eofy_rec_cost := 0;
4557 l_eofy_sal_val := 0;
4558 l_eofy_reserve := 0;
4559 else
4560 CLOSE c_get_eofy_amts;
4561 end if;
4562 end if;
4563
4564 end if; -- (l_count = 1)
4565
4566 if (p_log_level_rec.statement_level) then
4567 fa_debug_pkg.add(l_calling_fn, 'l_eofy_reserve', l_eofy_reserve, p_log_level_rec => p_log_level_rec);
4568 end if;
4569
4570 /*** REMOVED
4571 end if;
4572 ***/
4573
4574 --
4575 -- At this point, l_bs_ind holds indicator for previous period of the period
4576 -- where amortization start date falls in.
4577 --
4578 --tk_util.debug('l_transaction_date_entered: '||to_char(l_transaction_date_entered, 'DD-MON-YYYY'));
4579 --tk_util.debug('close date: '||to_char(fa_amort_pvt.t_calendar_period_close_date(l_bs_ind), 'DD-MON-YYYY'));
4580 --tk_util.debug('count: '||to_char(fa_amort_pvt.t_period_counter.COUNT));
4581
4582 if (fa_amort_pvt.t_period_counter.COUNT > 1) and
4583 (l_transaction_date_entered >
4584 fa_amort_pvt.t_calendar_period_close_date(l_bs_ind))then
4585 l_bs_ind := l_bs_ind + 1;
4586 end if;
4587 --tk_util.debug('l_bs_ind: '||to_char(l_bs_ind));
4588
4589 if (p_log_level_rec.statement_level) then
4590 fa_debug_pkg.add(l_calling_fn, 'Populating local fin_rec_old',
4594 l_asset_fin_rec_old.cost := fa_amort_pvt.t_cost(l_bs_ind);
4591 fa_amort_pvt.t_cost(l_bs_ind));
4592 end if;
4593
4595 l_asset_fin_rec_old.formula_factor := fa_amort_pvt.t_formula_factor(l_bs_ind);
4596
4597 l_asset_fin_rec_old.rate_adjustment_factor := fa_amort_pvt.t_rate_adjustment_factor(l_bs_ind);
4598 l_asset_fin_rec_old.adjusted_cost := fa_amort_pvt.t_adjusted_cost(l_bs_ind);
4599 l_asset_fin_rec_old.salvage_value := fa_amort_pvt.t_salvage_value(l_bs_ind);
4600 l_asset_fin_rec_old.recoverable_cost := fa_amort_pvt.t_recoverable_cost(l_bs_ind);
4601
4602
4603 l_asset_fin_rec_old.deprn_method_code := fa_amort_pvt.t_deprn_method_code(l_bs_ind);
4604 l_asset_fin_rec_old.life_in_months := fa_amort_pvt.t_life_in_months(l_bs_ind);
4605 l_asset_fin_rec_old.group_asset_id := fa_amort_pvt.t_group_asset_id(l_bs_ind);
4606 l_asset_fin_rec_old.depreciate_flag := fa_amort_pvt.t_depreciate_flag(l_bs_ind);
4607 l_asset_fin_rec_old.recognize_gain_loss := px_asset_fin_rec_new.recognize_gain_loss;
4608 l_asset_fin_rec_old.tracking_method := px_asset_fin_rec_new.tracking_method;
4609
4610 l_asset_fin_rec_old.allocate_to_fully_rsv_flag := px_asset_fin_rec_new.allocate_to_fully_rsv_flag;
4611 l_asset_fin_rec_old.allocate_to_fully_ret_flag := px_asset_fin_rec_new.allocate_to_fully_ret_flag;
4612 l_asset_fin_rec_old.excess_allocation_option := px_asset_fin_rec_new.excess_allocation_option;
4613 l_asset_fin_rec_old.depreciation_option := px_asset_fin_rec_new.depreciation_option;
4614 l_asset_fin_rec_old.member_rollup_flag := px_asset_fin_rec_new.member_rollup_flag;
4615
4616 l_asset_fin_rec_new.reduction_rate := px_asset_fin_rec_new.reduction_rate;
4617 l_asset_fin_rec_new.recognize_gain_loss := l_asset_fin_rec_old.recognize_gain_loss;
4618 l_asset_fin_rec_new.tracking_method := l_asset_fin_rec_old.tracking_method;
4619 l_asset_fin_rec_new.allocate_to_fully_rsv_flag := l_asset_fin_rec_old.allocate_to_fully_rsv_flag;
4620 l_asset_fin_rec_new.allocate_to_fully_ret_flag := l_asset_fin_rec_old.allocate_to_fully_ret_flag;
4621 l_asset_fin_rec_new.excess_allocation_option := l_asset_fin_rec_old.excess_allocation_option;
4622 l_asset_fin_rec_new.depreciation_option := l_asset_fin_rec_old.depreciation_option;
4623 l_asset_fin_rec_new.member_rollup_flag := l_asset_fin_rec_old.member_rollup_flag;
4624 --Bug3286560: This will be old adj cost in deprn basis function
4625 l_asset_fin_rec_new.adjusted_cost := fa_amort_pvt.t_adjusted_cost(l_bs_ind);
4626 -- Bug 4700524: first time in loop fin_rec_old.cost needs to be old cost
4627 l_asset_fin_rec_new.cost := fa_amort_pvt.t_cost(l_bs_ind);
4628
4629 --
4630 -- Setting reset_adjusted_cost_flag
4631 -- If this is source group, it is not always first period of recalculation because
4632 -- pl/sql table always has data from member's dpis
4633 -- Also find value for l_temp_ind and it will be used to update table at the end.
4634 --
4635 if (p_reclass_src_dest = 'SOURCE') then
4636
4637 l_temp_ind := l_bs_ind + l_trx_period_rec.period_counter - fa_amort_pvt.t_period_counter(l_bs_ind);
4638 fa_amort_pvt.t_reset_adjusted_cost_flag(l_temp_ind) := 'Y';
4639
4640 --tk_util.debug('l_temp_ind: '||to_char(l_temp_ind));
4641 --tk_util.debug('period counter: '||to_char(fa_amort_pvt.t_period_counter(l_temp_ind)));
4642
4643 --
4644 -- Store old reserve so that it can be used to determine how much reserve needs to be
4645 -- taken out from srouce group at reclassed period.
4646 --
4647 if (l_temp_ind = 1) then
4648 l_old_reserve := 0;
4649 else
4650 /*Bug# 8548876 -uncommented changes done for 5768759*/
4651 l_old_reserve := fa_amort_pvt.t_deprn_reserve(l_temp_ind - 1);
4652 end if;
4653
4654 else
4655 l_temp_ind := l_bs_ind;
4656
4657 if (p_reclass_src_dest is not null) then
4658 fa_amort_pvt.t_reset_adjusted_cost_flag(l_bs_ind) := 'Y';
4659 end if;
4660
4661 -- else
4662 -- fa_amort_pvt.t_reset_adjusted_cost_flag(l_bs_ind) := 'Y';
4663 -- l_temp_ind := l_bs_ind;
4664 end if;
4665
4666 if (p_trans_rec.transaction_key = 'MS') then
4667 if (p_mrc_sob_type_code = 'R') then
4668 OPEN c_get_mc_rein_info;
4669 FETCH c_get_mc_rein_info INTO l_proceeds_of_sale
4670 , l_cost_of_removal
4671 , l_reserve_retired
4672 , l_nbv_retired
4673 , l_recognize_gain_loss -- Added for bug 8425794 / 8244128
4674 , l_recapture_amount;
4675 CLOSE c_get_mc_rein_info;
4676 else
4677 OPEN c_get_rein_info;
4678 FETCH c_get_rein_info INTO l_proceeds_of_sale
4679 , l_cost_of_removal
4680 , l_reserve_retired
4681 , l_nbv_retired
4682 , l_recognize_gain_loss -- Added for bug 8425794 / 8244128
4683 , l_recapture_amount;
4684 CLOSE c_get_rein_info;
4685 end if;
4686
4687 if (l_reserve_retired is null) and
4688 (l_recognize_gain_loss = 'NO') then
4689 l_reserve_retired := px_asset_fin_rec_new.cost - p_asset_fin_rec_old.cost;
4690 elsif (l_reserve_retired is null) then -- Added for bug 8425794 / 8244128
4691 l_reserve_retired := 0;
4692 end if;
4693
4694 --bug6912446
4695 -- Lifting below to calculate reserve retired for all ALLOCATE and DO NOT RECOGNIZE CASE
4696 if (p_asset_fin_rec_old.tracking_method = 'ALLOCATE') and
4697 (l_recognize_gain_loss = 'NO') then
4698 -- l_proceeds_of_sale and l_cost_of_removal has -1 multiplied in cursor c_get_rein_info
4699 -- so that it can be added whether the trx is ret or rein later when maintaining
4700 -- ytd and ltd for books summary table.
4704 if (p_log_level_rec.statement_level) then
4701 l_reserve_retired := p_asset_fin_rec_adj.cost + l_proceeds_of_sale - l_cost_of_removal + nvl(l_recapture_amount,0);
4702 end if;
4703
4705 fa_debug_pkg.add(l_calling_fn, 'This is Reinstatement', l_reserve_retired, p_log_level_rec => p_log_level_rec);
4706 end if;
4707
4708 else
4709 l_reserve_retired := 0;
4710 end if;
4711
4712
4713 --
4714 -- Need to find out how unplanned expense is passed to here
4715 --
4716 fa_amort_pvt.t_expense_adjustment_amount(l_bs_ind) :=
4717 fa_amort_pvt.t_expense_adjustment_amount(l_bs_ind) +
4718 nvl(p_asset_deprn_rec_adj.deprn_amount, 0);
4719
4720 fa_amort_pvt.t_reserve_adjustment_amount(l_bs_ind) :=
4721 fa_amort_pvt.t_reserve_adjustment_amount(l_bs_ind) +
4722 nvl(p_asset_deprn_rec_adj.deprn_reserve, 0) + l_reserve_retired;
4723 -- nvl(p_asset_deprn_rec_adj.deprn_reserve, 0);
4724 -- (nvl(p_asset_deprn_rec_adj.deprn_reserve, 0) -
4725 -- nvl(p_asset_fin_rec_adj.eofy_reserve, 0)) +
4726
4727
4728
4729 fa_amort_pvt.t_change_in_eofy_reserve(l_bs_ind) :=
4730 nvl(fa_amort_pvt.t_change_in_eofy_reserve(l_bs_ind), 0) +
4731 nvl(p_asset_fin_rec_adj.eofy_reserve, 0);
4732
4733
4734 --Bug7487450: Modified "> 2" with "> 1" as it was not setting correct amount
4735 -- for reserve if there are only two period.
4736 if (p_reclass_src_dest = 'SOURCE') then
4737 if (l_trx_period_rec.period_counter > fa_amort_pvt.t_period_counter(1)) and
4738 (l_trx_period_rec.period_counter >= fa_amort_pvt.t_period_counter(l_bs_ind)) and
4739 (fa_amort_pvt.t_period_counter.COUNT > 1) then
4740
4741 --tk_util.debug('last period counter: '||to_char(fa_amort_pvt.t_period_counter(fa_amort_pvt.t_period_counter.LAST)));
4742 --tk_util.debug('l_trx_period_rec.period_counter: '||to_char(l_trx_period_rec.period_counter));
4743
4744 l_gr_ind := fa_amort_pvt.t_period_counter.COUNT -
4745 (fa_amort_pvt.t_period_counter(fa_amort_pvt.t_period_counter.LAST) -
4746 (l_trx_period_rec.period_counter - 1));
4747
4748 --tk_util.debug('l_gr_ind: '||to_char(l_gr_ind));
4749 --tk_util.debug('ytd: '||to_char(fa_amort_pvt.t_ytd_deprn(l_gr_ind)));
4750
4751 l_gr_asset_deprn_rec.deprn_amount := fa_amort_pvt.t_deprn_amount(l_gr_ind);
4752 l_gr_asset_deprn_rec.ytd_deprn := fa_amort_pvt.t_ytd_deprn(l_gr_ind);
4753 l_gr_asset_deprn_rec.deprn_reserve := fa_amort_pvt.t_deprn_reserve(l_gr_ind);
4754 l_gr_asset_deprn_rec.bonus_deprn_amount := fa_amort_pvt.t_bonus_deprn_amount(l_gr_ind);
4755 l_gr_asset_deprn_rec.bonus_ytd_deprn := fa_amort_pvt.t_bonus_ytd_deprn(l_gr_ind);
4756 l_gr_asset_deprn_rec.bonus_deprn_reserve := fa_amort_pvt.t_bonus_deprn_reserve(l_gr_ind);
4757 l_gr_asset_deprn_rec.impairment_amount := fa_amort_pvt.t_impairment_amount(l_gr_ind);
4758 l_gr_asset_deprn_rec.ytd_impairment := fa_amort_pvt.t_ytd_impairment(l_gr_ind);
4759 l_gr_asset_deprn_rec.impairment_reserve := fa_amort_pvt.t_impairment_reserve(l_gr_ind);
4760 l_gr_asset_deprn_rec.ltd_production := fa_amort_pvt.t_ltd_production(l_gr_ind);
4761 l_gr_asset_deprn_rec.ytd_production := fa_amort_pvt.t_ytd_production(l_gr_ind);
4762 l_gr_asset_deprn_rec.production := fa_amort_pvt.t_production(l_gr_ind);
4763 l_gr_asset_deprn_rec.reval_amortization := fa_amort_pvt.t_reval_amortization(l_gr_ind);
4764 l_gr_asset_deprn_rec.reval_deprn_expense := fa_amort_pvt.t_reval_deprn_expense(l_gr_ind);
4765 l_gr_asset_deprn_rec.reval_deprn_reserve := fa_amort_pvt.t_reval_reserve(l_gr_ind);
4766 l_gr_asset_deprn_rec.reval_ytd_deprn := fa_amort_pvt.t_ytd_reval_deprn_expense(l_gr_ind);
4767 else
4768 l_gr_asset_deprn_rec.deprn_amount := 0;
4769 l_gr_asset_deprn_rec.ytd_deprn := 0;
4770 l_gr_asset_deprn_rec.deprn_reserve := 0;
4771 l_gr_asset_deprn_rec.bonus_deprn_amount := 0;
4772 l_gr_asset_deprn_rec.bonus_ytd_deprn := 0;
4773 l_gr_asset_deprn_rec.bonus_deprn_reserve := 0;
4774 l_gr_asset_deprn_rec.impairment_amount := 0;
4775 l_gr_asset_deprn_rec.ytd_impairment := 0;
4776 l_gr_asset_deprn_rec.impairment_reserve := 0;
4777 l_gr_asset_deprn_rec.ltd_production := 0;
4778 l_gr_asset_deprn_rec.ytd_production := 0;
4779 l_gr_asset_deprn_rec.production := 0;
4780 l_gr_asset_deprn_rec.reval_amortization := 0;
4781 l_gr_asset_deprn_rec.reval_deprn_expense := 0;
4782 l_gr_asset_deprn_rec.reval_deprn_reserve := 0;
4783 l_gr_asset_deprn_rec.reval_ytd_deprn := 0;
4784 end if;
4785 end if;
4786
4787
4788 d := 0;
4789
4790 --tk_util.debug('period# : cost: adjcost: exp: eofy: rsvaj: rsv: dlmt: arec');
4791 /*
4792 for i in fa_amort_pvt.t_cost.FIRST..fa_amort_pvt.t_cost.LAST loop
4793 --tk_util.debug(rpad(to_char(fa_amort_pvt.t_period_counter(i)), 8, ' ')||':'||
4794 lpad(to_char(fa_amort_pvt.t_cost(i)), 10, ' ')||':'||
4795 lpad(to_char(fa_amort_pvt.t_adjusted_cost(i)), 10, ' ')||':'||
4796 lpad(to_char(fa_amort_pvt.t_deprn_amount(i)), 10, ' ')||':'||
4797 lpad(to_char(fa_amort_pvt.t_eofy_reserve(i)), 10, ' ')||':'||
4798 lpad(to_char(fa_amort_pvt.t_reserve_adjustment_amount(i)), 10, ' ')||':'||
4799 lpad(to_char(fa_amort_pvt.t_deprn_reserve(i)), 10, ' ')||':'||
4800 lpad(nvl(to_char(fa_amort_pvt.t_allowed_deprn_limit_amount(i)), 'null'), 5, ' ')||':'||
4801 lpad(to_char(fa_amort_pvt.t_adjusted_recoverable_cost(i)), 10, ' ')
4802 );
4806 -- Update FA_BOOKS_SUMMARY
4803 end loop;
4804 */
4805 --
4807 --
4808
4809 -- *********************** --
4810 -- Main Loop Starts Here --
4811 -- *********************** --
4812 FOR i IN l_bs_ind..l_count LOOP
4813 d := d + 1;
4814
4815 if (p_log_level_rec.statement_level) then
4816 fa_debug_pkg.add(l_calling_fn, 'Processing period',
4817 fa_amort_pvt.t_period_counter(i));
4818 end if;
4819
4820 if i <> 1 then
4821 l_asset_fin_rec_old := l_asset_fin_rec_new;
4822 end if;
4823
4824 --
4825 -- Populate l_period_rec for deprn basis
4826 --
4827 l_period_rec.period_counter := fa_amort_pvt.t_period_counter(i);
4828 l_period_rec.fiscal_year := fa_amort_pvt.t_fiscal_year(i);
4829 l_period_rec.period_num := fa_amort_pvt.t_period_num(i);
4830
4831 --tk_util.debug('fa_amort_pvt.t_cost: '||to_char(fa_amort_pvt.t_cost(i)));
4832 l_prev_adj_cost_flag := false; --bug#15897249
4833 if (l_mem_trx) then
4834
4835 --tk_util.debug('td_cost('||to_char(d)||'): '||to_char(td_cost(d)));
4836 --tk_util.debug('l_trx_period_rec.period_counter: '||to_char(l_trx_period_rec.period_counter));
4837 if (p_log_level_rec.statement_level) then
4838 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_change_in_cost(i)' , fa_amort_pvt.t_change_in_cost(i), p_log_level_rec);
4839 fa_debug_pkg.add(l_calling_fn, 'td_cost(d)' , td_cost(d), p_log_level_rec);
4840 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_reclass.cost' , l_asset_fin_rec_reclass.cost, p_log_level_rec);
4841 end if;
4842
4843 if (p_reclass_src_dest = 'DESTINATION') and
4844 (l_trx_period_rec.period_counter = fa_amort_pvt.t_period_counter(i)) then
4845
4846 --tk_util.debug('GROUP RECLASS: '||to_char(fa_amort_pvt.t_period_counter(i)));
4847
4848 fa_amort_pvt.t_change_in_cost(i) := fa_amort_pvt.t_change_in_cost(i) + l_asset_fin_rec_reclass.cost;
4849 fa_amort_pvt.t_change_in_cip_cost(i) := fa_amort_pvt.t_change_in_cip_cost(i) +
4850 l_asset_fin_rec_reclass.cip_cost;
4851 else
4852 --tk_util.debug('fa_amort_pvt.t_change_in_cost('||to_char(d)||'): '|| to_char(fa_amort_pvt.t_change_in_cost(i)));
4853
4854 fa_amort_pvt.t_change_in_cost(i) := fa_amort_pvt.t_change_in_cost(i) + td_cost(d);
4855 fa_amort_pvt.t_change_in_cip_cost(i) := fa_amort_pvt.t_change_in_cip_cost(i) + td_cip_cost(d);
4856
4857 end if;
4858
4859 --tk_util.debug('fa_amort_pvt.t_change_in_cost('||to_char(i)||'): '|| to_char(fa_amort_pvt.t_change_in_cost(i)));
4860 --tk_util.debug('td_salvage_value('||to_char(d)||'): '|| to_char(td_salvage_value(d)));
4861
4862 if (p_reclass_src_dest = 'SOURCE') and (l_trx_period_rec.period_counter = fa_amort_pvt.t_period_counter(i)
4863 and (nvl(fa_cache_pkg.fazcdbr_record.rule_name,'ZZ') = 'ENERGY PERIOD END BALANCE')
4864 ) then
4865 fa_amort_pvt.t_change_in_cost(i) := fa_amort_pvt.t_change_in_cost(i) +
4866 (l_asset_fin_rec_reclass.cost - td_cost(d));
4867 fa_amort_pvt.t_change_in_cip_cost(i) := fa_amort_pvt.t_change_in_cip_cost(i) +
4868 (l_asset_fin_rec_reclass.cip_cost - td_cip_cost(d));
4869 --tk_util.debug('Synchronizing change_in_cost: '||to_char(fa_amort_pvt.t_change_in_cost(i)));
4870 end if;
4871
4872 if (i = 1) then
4873 fa_amort_pvt.t_cost(i) := fa_amort_pvt.t_change_in_cost(i);
4874 fa_amort_pvt.t_cip_cost(i) := fa_amort_pvt.t_change_in_cip_cost(i);
4875
4876 if (p_reclass_src_dest is not null) and
4877 (l_trx_period_rec.period_counter = fa_amort_pvt.t_period_counter(i)) then
4878 fa_amort_pvt.t_member_salvage_value(i) := fa_amort_pvt.t_member_salvage_value(i) +
4879 l_asset_fin_rec_reclass.salvage_value;
4880 fa_amort_pvt.t_member_deprn_limit_amount(i) := fa_amort_pvt.t_member_deprn_limit_amount(i) +
4881 l_asset_fin_rec_reclass.allowed_deprn_limit_amount;
4882 else
4883 fa_amort_pvt.t_member_salvage_value(i) := fa_amort_pvt.t_member_salvage_value(i) +
4884 td_salvage_value(d);
4885 fa_amort_pvt.t_member_deprn_limit_amount(i) := fa_amort_pvt.t_member_deprn_limit_amount(i) +
4886 td_deprn_limit_amount(d);
4887 end if;
4888
4889 fa_amort_pvt.t_rate_adjustment_factor(i) := 1;
4890 else
4891 --bug6903588: Need to back out this fix as it was distructing the testcase for this bug
4892 -- Cannot reproduce during the test.
4893 if (p_log_level_rec.statement_level) then
4894 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_cost(i - 1)' , fa_amort_pvt.t_cost(i - 1), p_log_level_rec);
4895 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_change_in_cost(i)' , fa_amort_pvt.t_change_in_cost(i), p_log_level_rec);
4896 end if;
4897 fa_amort_pvt.t_cost(i) := fa_amort_pvt.t_cost(i - 1) + fa_amort_pvt.t_change_in_cost(i);
4898 fa_amort_pvt.t_cip_cost(i) := fa_amort_pvt.t_cip_cost(i - 1) + fa_amort_pvt.t_change_in_cip_cost(i);
4899
4900
4901 if (p_reclass_src_dest is not null) and
4902 (l_trx_period_rec.period_counter = fa_amort_pvt.t_period_counter(i)) then
4903 fa_amort_pvt.t_member_salvage_value(i) := fa_amort_pvt.t_member_salvage_value(i) +
4904 l_asset_fin_rec_reclass.salvage_value;
4905 fa_amort_pvt.t_member_deprn_limit_amount(i) := fa_amort_pvt.t_member_deprn_limit_amount(i) +
4909 td_salvage_value(d);
4906 l_asset_fin_rec_reclass.allowed_deprn_limit_amount;
4907 else
4908 fa_amort_pvt.t_member_salvage_value(i) := fa_amort_pvt.t_member_salvage_value(i) +
4910 fa_amort_pvt.t_member_deprn_limit_amount(i) := fa_amort_pvt.t_member_deprn_limit_amount(i) +
4911 td_deprn_limit_amount(d);
4912 end if;
4913
4914 fa_amort_pvt.t_rate_adjustment_factor(i) := fa_amort_pvt.t_rate_adjustment_factor(i - 1);
4915 end if;
4916 if (p_reclass_src_dest = 'SOURCE') and (l_trx_period_rec.period_counter = fa_amort_pvt.t_period_counter(i)
4917 and (nvl(fa_cache_pkg.fazcdbr_record.rule_name,'ZZ') <> 'ENERGY PERIOD END BALANCE')
4918 ) then
4919 fa_amort_pvt.t_change_in_cost(i) := fa_amort_pvt.t_change_in_cost(i) +
4920 (l_asset_fin_rec_reclass.cost - td_cost(d));
4921 fa_amort_pvt.t_change_in_cip_cost(i) := fa_amort_pvt.t_change_in_cip_cost(i) +
4922 (l_asset_fin_rec_reclass.cip_cost - td_cip_cost(d));
4923 --tk_util.debug('Synchronizing change_in_cost: '||to_char(fa_amort_pvt.t_change_in_cost(i)));
4924 end if;
4925 end if;
4926
4927 --tk_util.debug('fa_amort_pvt.t_member_salvage_value('||to_char(i)||'): '|| to_char(fa_amort_pvt.t_member_salvage_value(i)));
4928 --tk_util.debug('fa_amort_pvt.t_cost('||to_char(d)||'): '|| to_char(fa_amort_pvt.t_cost(i)));
4929
4930 --
4931 -- Apply delta to books sumamry global variables
4932 --
4933 fa_amort_pvt.t_salvage_type(i) := nvl(p_asset_fin_rec_adj.salvage_type,
4934 fa_amort_pvt.t_salvage_type(i));
4935 fa_amort_pvt.t_deprn_limit_type(i) := nvl(p_asset_fin_rec_adj.deprn_limit_type,
4936 fa_amort_pvt.t_deprn_limit_type(i));
4937
4938 if (px_asset_fin_rec_new.depreciate_flag <>
4939 p_asset_fin_rec_old.depreciate_flag) then
4940 fa_amort_pvt.t_depreciate_flag(i) := px_asset_fin_rec_new.depreciate_flag;
4941 end if;
4942
4943 if (nvl(p_asset_fin_rec_old.deprn_method_code,
4944 px_asset_fin_rec_new.deprn_method_code) <> px_asset_fin_rec_new.deprn_method_code) then
4945 fa_amort_pvt.t_deprn_method_code(i) := px_asset_fin_rec_new.deprn_method_code;
4946 fa_amort_pvt.t_life_in_months(i) := px_asset_fin_rec_new.life_in_months;
4947 fa_amort_pvt.t_adjusted_rate(i) := px_asset_fin_rec_new.adjusted_rate;
4948 --tk_util.debug('1 adjusted_rate: '||to_char(fa_amort_pvt.t_adjusted_rate(i)));
4949 else
4950 fa_amort_pvt.t_life_in_months(i) := nvl(p_asset_fin_rec_adj.life_in_months,
4951 fa_amort_pvt.t_life_in_months(i));
4952 fa_amort_pvt.t_adjusted_rate(i) := nvl(p_asset_fin_rec_adj.adjusted_rate,
4953 fa_amort_pvt.t_adjusted_rate(i));
4954 --tk_util.debug('adj adjusted_rate: '||to_char(p_asset_fin_rec_adj.adjusted_rate));
4955 --tk_util.debug('2 adjusted_rate: '||to_char(fa_amort_pvt.t_adjusted_rate(i)));
4956 end if;
4957
4958 fa_amort_pvt.t_bonus_rule(i) := nvl(p_asset_fin_rec_adj.bonus_rule,
4959 fa_amort_pvt.t_bonus_rule(i));
4960 -- fa_amort_pvt.t_adjusted_capacity(i) :=
4961 fa_amort_pvt.t_production_capacity(i) := nvl(fa_amort_pvt.t_production_capacity(i), 0) +
4962 nvl(p_asset_fin_rec_adj.production_capacity, 0);
4963 fa_amort_pvt.t_unit_of_measure(i) := nvl(p_asset_fin_rec_adj.unit_of_measure,
4964 fa_amort_pvt.t_unit_of_measure(i));
4965 --
4966 -- I don't know what to store in these columns
4967 --
4968 -- fa_amort_pvt.t_remaining_life1(i) :=
4969 -- fa_amort_pvt.t_remaining_life2(i) :=
4970
4971 fa_amort_pvt.t_ceiling_name(i) := nvl(p_asset_fin_rec_adj.ceiling_name,
4972 fa_amort_pvt.t_ceiling_name(i));
4973
4974 if (p_asset_fin_rec_old.group_asset_id = px_asset_fin_rec_new.group_asset_id) then
4975 null;
4976 else
4977 fa_amort_pvt.t_group_asset_id(i) := px_asset_fin_rec_new.group_asset_id;
4978 end if;
4979
4980 if (nvl(p_asset_fin_rec_old.super_group_id, 0) = nvl(px_asset_fin_rec_new.super_group_id, 0)) then
4981 null;
4982 else
4983 fa_amort_pvt.t_super_group_id(i) := px_asset_fin_rec_new.super_group_id;
4984 end if;
4985
4986 fa_amort_pvt.t_over_depreciate_option(i) := nvl(p_asset_fin_rec_adj.over_depreciate_option,
4987 fa_amort_pvt.t_over_depreciate_option(i));
4988
4989 if (nvl(p_asset_fin_rec_old.salvage_type,
4990 px_asset_fin_rec_new.salvage_type) = px_asset_fin_rec_new.salvage_type) then
4991 fa_amort_pvt.t_percent_salvage_value(i) := fa_amort_pvt.t_percent_salvage_value(i) +
4992 nvl(p_asset_fin_rec_adj.percent_salvage_value, 0);
4993 else
4994 fa_amort_pvt.t_percent_salvage_value(i) := nvl(px_asset_fin_rec_new.percent_salvage_value, 0);
4995 end if;
4996
4997 if (nvl(p_asset_fin_rec_old.deprn_limit_type,
4998 px_asset_fin_rec_new.deprn_limit_type) = px_asset_fin_rec_new.deprn_limit_type) then
4999 fa_amort_pvt.t_allowed_deprn_limit(i) := fa_amort_pvt.t_allowed_deprn_limit(i) +
5000 nvl(p_asset_fin_rec_adj.allowed_deprn_limit, 0);
5001 else
5002 fa_amort_pvt.t_allowed_deprn_limit(i) := nvl(px_asset_fin_rec_new.allowed_deprn_limit, 0);
5003 end if;
5004
5005 if (fa_amort_pvt.t_salvage_type(i) = 'PCT') then
5009 else -- case of SUM
5006 l_temp_num := fa_amort_pvt.t_cost(i) * fa_amort_pvt.t_percent_salvage_value(i);
5007 fa_round_pkg.fa_ceil(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
5008 fa_amort_pvt.t_salvage_value(i) := l_temp_num;
5010 fa_amort_pvt.t_salvage_value(i) := fa_amort_pvt.t_member_salvage_value(i);
5011 end if;
5012
5013 if (fa_amort_pvt.t_deprn_limit_type(i) = 'PCT') then
5014 l_temp_num := fa_amort_pvt.t_cost(i) * (1 - fa_amort_pvt.t_allowed_deprn_limit(i));
5015 fa_round_pkg.fa_floor(l_temp_num, p_asset_hdr_rec.book_type_code, p_log_level_rec => p_log_level_rec);
5016 fa_amort_pvt.t_allowed_deprn_limit_amount(i) := l_temp_num;
5017 elsif(fa_amort_pvt.t_deprn_limit_type(i) = 'SUM') then
5018 fa_amort_pvt.t_allowed_deprn_limit_amount(i) := fa_amort_pvt.t_member_deprn_limit_amount(i);
5019 else -- case of 'NONE'
5020 fa_amort_pvt.t_allowed_deprn_limit_amount(i) := null;
5021 end if;
5022
5023 if (p_log_level_rec.statement_level) then
5024 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_salvage_type('||to_char(i)||')',
5025 fa_amort_pvt.t_salvage_type(i));
5026 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_percent_salvage_value('||to_char(i)||')',
5027 fa_amort_pvt.t_percent_salvage_value(i));
5028 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_salvage_value('||to_char(i)||')',
5029 fa_amort_pvt.t_salvage_value(i));
5030 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_member_salvage_value('||to_char(i)||')',
5031 fa_amort_pvt.t_member_salvage_value(i));
5032 fa_debug_pkg.add(l_calling_fn,
5033 'fa_amort_pvt.t_deprn_limit_type('||to_char(i)||')',
5034 fa_amort_pvt.t_deprn_limit_type(i));
5035 fa_debug_pkg.add(l_calling_fn,
5039 'fa_amort_pvt.t_allowed_deprn_limit_amount('||to_char(i)||')',
5036 'fa_amort_pvt.t_allowed_deprn_limit('||to_char(i)||')',
5037 fa_amort_pvt.t_allowed_deprn_limit(i));
5038 fa_debug_pkg.add(l_calling_fn,
5040 fa_amort_pvt.t_allowed_deprn_limit_amount(i));
5041 fa_debug_pkg.add(l_calling_fn,
5042 'fa_amort_pvt.t_member_deprn_limit_amount('||to_char(i)||')',
5043 fa_amort_pvt.t_member_deprn_limit_amount(i));
5044 end if;
5045
5046 l_prev_adj_cost_flag := FALSE; --bug#15897249
5047 --
5048 -- At this point, all attributes to determine whether resetting adjusted cost is necessary
5049 -- or not. Here is the list of the attributes
5050 -- change_in_cost, change_in_cip_cost, member_salvage_value, member_deprn_limit_amount,
5051 -- percent_salvage_value, allowed_deprn_limit, salvage_value, allowed_deprn_limit_amount
5055 if (i = 1) or
5052 -- deprn_method_code, adjusted_rate, bonus_rule
5053 -- If this is destination asset for reclass transaction, this place is too late to
5054 -- set reset_adjusted_cost_flag
5056 (fa_amort_pvt.t_change_in_cost(i) <> 0) or
5057 (fa_amort_pvt.t_change_in_cip_cost(i) <> 0) then
5058 fa_amort_pvt.t_reset_adjusted_cost_flag(i) := 'Y';
5059 --tk_util.debug('tktk1');
5060 elsif (nvl(fa_amort_pvt.t_percent_salvage_value(i), 0) <> nvl(fa_amort_pvt.t_percent_salvage_value(i-1),0)) or
5061 (nvl(fa_amort_pvt.t_allowed_deprn_limit(i), 0) <> nvl(fa_amort_pvt.t_allowed_deprn_limit(i-1), 0)) or
5062 (fa_amort_pvt.t_salvage_value(i) <> fa_amort_pvt.t_salvage_value(i-1)) or
5063 (nvl(fa_amort_pvt.t_allowed_deprn_limit_amount(i), 0) <>
5064 nvl(fa_amort_pvt.t_allowed_deprn_limit_amount(i-1), 0)) or
5065 (fa_amort_pvt.t_deprn_method_code(i) <> fa_amort_pvt.t_deprn_method_code(i-1)) or
5066 (nvl(fa_amort_pvt.t_adjusted_rate(i), 0) <> nvl(fa_amort_pvt.t_adjusted_rate(i-1), 0)) or
5067 (nvl(fa_amort_pvt.t_bonus_rule(i), 'NULL') <> nvl(fa_amort_pvt.t_bonus_rule(i-1), 'NULL') or
5068 (fa_amort_pvt.t_expense_adjustment_amount(i) <> 0) or
5069 (fa_amort_pvt.t_reserve_adjustment_amount(i) <> 0)) then
5070
5071 fa_amort_pvt.t_reset_adjusted_cost_flag(i) := 'Y';
5072
5073 if (p_log_level_rec.statement_level) then
5074 fa_debug_pkg.add('tk','1',fa_amort_pvt.t_member_salvage_value(i-1));
5075 fa_debug_pkg.add('tk','2', fa_amort_pvt.t_member_deprn_limit_amount(i-1));
5076 fa_debug_pkg.add('tk','3', fa_amort_pvt.t_percent_salvage_value(i-1));
5077 fa_debug_pkg.add('tk','4', fa_amort_pvt.t_allowed_deprn_limit(i-1));
5078 fa_debug_pkg.add('tk','5', fa_amort_pvt.t_salvage_value(i-1));
5079 fa_debug_pkg.add('tk','6', fa_amort_pvt.t_allowed_deprn_limit_amount(i-1));
5080 fa_debug_pkg.add('tk','7', fa_amort_pvt.t_deprn_method_code(i-1));
5081 fa_debug_pkg.add('tk','8', fa_amort_pvt.t_adjusted_rate(i-1));
5082 fa_debug_pkg.add('tk','9', fa_amort_pvt.t_bonus_rule(i-1));
5083 fa_debug_pkg.add('tk','0', fa_amort_pvt.t_expense_adjustment_amount(i-1));
5084 fa_debug_pkg.add('tk','1', fa_amort_pvt.t_reserve_adjustment_amount(i-1));
5085 end if;
5086
5087 elsif ((p_reclass_src_dest is not null) and
5088 --bug3872075: Need group's change_in_cost etc instead of delta
5089 --(td_cost(d) is not null)) then
5090 ((nvl(fa_amort_pvt.t_change_in_cost(i), 0) <> 0) or
5091 (nvl(fa_amort_pvt.t_change_in_cip_cost(i), 0) <> 0))) then
5092
5093 fa_amort_pvt.t_reset_adjusted_cost_flag(i) := 'Y';
5094
5095 if (p_log_level_rec.statement_level) then
5096 fa_debug_pkg.add(l_calling_fn, 'Reclass trx and still change in', 'COST', p_log_level_rec => p_log_level_rec);
5097 end if;
5098
5099 else
5100 if (p_log_level_rec.statement_level) then
5101 fa_debug_pkg.add(l_calling_fn, 'Setting reset adj cost flag to ', 'N', p_log_level_rec => p_log_level_rec);
5102 fa_debug_pkg.add(l_calling_fn, 'Resetting adjusted cost', 'Not Required', p_log_level_rec => p_log_level_rec);
5103 end if;
5104
5105 fa_amort_pvt.t_reset_adjusted_cost_flag(i) := 'N';
5106
5107 if (i = 2) then
5108 if ( fa_amort_pvt.t_period_num(i) = 1) and
5109
5110 (nvl(fa_cache_pkg.fazcdrd_record.use_eofy_reserve_flag, 'N') = 'Y') or
5111 ( (nvl(fa_amort_pvt.t_change_in_cost(i), 0) <> 0) or
5112 (nvl(fa_amort_pvt.t_change_in_cip_cost(i), 0) <> 0)) then
5113
5114 fa_amort_pvt.t_reset_adjusted_cost_flag(i) := 'Y';
5115 if (p_log_level_rec.statement_level) then
5116 fa_debug_pkg.add(l_calling_fn, 'There is still something changed', 'Resetting adj cost required', p_log_level_rec => p_log_level_rec);
5117 fa_debug_pkg.add(l_calling_fn, 'Resetting adjusted cost', 'Still Required', p_log_level_rec => p_log_level_rec);
5118 end if;
5119 elsif (nvl(fa_cache_pkg.fazcdrd_record.period_update_flag,'N') = 'Y') then -- Added for bug 8425794 / 8244128
5120 fa_amort_pvt.t_reset_adjusted_cost_flag(i) := 'Y';
5121 if (p_log_level_rec.statement_level) then
5122 fa_debug_pkg.add(l_calling_fn, 'There is still something changed', 'Resetting adj cost required', p_log_level_rec => p_log_level_rec);
5123 fa_debug_pkg.add(l_calling_fn, 'Resetting adjusted cost', 'Still Required', p_log_level_rec => p_log_level_rec);
5124 end if;
5125 else
5126 fa_amort_pvt.t_adjusted_cost(i) := fa_amort_pvt.t_adjusted_cost(i-1);
5127 -- Bug5732277: Adding following to reflect adjusted_cost
5128 l_asset_fin_rec_new.adjusted_cost := fa_amort_pvt.t_adjusted_cost(i);
5129 l_prev_adj_cost_flag := TRUE; --bug#15897249
5130
5131 if (p_log_level_rec.statement_level) then
5132 fa_debug_pkg.add(l_calling_fn, 'Inheriting adj cost from', 'Previous Period', p_log_level_rec => p_log_level_rec);
5133 end if;
5134
5135 end if;
5136
5137 elsif (i = 1) then
5138 fa_amort_pvt.t_adjusted_cost(i) := 0;
5139 -- Bug5732277: Adding following to reflect adjusted_cost
5140 l_asset_fin_rec_new.adjusted_cost := fa_amort_pvt.t_adjusted_cost(i);
5141
5142 if (p_log_level_rec.statement_level) then
5143 fa_debug_pkg.add(l_calling_fn, 'Resetting adjusted cost with ', '0', p_log_level_rec => p_log_level_rec);
5144 end if;
5145 end if;
5146
5147 if (p_log_level_rec.statement_level) then
5151
5148 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_adjusted_cost('||to_char(i)||')', fa_amort_pvt.t_adjusted_cost(i));
5149 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_cost', l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
5150 end if;
5152 end if; -- (i = 1) or
5153
5154 fa_amort_pvt.t_recoverable_cost(i) := fa_amort_pvt.t_cost(i) - fa_amort_pvt.t_salvage_value(i);
5155 fa_amort_pvt.t_adjusted_recoverable_cost(i) := fa_amort_pvt.t_cost(i) -
5156 nvl(fa_amort_pvt.t_allowed_deprn_limit_amount(i),
5157 fa_amort_pvt.t_salvage_value(i));
5158
5159 fa_amort_pvt.t_date_placed_in_service(i) := nvl(p_asset_fin_rec_adj.date_placed_in_service,
5160 fa_amort_pvt.t_date_placed_in_service(i));
5161
5162
5163 fa_amort_pvt.t_ytd_proceeds_of_sale(i) := fa_amort_pvt.t_ytd_proceeds_of_sale(i) +
5164 nvl(p_asset_fin_rec_adj.ytd_proceeds, 0) +
5165 l_proceeds_of_sale;
5166
5167 fa_amort_pvt.t_ltd_proceeds_of_sale(i) := fa_amort_pvt.t_ltd_proceeds_of_sale(i) +
5168 nvl(p_asset_fin_rec_adj.ltd_proceeds, 0) +
5169 l_proceeds_of_sale;
5170
5171 --
5172 -- Not Yet Implemented
5173 --
5174 fa_amort_pvt.t_ytd_cost_of_removal(i) := fa_amort_pvt.t_ytd_cost_of_removal(i) +
5175 nvl(p_asset_fin_rec_adj.ltd_cost_of_removal , 0) +
5176 l_cost_of_removal;
5177
5178 fa_amort_pvt.t_ltd_cost_of_removal(i) := fa_amort_pvt.t_ltd_cost_of_removal(i) +
5179 nvl(p_asset_fin_rec_adj.ltd_cost_of_removal , 0) +
5180 l_cost_of_removal;
5181
5182
5183 fa_amort_pvt.t_unrevalued_cost(i) := fa_amort_pvt.t_unrevalued_cost(i) +
5184 nvl(p_asset_fin_rec_adj.unrevalued_cost, 0);
5185
5186 fa_amort_pvt.t_reval_amortization_basis(i) := fa_amort_pvt.t_reval_amortization_basis(i) +
5187 nvl(p_asset_fin_rec_adj.reval_amortization_basis, 0);
5188
5189
5190 if (p_log_level_rec.statement_level) then
5191 fa_debug_pkg.add(l_calling_fn, 'Finish Populating Global Variables', ' ', p_log_level_rec => p_log_level_rec);
5192 end if;
5193
5194 -- fa_amort_pvt.t_reval_ceiling(i) :=
5195
5196 -- fa_amort_pvt.t_eofy_adj_cost(i) -- Unchanged
5197 -- fa_amort_pvt.t_eofy_formula_factor(i) Unchanged
5198 -- fa_amort_pvt.t_eofy_reserve(i) Unchanged
5199 if (i = 1) then
5200 fa_amort_pvt.t_eop_adj_cost(i) := 0;
5201 fa_amort_pvt.t_eop_formula_factor(i) := 1;
5202
5203 fa_amort_pvt.t_eofy_adj_cost(i) := 0;
5204 fa_amort_pvt.t_eofy_formula_factor(i) := 1;
5205 fa_amort_pvt.t_eofy_reserve (i) := nvl(fa_amort_pvt.t_change_in_eofy_reserve(i), 0);
5206
5207 else
5208 fa_amort_pvt.t_eop_adj_cost(i) := fa_amort_pvt.t_adjusted_cost(i - 1);
5209 fa_amort_pvt.t_eop_formula_factor(i) := fa_amort_pvt.t_formula_factor(i - 1);
5210
5211 if (fa_amort_pvt.t_period_num(i) = 1) then
5212 fa_amort_pvt.t_eofy_adj_cost(i) := fa_amort_pvt.t_adjusted_cost(i - 1);
5213 fa_amort_pvt.t_eofy_formula_factor(i) := fa_amort_pvt.t_formula_factor(i - 1);
5214 fa_amort_pvt.t_eofy_reserve (i) := fa_amort_pvt.t_deprn_reserve(i - 1) +
5215 nvl(fa_amort_pvt.t_change_in_eofy_reserve(i), 0);
5216 else
5217 fa_amort_pvt.t_eofy_adj_cost(i) := fa_amort_pvt.t_eofy_adj_cost(i - 1);
5218 fa_amort_pvt.t_eofy_formula_factor(i) := fa_amort_pvt.t_eofy_formula_factor(i - 1);
5219 fa_amort_pvt.t_eofy_reserve (i) := fa_amort_pvt.t_eofy_reserve(i - 1) +
5220 nvl(fa_amort_pvt.t_change_in_eofy_reserve(i), 0);
5221 end if;
5222
5223 end if;
5224
5225
5226 --tk_util.debug('l_bs_ind: '||to_char(l_bs_ind));
5227 --tk_util.debug('l_asset_deprn_rec.deprn_reserve: '||to_char(l_asset_deprn_rec.deprn_reserve));
5228 --
5229 -- Proceed if the period being processed is not current period and depreciation
5230 -- has not been recalculated yet, or
5231 -- This is current period but has some transaction entered and requires to recalculate
5232 -- adjusted_cost.
5233 -- Bug7487450: following need to be true if deprn basis is period update for cur period
5234 --
5235 --Bug11886090: Adding this instead of adding below condition to let process goes in subsequent
5236 -- if statement below
5237 -- This basically takes care backing out catch-up taken at the time of retirement
5238 -- during reinstatement if retirement happened in current open period
5239 if fa_amort_pvt.t_period_counter(i) = p_period_rec.period_counter and
5240 fa_amort_pvt.t_reset_adjusted_cost_flag(i) = 'N' and
5241 p_trans_rec.transaction_key = 'MS' and
5242 nvl(p_asset_deprn_rec_adj.deprn_amount, 0) <> 0 then
5243 fa_amort_pvt.t_deprn_amount(i) := fa_amort_pvt.t_expense_adjustment_amount(i);
5244 if (p_log_level_rec.statement_level) then
5245 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_deprn_amount('||to_char(i)||')', fa_amort_pvt.t_deprn_amount(i), p_log_level_rec);
5246 end if;
5247 end if;
5248
5249 if ((l_bs_ind <= i) and
5250 (fa_amort_pvt.t_period_counter(i) < p_period_rec.period_counter)) or
5251 ((fa_amort_pvt.t_period_counter(i) = p_period_rec.period_counter) and
5252 ( (fa_amort_pvt.t_reset_adjusted_cost_flag(i) = 'Y') or
5253 nvl(fa_cache_pkg.fazcdrd_record.period_update_flag,'N') = 'Y' ) ) then
5254
5255 --tk_util.debug('fa_amort_pvt.t_expense_adjustment_amount('||to_char(i)||'): '||to_char(fa_amort_pvt.t_expense_adjustment_amount(i)));
5256 fa_amort_pvt.t_deprn_amount(i) := fa_amort_pvt.t_expense_adjustment_amount(i);
5257 --tk_util.debug('l_trx_period_rec.period_counter: '||to_char(l_trx_period_rec.period_counter));
5258 --tk_util.debug('fa_amort_pvt.t_period_counter(i): '||to_char(fa_amort_pvt.t_period_counter(i)));
5259
5260 if (p_reclass_src_dest = 'SOURCE') and
5261 (l_trx_period_rec.period_counter = fa_amort_pvt.t_period_counter(i)) then
5262 if (i = 1) then
5263 null;
5264 else
5265
5266 -- HHIRAGA Added code for current period reclass under tracking
5267 if (p_log_level_rec.statement_level) then
5271 end if;
5268 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: tracking_method', px_asset_fin_rec_new.tracking_method, p_log_level_rec => p_log_level_rec);
5269 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: l_trx_period_rec.period_counter', l_trx_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
5270 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: l_current_period_counter', l_current_period_counter, p_log_level_rec => p_log_level_rec);
5272
5273 if nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'CALCULATE' and
5274 l_trx_period_rec.period_counter = l_current_period_counter then
5275
5276 --115.211.211 branch to mainline porting starts
5277 --Bug6987743: member reserve should be taken out is passed form
5278 -- outside (source is fa_trx_references
5279 -- Reserve adjustment amount has already been maintained before this line.
5280 -- x_deprn_reserve := (-1)*l_mem_deprn_reserve;
5281
5282 x_deprn_reserve := (fa_amort_pvt.t_deprn_reserve(i - 1) - l_old_reserve);
5283 --115.211.211 branch to mainline porting ends
5284 fa_amort_pvt.t_reserve_adjustment_amount(i) :=
5285 fa_amort_pvt.t_reserve_adjustment_amount(i) + x_deprn_reserve;
5286
5287 fa_amort_pvt.t_eofy_reserve(i) := fa_amort_pvt.t_eofy_reserve(i) - l_mem_eofy_reserve;
5288 fa_amort_pvt.t_change_in_eofy_reserve(i) := (-1)* l_mem_eofy_reserve;
5289
5290 if (p_log_level_rec.statement_level) then
5291 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: x_deprn_reserve', x_deprn_reserve, p_log_level_rec => p_log_level_rec);
5292 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: reserve_adjustment_amount',
5293 fa_amort_pvt.t_reserve_adjustment_amount(i));
5294 end if;
5295
5296 elsif nvl(px_asset_fin_rec_new.tracking_method,'NULL') = 'ALLOCATE' and
5297 (l_mem_loop_first) then
5298
5299 --115.211.211 branch to mainline porting starts
5300 --Bug6987743: member reserve should be taken out is passed form
5301 -- outside (source is fa_trx_references
5302 -- Reserve adjustment amount has already been maintained before this line.
5303
5304 if (fa_cache_pkg.fazcdbr_record.rule_name = 'ENERGY PERIOD END BALANCE') then
5305 x_deprn_reserve := (-1)*l_mem_deprn_reserve;
5306 else
5307 x_deprn_reserve := (fa_amort_pvt.t_deprn_reserve(i - 1) - l_old_reserve);
5308 end if;
5309 --115.211.211 branch to mainline porting ends
5310 fa_amort_pvt.t_reserve_adjustment_amount(i) :=
5311 fa_amort_pvt.t_reserve_adjustment_amount(i) + x_deprn_reserve;
5312
5313 fa_amort_pvt.t_eofy_reserve(i) := fa_amort_pvt.t_eofy_reserve(i) - l_mem_eofy_reserve;
5314 fa_amort_pvt.t_change_in_eofy_reserve(i) := (-1)* l_mem_eofy_reserve;
5315 l_mem_loop_first := FALSE;
5316
5317 if (p_log_level_rec.statement_level) then
5318 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: x_deprn_reserve', x_deprn_reserve, p_log_level_rec => p_log_level_rec);
5319 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: reserve_adjustment_amount',
5320 fa_amort_pvt.t_reserve_adjustment_amount(i));
5321 fa_debug_pkg.add(l_calling_fn, 'HHIRAGA Debug: eofy_reserve',
5322 fa_amort_pvt.t_eofy_reserve(i));
5323 end if;
5324
5325 else
5326 /* commented due to bug# 5601379
5327 fa_amort_pvt.t_reserve_adjustment_amount(i) :=
5328 fa_amort_pvt.t_reserve_adjustment_amount(i) +
5329 (fa_amort_pvt.t_deprn_reserve(i - 1) - l_old_reserve); */
5330 --tk_util.debug('l_old_reserve: '||to_char(l_old_reserve));
5331 --tk_util.debug('t_deprn_reserve: '||to_char(fa_amort_pvt.t_deprn_reserve(i - 1)));
5332 x_deprn_reserve := (fa_amort_pvt.t_deprn_reserve(i - 1) - l_old_reserve);
5333
5334 end if; -- End of HHIRAGA if-statement
5335
5336 -- Bug7005716: Need to set previous periods amount back even in the period in loop is current period
5337 -- Bug3537474: Don't need to reset previous deprn info because this reclass is
5338 -- happens in period of member addition
5339 --
5340 -- Bug4328772:
5341 -- Commenting out following condition and replacing with a condition with the line below
5345 fa_amort_pvt.t_deprn_reserve(i - 1) := l_gr_asset_deprn_rec.deprn_reserve;
5342 -- if (p_reclassed_asset_dpis < fa_amort_pvt.t_calendar_period_open_date(l_count)) then
5343 if (l_trx_period_rec.period_counter <= fa_amort_pvt.t_period_counter(l_count)) then --115.211.211 branch to mainline porting
5344 fa_amort_pvt.t_ytd_deprn(i - 1) := l_gr_asset_deprn_rec.ytd_deprn;
5346 fa_amort_pvt.t_bonus_ytd_deprn(i - 1) := l_gr_asset_deprn_rec.bonus_ytd_deprn;
5347 fa_amort_pvt.t_bonus_deprn_reserve(i - 1) := l_gr_asset_deprn_rec.bonus_deprn_reserve;
5348 fa_amort_pvt.t_ytd_impairment(i - 1) := l_gr_asset_deprn_rec.ytd_impairment;
5349 fa_amort_pvt.t_impairment_reserve(i - 1) := l_gr_asset_deprn_rec.impairment_reserve;
5350 fa_amort_pvt.t_ltd_production(i - 1) := l_gr_asset_deprn_rec.ltd_production;
5351 fa_amort_pvt.t_ytd_production(i - 1) := l_gr_asset_deprn_rec.ytd_production;
5352 fa_amort_pvt.t_ytd_reval_deprn_expense(i - 1) := l_gr_asset_deprn_rec.reval_ytd_deprn;
5353 fa_amort_pvt.t_reval_reserve(i - 1) := l_gr_asset_deprn_rec.reval_deprn_reserve;
5354 end if;
5355 end if; -- (i = 1)
5356 end if; -- (p_reclass_src_dest = 'SOURCE') and
5357
5358 if (i = 1) then
5359 l_eop_rec_cost := 0;
5360 l_eop_sal_val := 0;
5361 fa_amort_pvt.t_ytd_deprn(i) := fa_amort_pvt.t_deprn_amount(i);
5362 fa_amort_pvt.t_deprn_reserve(i) := fa_amort_pvt.t_deprn_amount(i) +
5363 fa_amort_pvt.t_reserve_adjustment_amount(i);
5364 fa_amort_pvt.t_bonus_ytd_deprn(i) := 0;
5365 fa_amort_pvt.t_bonus_deprn_reserve(i) := 0;
5366 fa_amort_pvt.t_ytd_impairment(i) := 0;
5367 fa_amort_pvt.t_impairment_reserve(i) := 0;
5368 fa_amort_pvt.t_ltd_production(i) := 0;
5369 fa_amort_pvt.t_ytd_production(i) := 0;
5370 fa_amort_pvt.t_ytd_reval_deprn_expense(i) := 0;
5371 fa_amort_pvt.t_reval_reserve(i) := 0;
5372 else
5373 l_eop_rec_cost := fa_amort_pvt.t_recoverable_cost(i - 1);
5374 l_eop_sal_val := fa_amort_pvt.t_salvage_value(i - 1);
5375 if (fa_amort_pvt.t_period_num(i) = 1) then
5376 fa_amort_pvt.t_ytd_deprn(i) := fa_amort_pvt.t_deprn_amount(i);
5377 fa_amort_pvt.t_bonus_ytd_deprn(i) := 0;
5378 fa_amort_pvt.t_ytd_impairment(i) := 0;
5379 fa_amort_pvt.t_ytd_production(i) := 0;
5380 fa_amort_pvt.t_ytd_reval_deprn_expense(i) := 0;
5381 else
5382 fa_amort_pvt.t_ytd_deprn(i) := fa_amort_pvt.t_deprn_amount(i) +
5383 fa_amort_pvt.t_ytd_deprn(i - 1);
5384 fa_amort_pvt.t_bonus_ytd_deprn(i) := fa_amort_pvt.t_bonus_ytd_deprn(i - 1);
5388
5385 fa_amort_pvt.t_ytd_impairment(i) := fa_amort_pvt.t_ytd_impairment(i - 1);
5386 fa_amort_pvt.t_ytd_production(i) := fa_amort_pvt.t_ltd_production(i - 1);
5387 fa_amort_pvt.t_ytd_reval_deprn_expense(i) := fa_amort_pvt.t_ytd_reval_deprn_expense(i - 1);
5389 end if;
5390 --tk_util.debug('fa_amort_pvt.t_deprn_reserve(i - 1): '||to_char(fa_amort_pvt.t_deprn_reserve(i - 1)));
5391 fa_amort_pvt.t_deprn_reserve(i) := fa_amort_pvt.t_deprn_amount(i) +
5392 fa_amort_pvt.t_reserve_adjustment_amount(i) +
5393 fa_amort_pvt.t_deprn_reserve(i - 1);
5394 fa_amort_pvt.t_bonus_deprn_reserve(i) := fa_amort_pvt.t_bonus_deprn_reserve(i - 1);
5395 fa_amort_pvt.t_impairment_reserve(i) := fa_amort_pvt.t_impairment_reserve(i - 1);
5396 fa_amort_pvt.t_ltd_production(i) := fa_amort_pvt.t_ltd_production(i - 1);
5397 fa_amort_pvt.t_reval_reserve(i) := fa_amort_pvt.t_reval_reserve(i - 1);
5398
5399 end if;
5400
5401 /* TEST BY HH */
5402 if (p_log_level_rec.statement_level) then
5403 fa_debug_pkg.add(l_calling_fn, 'HH CHECK i =',
5404 i || 'at Line Number from 4555', p_log_level_rec => p_log_level_rec);
5405 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_deprn_amount(i)',
5406 fa_amort_pvt.t_deprn_amount(i));
5407 if (i > 1) then
5408 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_deprn_reserve(i - 1)',
5409 fa_amort_pvt.t_deprn_reserve(i - 1));
5410 end if;
5411 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_reserve_adjustment_amount(i)',
5412 fa_amort_pvt.t_reserve_adjustment_amount(i));
5413 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_deprn_reserve(i)',
5414 fa_amort_pvt.t_deprn_reserve(i));
5415
5416 end if;
5417 /* End of TEST BY HH */
5418
5419
5420 --
5421 -- Populate l_asset_deprn_rec with previous period information
5422 --
5423 -- l_asset_deprn_rec := p_asset_deprn_rec;
5424
5425 if (i = 1) then
5426 l_asset_deprn_rec.deprn_amount := 0;
5427 l_asset_deprn_rec.ytd_deprn := 0;
5428 l_asset_deprn_rec.deprn_reserve := fa_amort_pvt.t_reserve_adjustment_amount(i) + fa_amort_pvt.t_expense_adjustment_amount(i); --Bug 8765715
5429 l_asset_deprn_rec.bonus_deprn_amount := 0;
5430 l_asset_deprn_rec.bonus_ytd_deprn := 0;
5431 l_asset_deprn_rec.bonus_deprn_reserve := 0;
5432 l_asset_deprn_rec.impairment_amount := 0;
5433 l_asset_deprn_rec.ytd_impairment := 0;
5434 l_asset_deprn_rec.impairment_reserve := 0;
5435 l_asset_deprn_rec.ltd_production := 0;
5436 l_asset_deprn_rec.ytd_production := 0;
5437 l_asset_deprn_rec.production := 0;
5438 l_asset_deprn_rec.reval_amortization := 0;
5439 l_asset_deprn_rec.reval_deprn_expense := 0;
5440 l_asset_deprn_rec.reval_deprn_reserve := 0;
5441 l_asset_deprn_rec.reval_ytd_deprn := 0;
5442 else
5443 l_asset_deprn_rec.deprn_amount := fa_amort_pvt.t_deprn_amount(i);
5444 l_asset_deprn_rec.ytd_deprn := fa_amort_pvt.t_ytd_deprn(i);
5445 l_asset_deprn_rec.deprn_reserve := fa_amort_pvt.t_deprn_reserve(i);
5446 l_asset_deprn_rec.bonus_deprn_amount := fa_amort_pvt.t_bonus_deprn_amount(i);
5447 l_asset_deprn_rec.bonus_ytd_deprn := fa_amort_pvt.t_bonus_ytd_deprn(i);
5448 l_asset_deprn_rec.bonus_deprn_reserve := fa_amort_pvt.t_bonus_deprn_reserve(i);
5449 l_asset_deprn_rec.impairment_amount := fa_amort_pvt.t_impairment_amount(i);
5450 l_asset_deprn_rec.ytd_impairment := fa_amort_pvt.t_ytd_impairment(i);
5451 l_asset_deprn_rec.impairment_reserve := fa_amort_pvt.t_impairment_reserve(i);
5452 l_asset_deprn_rec.ltd_production := fa_amort_pvt.t_ltd_production(i);
5453 l_asset_deprn_rec.ytd_production := fa_amort_pvt.t_ytd_production(i);
5454 l_asset_deprn_rec.production := fa_amort_pvt.t_production(i);
5455 l_asset_deprn_rec.reval_amortization := fa_amort_pvt.t_reval_amortization(i);
5456 l_asset_deprn_rec.reval_deprn_expense := fa_amort_pvt.t_reval_deprn_expense(i);
5457 l_asset_deprn_rec.reval_deprn_reserve := fa_amort_pvt.t_reval_reserve(i);
5458 l_asset_deprn_rec.reval_ytd_deprn := fa_amort_pvt.t_ytd_reval_deprn_expense(i);
5459 end if;
5460
5461 --
5462 -- Populate l_asset_fin_rec_new
5463 --
5464 l_asset_fin_rec_new.cost := fa_amort_pvt.t_cost(i);
5465 l_asset_fin_rec_new.salvage_value := fa_amort_pvt.t_salvage_value(i);
5466 l_asset_fin_rec_new.recoverable_cost := fa_amort_pvt.t_recoverable_cost(i);
5467 l_asset_fin_rec_new.deprn_method_code := fa_amort_pvt.t_deprn_method_code(i);
5468 l_asset_fin_rec_new.life_in_months := fa_amort_pvt.t_life_in_months(i);
5469 l_asset_fin_rec_new.group_asset_id := fa_amort_pvt.t_group_asset_id(i);
5470 l_asset_fin_rec_new.depreciate_flag := fa_amort_pvt.t_depreciate_flag(i);
5471 l_asset_fin_rec_new.eofy_reserve := fa_amort_pvt.t_eofy_reserve(i);
5472 l_asset_fin_rec_new.rate_adjustment_factor := fa_amort_pvt.t_rate_adjustment_factor(i);
5473 l_asset_fin_rec_new.formula_factor := fa_amort_pvt.t_formula_factor(i);
5474 l_asset_fin_rec_new.super_group_id := fa_amort_pvt.t_super_group_id(i);
5478 l_dpr_in.calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
5475 l_asset_fin_rec_new.adjusted_capacity := fa_amort_pvt.t_adjusted_capacity(i); --Bug 8477192
5476
5477 l_dpr_in.asset_num := p_asset_desc_rec.asset_number;
5479 l_dpr_in.book := p_asset_hdr_rec.book_type_code;
5480 l_dpr_in.asset_id := p_asset_hdr_rec.asset_id;
5481
5485 l_dpr_in.adj_rate := fa_amort_pvt.t_adjusted_rate(i);
5482 l_dpr_in.adj_cost := fa_amort_pvt.t_recoverable_cost(i);
5483 l_dpr_in.rec_cost := fa_amort_pvt.t_recoverable_cost(i);
5484 l_dpr_in.reval_amo_basis := fa_amort_pvt.t_reval_amortization_basis(i);
5486 l_dpr_in.rate_adj_factor := 1;
5487 l_dpr_in.capacity := fa_amort_pvt.t_production_capacity(i);
5488 l_dpr_in.adj_capacity := fa_amort_pvt.t_adjusted_capacity(i);
5489 l_dpr_in.ltd_prod := 0;
5490 l_dpr_in.ytd_deprn := 0; -- This needs to be 0 for this faxcde call
5491 l_dpr_in.deprn_rsv := 0;
5492 l_dpr_in.reval_rsv := l_asset_deprn_rec.reval_deprn_reserve;
5493 l_dpr_in.bonus_deprn_exp := l_asset_deprn_rec.bonus_deprn_amount;
5494 l_dpr_in.bonus_ytd_deprn := l_asset_deprn_rec.bonus_ytd_deprn;
5495 l_dpr_in.bonus_deprn_rsv := l_asset_deprn_rec.bonus_deprn_reserve;
5496 l_dpr_in.impairment_exp := l_asset_deprn_rec.impairment_amount;
5497 l_dpr_in.ytd_impairment := l_asset_deprn_rec.ytd_impairment;
5498 l_dpr_in.impairment_rsv := l_asset_deprn_rec.impairment_reserve;
5499 l_dpr_in.prior_fy_bonus_exp := l_asset_deprn_rec.prior_fy_bonus_expense;
5500 l_dpr_in.impairment_exp := l_asset_deprn_rec.impairment_amount;
5501 l_dpr_in.ytd_impairment := l_asset_deprn_rec.ytd_impairment;
5502 l_dpr_in.impairment_rsv := l_asset_deprn_rec.impairment_reserve;
5503
5504 l_dpr_in.ceil_name := fa_amort_pvt.t_ceiling_name(i);
5505 l_dpr_in.bonus_rule := fa_amort_pvt.t_bonus_rule(i);
5506 l_dpr_in.method_code := fa_amort_pvt.t_deprn_method_code(i);
5507 l_dpr_in.jdate_in_service :=
5508 to_number(to_char(fa_amort_pvt.t_date_placed_in_service(i), 'J'));
5509 --
5510 -- Use dpis as prorate and deprn start date
5511 -- This is ok since this code is only for group now
5512 -- Need to pass actual prorate/deprn start date if this code is open for standalone assets
5513 --
5514 l_dpr_in.prorate_jdate := to_number(to_char(fa_amort_pvt.t_date_placed_in_service(i), 'J'));
5515 l_dpr_in.deprn_start_jdate :=
5516 to_number(to_char(fa_amort_pvt.t_date_placed_in_service(i), 'J'));
5517 l_dpr_in.prorate_date := fa_amort_pvt.t_date_placed_in_service(i);
5518 l_dpr_in.orig_deprn_start_date := fa_amort_pvt.t_date_placed_in_service(i);
5519
5520
5521 l_dpr_in.jdate_retired := 0; -- don't know this is correct or not
5522 l_dpr_in.ret_prorate_jdate := 0; -- don't know this is correct or not
5523 l_dpr_in.life := fa_amort_pvt.t_life_in_months(i);
5524
5525 l_dpr_in.rsv_known_flag := TRUE;
5526 l_dpr_in.salvage_value := fa_amort_pvt.t_salvage_value(i);
5527
5528 l_dpr_in.adj_rec_cost := fa_amort_pvt.t_adjusted_recoverable_cost(i);
5529 l_dpr_in.prior_fy_exp := 0; -- This needs to be 0 for this faxcde call
5530
5531 l_dpr_in.short_fiscal_year_flag := fa_amort_pvt.t_short_fiscal_year_flag(i);
5532
5533 l_dpr_in.old_adj_cost := fa_amort_pvt.t_adjusted_cost(i);
5534 l_dpr_in.formula_factor := fa_amort_pvt.t_formula_factor(i);
5535
5536 l_dpr_in.super_group_id := fa_amort_pvt.t_super_group_id(i);
5537 l_dpr_in.over_depreciate_option := fa_amort_pvt.t_over_depreciate_option(i);
5538
5539 --
5540 -- These values are not stored in Books_Summary since these value won't be
5541 -- Changed over periods.
5542 --
5543 l_dpr_in.tracking_method := px_asset_fin_rec_new.tracking_method;
5544 l_dpr_in.allocate_to_fully_ret_flag := px_asset_fin_rec_new.allocate_to_fully_ret_flag;
5545 l_dpr_in.allocate_to_fully_rsv_flag := px_asset_fin_rec_new.allocate_to_fully_rsv_flag;
5546 l_dpr_in.excess_allocation_option := px_asset_fin_rec_new.excess_allocation_option;
5547 l_dpr_in.depreciation_option := px_asset_fin_rec_new.depreciation_option;
5548 l_dpr_in.member_rollup_flag := px_asset_fin_rec_new.member_rollup_flag;
5549 l_dpr_in.mrc_sob_type_code := p_mrc_sob_type_code;
5550 l_dpr_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
5551
5552 --
5553 -- There is no plane to store following variables in books summary now
5554 -- so copy value from fin_rec_new
5558
5555 l_dpr_in.pc_life_end := px_asset_fin_rec_new.period_counter_life_complete;
5556 l_dpr_in.conversion_date := px_asset_fin_rec_new.conversion_date;
5557
5559 --
5560 -- Following may needed to be added and implemented in Books Summary
5561 -- 'ADJ' for now
5562 --
5563 l_dpr_in.deprn_rounding_flag := 'ADJ';
5564
5565
5566 l_dpr_in.deprn_override_flag := p_trans_rec.deprn_override_flag;
5567 l_dpr_in.used_by_adjustment := TRUE;
5568
5569
5570 --
5571 -- Not for what-if yet
5572 --
5573 l_running_mode := fa_std_types.FA_DPR_NORMAL;
5574
5575
5576 if (not fa_cache_pkg.fazccmt(
5577 fa_amort_pvt.t_deprn_method_code(i),
5578 fa_amort_pvt.t_life_in_months(i),
5579 p_log_level_rec)) then
5580 if (p_log_level_rec.statement_level) then
5581 fa_debug_pkg.add(l_calling_fn, 'Error calling',
5582 'fa_cache_pkg.fazccmt', p_log_level_rec => p_log_level_rec);
5583 end if;
5584
5585 raise calc_failed;
5586 end if;
5587
5588 if i = 1 then
5589 if not fa_cache_pkg.fazccp(fa_cache_pkg.fazcbc_record.prorate_calendar,
5590 fa_cache_pkg.fazcbc_record.fiscal_year_name,
5591 l_dpr_in.prorate_jdate,
5592 g_temp_number,
5593 l_dpr_in.y_begin,
5594 g_temp_integer, p_log_level_rec => p_log_level_rec) then
5595 if (p_log_level_rec.statement_level) then
5596 fa_debug_pkg.add(l_calling_fn, 'Error calling',
5597 'fa_cache_pkg.fazccp', p_log_level_rec => p_log_level_rec);
5598 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.prorate_calendar',
5599 fa_cache_pkg.fazcbc_record.prorate_calendar, p_log_level_rec => p_log_level_rec);
5600 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.fiscal_year_name',
5601 fa_cache_pkg.fazcbc_record.fiscal_year_name, p_log_level_rec => p_log_level_rec);
5602
5603 end if;
5604
5605 raise calc_failed;
5606 end if;
5607 end if;
5608
5609 --
5610 -- Skip faxcde call for raf
5614 -- Bug7487450: Skip hypo reserve calculation if it is UOP
5611 -- If rate source rule is FLAT and depreciable basis is Cost
5612 -- Bug4778244 Added the NVL to avoid condition if(not(null or false)) which will
5613 -- always return NULL in place of FALSE, which is incorrect
5615 if (not (nvl(fa_cache_pkg.fazccmt_record.rate_source_rule, ' ') = fa_std_types.FAD_RSR_PROD)) and
5616 (not (nvl(fa_cache_pkg.fazcdrd_record.subtract_ytd_flag,'N') = 'Y')) and /*bug#15897249 */
5617 (not((nvl(fa_cache_pkg.fazccmt_record.rate_source_rule, ' ') = fa_std_types.FAD_RSR_FLAT) and
5618 (nvl(fa_cache_pkg.fazccmt_record.deprn_basis_rule,' ') = fa_std_types.FAD_DBR_COST) and
5619 (nvl(fa_cache_pkg.fazcdbr_record.rule_name, ' ') in ('PERIOD END BALANCE',
5620 'PERIOD END AVERAGE',
5621 'USE RECOVERABLE COST',
5622 'BEGINNING PERIOD')))) then
5623
5624 if (fa_amort_pvt.t_reset_adjusted_cost_flag(i) = 'Y') or
5625 nvl(fa_cache_pkg.fazcdrd_record.period_update_flag,'N') = 'Y' then
5626 if not fa_cache_pkg.fazccp(fa_cache_pkg.fazcbc_record.prorate_calendar,
5627 fa_cache_pkg.fazcbc_record.fiscal_year_name,
5628 l_dpr_in.prorate_jdate,
5629 g_temp_number,
5630 l_dpr_in.y_begin,
5631 g_temp_integer, p_log_level_rec => p_log_level_rec) then
5632 if (p_log_level_rec.statement_level) then
5633 fa_debug_pkg.add(l_calling_fn, 'Error calling',
5634 'fa_cache_pkg.fazccp', p_log_level_rec => p_log_level_rec);
5635 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.prorate_calendar',
5636 fa_cache_pkg.fazcbc_record.prorate_calendar, p_log_level_rec => p_log_level_rec);
5637 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.fiscal_year_name',
5641
5638 fa_cache_pkg.fazcbc_record.fiscal_year_name, p_log_level_rec => p_log_level_rec);
5639
5640 end if;
5642 raise calc_failed;
5643 end if;
5644
5645 l_dpr_in.p_cl_begin := 1;
5646
5647 if (fa_amort_pvt.t_period_num(i) = 1) then
5648 l_dpr_in.y_end := fa_amort_pvt.t_fiscal_year(i) - 1;
5649 l_dpr_in.p_cl_end := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
5650 else
5651 l_dpr_in.y_end := fa_amort_pvt.t_fiscal_year(i);
5652 l_dpr_in.p_cl_end := fa_amort_pvt.t_period_num(i) - 1;
5653 end if;
5654
5655 l_dpr_in.rate_adj_factor := 1;
5656
5657 -- manual override
5658 if fa_cache_pkg.fa_deprn_override_enabled then
5659
5660 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
5661 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
5662
5663 -- update override status only if satisfies condintion,
5664 -- otherwise do not update status when calculating RAF
5665 -- 1. formula; or
5666 -- 2. (calc or table) and cost
5667
5668 l_dpr_in.update_override_status :=
5669 ((l_rate_source_rule = fa_std_types.FAD_RSR_FORMULA)
5670 OR (((l_rate_source_rule = fa_std_types.FAD_RSR_CALC)
5671 OR (l_rate_source_rule = fa_std_types.FAD_RSR_TABLE))
5672 AND (l_deprn_basis_rule = fa_std_types.FAD_DBR_COST)));
5673 end if;
5674
5675 --* HHIRAGA modified on Oct/Nov in 2003.
5676 -- Changed parameter to period counter when the recalculation of
5677 -- RAF needs.
5678 -- This function will populates all member assets to be used to
5679 -- hypothetical allocation internally.
5680 --
5681 --+++++++ Call Tracking Function to populate Member in case ALLOCATE ++++++
5682 if p_asset_type_rec.asset_type = 'GROUP' and
5683 nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
5684
5685 l_raf_processed_flag := TRUE;
5686 l_dpr_in.tracking_method := NULL;
5687
5688 /*
5689 if not FA_TRACK_MEMBER_PVT.get_member_at_start(
5690 p_period_rec => l_period_rec,
5691 p_trans_rec => p_trans_rec,
5692 p_asset_hdr_rec => p_asset_hdr_rec,
5693 p_asset_fin_rec => px_asset_fin_rec_new,
5694 p_dpr_in => l_dpr_in,
5695 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
5696 if (p_log_level_rec.statement_level) then
5697 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'FA_TRACK_MEMBER_PVT.get_member_at_start', p_log_level_rec => p_log_level_rec);
5698 end if;
5699
5700 raise calc_failed;
5701
5702 end if;
5703 */
5704 end if; -- nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE'
5705
5706 if (p_log_level_rec.statement_level) then
5707 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
5708 fa_debug_pkg.add(l_calling_fn, ' Call ', 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
5709 end if;
5710
5711 --+++++++ Call Depreciation engine for rate adjustment factor +++++++
5712 if not FA_CDE_PKG.faxcde(l_dpr_in,
5713 l_dpr_arr,
5714 l_dpr_out,
5715 l_running_mode, p_log_level_rec => p_log_level_rec) then
5716 if (p_log_level_rec.statement_level) then
5717 fa_debug_pkg.add(l_calling_fn, 'Error calling',
5718 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
5719 end if;
5720
5721 raise calc_failed;
5722 end if;
5723
5724 if (p_log_level_rec.statement_level) then
5725 fa_debug_pkg.add(l_calling_fn, 'l_dpr_out.new_deprn_rsv',
5726 l_dpr_out.new_deprn_rsv, p_log_level_rec => p_log_level_rec);
5727 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
5728 end if;
5729
5730 -- manual override
5731 if fa_cache_pkg.fa_deprn_override_enabled then
5732 if l_dpr_in.update_override_status then
5736 end if;
5733 p_trans_rec.deprn_override_flag := l_dpr_out.deprn_override_flag;
5734 else
5735 p_trans_rec.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
5737 end if;
5738
5739 l_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
5740 l_asset_fin_rec_new.reval_amortization_basis := l_dpr_out.new_reval_amo_basis;
5741 l_asset_deprn_rec_raf.deprn_reserve := l_dpr_out.new_deprn_rsv;
5742 l_asset_deprn_rec_raf.reval_deprn_reserve := l_dpr_out.new_reval_rsv;
5743 l_asset_fin_rec_new.adjusted_capacity := l_asset_fin_rec_new.production_capacity -
5744 l_dpr_out.new_ltd_prod;
5745 l_asset_deprn_rec_raf.ltd_production := l_dpr_out.new_ltd_prod;
5746 l_asset_deprn_rec_raf.prior_fy_expense := l_dpr_out.new_prior_fy_exp;
5747 l_asset_deprn_rec_raf.bonus_deprn_amount := l_dpr_out.bonus_deprn_exp;
5748 l_asset_deprn_rec_raf.bonus_deprn_reserve := l_dpr_out.new_bonus_deprn_rsv;
5749 l_asset_deprn_rec_raf.impairment_amount := l_dpr_out.impairment_exp;
5750 l_asset_deprn_rec_raf.impairment_reserve := l_dpr_out.new_impairment_rsv;
5751 l_asset_deprn_rec_raf.prior_fy_bonus_expense := l_dpr_out.new_prior_fy_bonus_exp;
5752
5753 -- HHIRAGA
5754 --++++++++ Tracking=ALLOCATE case ++++++++++++++
5755 if (l_raf_processed_flag) then
5756 l_dpr_in.tracking_method := 'ALLOCATE';
5757 l_raf_processed_flag := FALSE;
5758 end if;
5759
5760 if nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
5761
5762 fa_track_member_pvt.p_track_member_table.delete;
5763 fa_track_member_pvt.p_track_mem_index_table.delete;
5764
5765 if (p_log_level_rec.statement_level) then
5766 fa_debug_pkg.add(l_calling_fn, 'fa_track_member_pvt.p_track_member_table',
5767 'deleted', p_log_level_rec => p_log_level_rec);
5768 end if;
5769 end if;
5770 end if;
5771
5772 else
5773 --bug#15897249 added if condition
5774 if ((not l_prev_adj_cost_flag) or (fa_amort_pvt.t_reset_adjusted_cost_flag(i) = 'Y') or
5775 nvl(fa_cache_pkg.fazcdrd_record.period_update_flag,'N') = 'Y' or
5776 l_asset_fin_rec_new.adjusted_cost is null
5777 ) then
5778 l_asset_fin_rec_new.adjusted_cost := l_asset_fin_rec_new.recoverable_cost;
5779 end if;
5780 end if; ---- skip faxcde call for raf
5781
5782
5783 if (p_log_level_rec.statement_level) then
5784 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
5785 fa_debug_pkg.add(l_calling_fn, ' Call ',
5786 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
5787 fa_debug_pkg.add(l_calling_fn, 'p_trans_rec.transaction_type_code',
5788 p_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
5789 fa_debug_pkg.add(l_calling_fn, 'l_trans_rec.transaction_type_code',
5790 l_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
5791 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.eofy_reserve',
5792 l_asset_fin_rec_new.eofy_reserve, p_log_level_rec => p_log_level_rec);
5793 fa_debug_pkg.add(l_calling_fn, 'l_asset_deprn_rec.deprn_reserve',
5794 l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
5795 fa_debug_pkg.add(l_calling_fn, 'l_asset_deprn_rec.bonus_deprn_reserve',
5796 l_asset_deprn_rec.bonus_deprn_reserve, p_log_level_rec => p_log_level_rec);
5797 end if;
5798
5799 --* HHIRAGA modified on OCT/NOV in 2003
5800 -- Prepare memory table to be able to process depreciation recalculation
5801 -- This function should be called only when memory table has not been populated.
5802 -- if l_processed_flag is FALSE, process this preparation function
5803 if p_asset_type_rec.asset_type = 'GROUP' and
5804 nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
5805
5806 l_no_allocation_for_last := 'Y';
5807 if (fa_amort_pvt.t_reset_adjusted_cost_flag(i) = 'Y') and
5808 (not (l_first_process)
5809 and p_trans_rec.transaction_type_code = 'GROUP ADDITION') then
5810
5811 l_no_allocation_for_last := 'N';
5812 if fa_amort_pvt.t_period_num(i) = 1 then
5813 l_recalc_start_fy := fa_amort_pvt.t_fiscal_year(i) - 1;
5814 l_recalc_start_period_num := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
5815 else
5816 l_recalc_start_fy := fa_amort_pvt.t_fiscal_year(i);
5817 l_recalc_start_period_num := fa_amort_pvt.t_period_num(i) - 1;
5818 end if;
5819
5820 if (p_log_level_rec.statement_level) then
5821 fa_debug_pkg.add(l_calling_fn, '++++ Call ++++', 'FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5822 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_reset_adjusted_cost_flag(i)',
5823 fa_amort_pvt.t_reset_adjusted_cost_flag(i));
5827 fa_debug_pkg.add(l_calling_fn, 'l_old_recalc_end_period_num', l_old_recalc_end_period_num, p_log_level_rec => p_log_level_rec);
5824 fa_debug_pkg.add(l_calling_fn, 'l_recalc_start_fy', l_recalc_start_fy, p_log_level_rec => p_log_level_rec);
5825 fa_debug_pkg.add(l_calling_fn, 'l_recalc_start_period_num', l_recalc_start_period_num, p_log_level_rec => p_log_level_rec);
5826 fa_debug_pkg.add(l_calling_fn, 'l_old_recalc_end_fy', l_old_recalc_end_fy, p_log_level_rec => p_log_level_rec);
5828 end if;
5829
5830 if (nvl(l_old_recalc_end_fy,l_recalc_start_fy) = l_recalc_start_fy and
5831 nvl(l_old_recalc_end_period_num,l_recalc_start_period_num+1) <> l_recalc_start_period_num) then
5832 l_backup_processed_flag := FALSE;
5833 elsif (l_backup_processed_flag) then
5834 l_recalc_start_fy := fa_amort_pvt.t_fiscal_year(i);
5835 l_recalc_start_period_num := fa_amort_pvt.t_period_num(i);
5836 end if;
5837
5838 else
5839
5840 l_recalc_start_fy := fa_amort_pvt.t_fiscal_year(i);
5841 l_recalc_start_period_num := fa_amort_pvt.t_period_num(i);
5842
5843 l_processed_flag := TRUE;
5844 fa_track_member_pvt.l_process_deprn_for_member := 'NO';
5845 /*
5849
5846 l_asset_fin_rec_new.tracking_method := NULL;
5847 l_asset_fin_rec_old.tracking_method := NULL;
5848 */
5850 if (p_log_level_rec.statement_level) then
5851 fa_debug_pkg.add(l_calling_fn, '++++ Call ++++', 'FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5852 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_reset_adjusted_cost_flag(i)',
5853 fa_amort_pvt.t_reset_adjusted_cost_flag(i));
5854 fa_debug_pkg.add(l_calling_fn, 'l_recalc_start_fy', l_recalc_start_fy, p_log_level_rec => p_log_level_rec);
5855 fa_debug_pkg.add(l_calling_fn, 'l_recalc_start_period_num', l_recalc_start_period_num, p_log_level_rec => p_log_level_rec);
5856 fa_debug_pkg.add(l_calling_fn, 'l_old_recalc_end_fy', l_old_recalc_end_fy, p_log_level_rec => p_log_level_rec);
5857 fa_debug_pkg.add(l_calling_fn, 'l_old_recalc_end_period_num', l_old_recalc_end_period_num, p_log_level_rec => p_log_level_rec);
5858 end if;
5859
5860 if l_old_recalc_end_fy is not NULL and l_old_recalc_end_period_num is not NULL then
5861 if l_old_recalc_end_period_num = fa_cache_pkg.fazcct_record.number_per_fiscal_year then
5862 l_old_recalc_end_fy := l_old_recalc_end_fy + 1;
5863 l_old_recalc_end_period_num := 1;
5864 else
5865 l_old_recalc_end_period_num := l_old_recalc_end_period_num + 1;
5866 end if;
5867 end if;
5868
5869 if (nvl(l_old_recalc_end_fy,l_recalc_start_fy) = l_recalc_start_fy and
5870 nvl(l_old_recalc_end_period_num,l_recalc_start_period_num+1) <> l_recalc_start_period_num) then
5871 l_backup_processed_flag := FALSE;
5872 end if;
5873
5874 end if;
5875
5876 --* Calcualte recalc_start_period_counter
5877 if (l_first_process) then
5878 l_recalc_start_period_counter := l_recalc_start_fy*(fa_cache_pkg.fazcct_record.number_per_fiscal_year)
5879 + l_recalc_start_period_num;
5880
5881 if p_mrc_sob_type_code <> 'R' then
5882 open c_chk_bs_row_exists;
5883 fetch c_chk_bs_row_exists into l_chk_bs_row_exists;
5884 if c_chk_bs_row_exists%FOUND then
5885 if not FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE
5886 (p_trans_rec=>p_trans_rec,
5887 p_asset_hdr_rec => p_asset_hdr_rec,
5888 p_asset_fin_rec_new => px_asset_fin_rec_new,
5889 p_populate_for_recalc_period => 'T',
5890 p_amort_start_date => l_transaction_date_entered,
5891 p_recalc_start_fy => l_recalc_start_fy,
5892 p_recalc_start_period_num => l_recalc_start_period_num,
5893 p_no_allocation_for_last => l_no_allocation_for_last,
5894 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
5895 if (p_log_level_rec.statement_level) then
5896 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5897 end if;
5898 raise calc_failed;
5899 end if;
5900 else
5901 if not FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE
5902 (p_trans_rec=>p_trans_rec,
5903 p_asset_hdr_rec => p_asset_hdr_rec,
5904 p_asset_fin_rec_new => px_asset_fin_rec_new,
5905 p_amort_start_date => l_transaction_date_entered,
5906 p_recalc_start_fy => l_recalc_start_fy,
5907 p_recalc_start_period_num => l_recalc_start_period_num,
5908 p_no_allocation_for_last => l_no_allocation_for_last,
5909 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
5910 if (p_log_level_rec.statement_level) then
5911 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5912 end if;
5913 raise calc_failed;
5914 end if;
5915 end if;
5916 close c_chk_bs_row_exists;
5917
5918 else -- MRC
5919
5920 open c_chk_bs_row_exists_mrc;
5921 fetch c_chk_bs_row_exists_mrc into l_chk_bs_row_exists;
5922 if c_chk_bs_row_exists_mrc%FOUND then
5923 if not FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE
5924 (p_trans_rec=>p_trans_rec,
5925 p_asset_hdr_rec => p_asset_hdr_rec,
5926 p_asset_fin_rec_new => px_asset_fin_rec_new,
5927 p_populate_for_recalc_period => 'T',
5928 p_amort_start_date => l_transaction_date_entered,
5929 p_recalc_start_fy => l_recalc_start_fy,
5930 p_recalc_start_period_num => l_recalc_start_period_num,
5934 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5931 p_no_allocation_for_last => l_no_allocation_for_last,
5932 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
5933 if (p_log_level_rec.statement_level) then
5935 end if;
5936 raise calc_failed;
5937 end if;
5938 else
5939 if not FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE
5940 (p_trans_rec=>p_trans_rec,
5941 p_asset_hdr_rec => p_asset_hdr_rec,
5942 p_asset_fin_rec_new => px_asset_fin_rec_new,
5943 p_amort_start_date => l_transaction_date_entered,
5944 p_recalc_start_fy => l_recalc_start_fy,
5945 p_recalc_start_period_num => l_recalc_start_period_num,
5946 p_no_allocation_for_last => l_no_allocation_for_last,
5947 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
5948 if (p_log_level_rec.statement_level) then
5949 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5950 end if;
5951 raise calc_failed;
5952 end if;
5953 end if;
5954 close c_chk_bs_row_exists_mrc;
5955 end if; -- MRC or Primary
5956 l_old_recalc_start_fy := l_recalc_start_fy;
5957 l_old_recalc_start_period_num := l_recalc_start_period_num;
5958
5959 else
5960
5961 l_old_recalc_start_fy := l_recalc_start_fy;
5962 l_old_recalc_start_period_num := l_recalc_start_period_num;
5963
5964 if not (l_backup_processed_flag) then
5965 if not FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE
5966 (p_trans_rec=>p_trans_rec,
5967 p_asset_hdr_rec => p_asset_hdr_rec,
5968 p_asset_fin_rec_new => px_asset_fin_rec_new,
5969 p_amort_start_date => l_transaction_date_entered,
5970 p_recalc_start_fy => l_recalc_start_fy,
5971 p_recalc_start_period_num => l_recalc_start_period_num,
5972 p_no_allocation_for_last => l_no_allocation_for_last,
5973 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
5974 if (p_log_level_rec.statement_level) then
5975 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
5976 end if;
5977 raise calc_failed;
5978 end if;
5979
5980 else
5981
5982 if (p_log_level_rec.statement_level) then
5983 fa_debug_pkg.add(l_calling_fn, '##### bakcup table counter #####',
5984 fa_track_member_pvt.p_track_member_table_for_deprn.COUNT, p_log_level_rec => p_log_level_rec);
5985 end if;
5986
5987 if not FA_TRACK_MEMBER_PVT.copy_member_table(p_backup_restore => 'RESTORE', p_log_level_rec => p_log_level_rec) then
5988 if (p_log_level_rec.statement_level) then
5989 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'COPY_MEMBER_TABLE', p_log_level_rec => p_log_level_rec);
5990 end if;
5991 raise calc_failed;
5992 end if;
5993
5994 --* Calculate only for this period
5995 if not FA_TRACK_MEMBER_PVT.POPULATE_MEMBER_ASSETS_TABLE
5996 (p_trans_rec=>p_trans_rec,
5997 p_asset_hdr_rec => p_asset_hdr_rec,
5998 p_asset_fin_rec_new => px_asset_fin_rec_new,
5999 p_populate_for_recalc_period => 'Y',
6000 p_amort_start_date => l_transaction_date_entered,
6001 p_recalc_start_fy => l_recalc_start_fy,
6002 p_recalc_start_period_num => l_recalc_start_period_num,
6003 p_no_allocation_for_last => 'Y',
6004 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
6005 if (p_log_level_rec.statement_level) then
6006 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'POPULATE_MEMBER_ASSETS_TABLE', p_log_level_rec => p_log_level_rec);
6007 end if;
6008 raise calc_failed;
6009 end if;
6010
6011 l_processed_flag := TRUE;
6012 fa_track_member_pvt.l_process_deprn_for_member := 'NO';
6013
6014 end if; -- IF not (l_backup_processed_flag)
6015
6016 end if; -- l_first_process_flag
6017
6018 if (l_first_process) then
6019 l_first_process := FALSE;
6020 end if;
6021
6022
6023 end if; -- HHIRAGA if-statement
6024
6025 --
6026 -- From old fin rec followings are necessary
6027 -- formula_factor
6028 -- rate_adjustment_factor
6029 -- adjusted_cost
6030 -- cost
6031 --
6032 -- From new fin rec followings are necessary
6036 -- depreciate_flag
6033 -- Method
6034 -- life
6035 -- group asset id
6037 -- cost
6038 -- salvage_value
6039 -- recoverable_cost
6040 -- reduction_rate
6041 -- eofy_reserve
6042 -- recognize_gain_loss
6043 -- tracking_method
6044 -- allocate_to_fully_rsv_flag
6045 -- allocate_to_fully_ret_flag
6046 -- excess_allocation_option
6047 -- depreciation_option
6048 -- member_rollup_flag
6049
6050 if (fa_cache_pkg.fazcdbr_record.rule_name = 'ENERGY PERIOD END BALANCE') and
6051 (p_asset_fin_rec_old.tracking_method = 'ALLOCATE') and
6052 (p_trans_rec.transaction_key = 'MS') then
6053 l_reserve_retired := 0;
6054 end if;
6055
6056 --
6057 -- reset_adjusted_cost_flag can be no or null in case
6058 -- this is reclass source group.
6059 -- otherwise, deprn basis rule function gets called all the time
6060 -- if process reaches here.
6061 -- Bug7487450: need to call below if deprn basis is period update
6062 --
6063 if (fa_amort_pvt.t_reset_adjusted_cost_flag(i) = 'Y') or
6064 nvl(fa_cache_pkg.fazcdrd_record.period_update_flag,'N') = 'Y' then
6065 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
6066 (p_event_type => 'AMORT_ADJ',
6067 p_asset_fin_rec_new => l_asset_fin_rec_new,
6068 p_asset_fin_rec_old => l_asset_fin_rec_old,
6069 p_asset_hdr_rec => p_asset_hdr_rec,
6070 p_asset_type_rec => p_asset_type_rec,
6071 p_asset_deprn_rec => l_asset_deprn_rec,
6072 p_trans_rec => p_trans_rec,
6073 p_trans_rec_adj => l_trans_rec,
6074 p_period_rec => l_period_rec,
6075 p_current_total_rsv => l_asset_deprn_rec.deprn_reserve,
6076 p_current_rsv => l_asset_deprn_rec.deprn_reserve -
6077 nvl(l_asset_deprn_rec.bonus_deprn_reserve, 0) - nvl(l_asset_deprn_rec.impairment_reserve, 0),
6078 p_current_total_ytd => l_asset_deprn_rec.ytd_deprn,
6079 p_adj_reserve => p_asset_deprn_rec_adj.deprn_reserve,
6080 p_reserve_retired => l_reserve_retired,
6081 p_hyp_basis => l_asset_fin_rec_new.adjusted_cost,
6082 p_hyp_total_rsv => l_asset_deprn_rec_raf.deprn_reserve,
6083 p_hyp_rsv => l_asset_deprn_rec_raf.deprn_reserve -
6084 nvl(l_asset_deprn_rec_raf.bonus_deprn_reserve, 0) - nvl(l_asset_deprn_rec_raf.impairment_reserve,0),
6085 p_eofy_recoverable_cost => l_eofy_rec_cost,
6086 p_eop_recoverable_cost => l_eop_rec_cost,
6087 p_eofy_salvage_value => l_eofy_sal_val,
6088 p_eop_salvage_value => l_eop_sal_val,
6089 p_mrc_sob_type_code => p_mrc_sob_type_code,
6090 p_used_by_adjustment => 'ADJUSTMENT',
6091 px_new_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
6092 px_new_raf => l_asset_fin_rec_new.rate_adjustment_factor,
6093 px_new_formula_factor => l_asset_fin_rec_new.formula_factor,
6094 p_log_level_rec => p_log_level_rec)) then
6095 if (p_log_level_rec.statement_level) then
6096 fa_debug_pkg.add(l_calling_fn, 'Error calling',
6097 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
6098 end if;
6099
6100 raise calc_failed;
6101 end if;
6102
6103 fa_amort_pvt.t_adjusted_cost(i) := l_asset_fin_rec_new.adjusted_cost;
6104 fa_amort_pvt.t_rate_adjustment_factor(i) := l_asset_fin_rec_new.rate_adjustment_factor;
6105 fa_amort_pvt.t_formula_factor(i) := l_asset_fin_rec_new.formula_factor;
6106
6107 if (p_log_level_rec.statement_level) then
6108 fa_debug_pkg.add(l_calling_fn, 'Returned values from ',
6109 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
6110 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_cost',
6111 l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
6112 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.rate_adjustment_factor',
6113 l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
6114 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.formula_factor',
6115 l_asset_fin_rec_new.formula_factor, p_log_level_rec => p_log_level_rec);
6116 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
6117 end if;
6118 else
6119 --
6120 -- Adjusted_cost and formula_factor are setup in last faxcde call so skipping
6121 -- deprn basis call should require no action
6122 --
6123 fa_amort_pvt.t_rate_adjustment_factor(i) := fa_amort_pvt.t_rate_adjustment_factor(i-1);
6124 end if;
6125
6126 --* HHIRAGA - Tracking Test
6127
6128 if (l_processed_flag) then
6129 fa_track_member_pvt.l_process_deprn_for_member := 'YES';
6130 l_processed_flag := FALSE;
6134 -- Now this is current period, so don't need to run depreciation
6131 end if;
6132
6133 --
6135 --
6136 --tk_util.debug('l_count - l_bs_ind + 1: '||to_char(l_count - l_bs_ind + 1)||':'||to_char(i));
6137
6138 if (fa_amort_pvt.t_period_counter(i) = p_period_rec.period_counter) then
6139
6140 --tk_util.debug('Exit');
6141 EXIT;
6142 end if;
6143
6144 --
6145 -- Run Depreciation if:
6146 -- - next available transaction (in table) is NOT the same period
6147 -- - This is the last transaction to recalculate which is not in
6148 -- current period.
6149 -- - This is the last trnsaction because of the limit specified
6150 -- at BULK fetch above. (Inside of following if clause, try to get
6151 -- next transaction from database and determine if depreciation needs
6152 -- to be called or not.
6153 --
6154 --tk_util.debug('l_period_rec.period_counter: '||to_char(l_period_rec.period_counter));
6155 --tk_util.debug('fa_amort_pvt.t_period_counter: '||to_char(fa_amort_pvt.t_period_counter(i)));
6156
6157 -- if (p_period_rec.period_counter <> fa_amort_pvt.t_period_counter(i)) or
6158 -- (px_asset_fin_rec_new.depreciate_flag = 'NO' or
6159 -- px_asset_fin_rec_new.disabled_flag = 'Y') then
6160
6161 if (p_period_rec.period_counter <> fa_amort_pvt.t_period_counter(i)) and
6162 (not (fa_amort_pvt.t_depreciate_flag(i) = 'NO' or
6163 nvl(px_asset_fin_rec_new.disabled_flag, 'N') = 'Y')) then
6164
6165 if (p_log_level_rec.statement_level) then
6166 fa_debug_pkg.add(l_calling_fn, 'Run Depreciation ', i, p_log_level_rec => p_log_level_rec);
6167 fa_debug_pkg.add(l_calling_fn, 'l_period_rec.period_counter',
6168 l_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
6169 fa_debug_pkg.add(l_calling_fn, 'p_period_rec.period_counter',
6170 p_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
6171 end if;
6172
6173 -- look for next period which requires adjusted_cost reset.
6174 -- Find out the period and run depreciation a period before the
6175 -- found period. If there isn't one, run depreciation until the end
6176 l_adjusted_ind := 0;
6177
6178 --tk_util.debug('i and count: '||to_char(i)||':'||to_char(l_count));
6179
6180 --
6181 -- In case of destination asset for reclass transaction, this loop needs to find
6182 -- the period which will have t_reset_adjusted_cost_flag = 'Y' but not reflected
6183 -- yet.
6184 e := d;
6185 if (p_reclass_src_dest = 'DESTINATION') then
6186 FOR j in (i + 1)..(l_count) LOOP
6187 l_adjusted_ind := l_adjusted_ind + 1;
6188 e := e + 1;
6189
6190 --tk_util.debug('reset_adjusted_cost_flag: '||fa_amort_pvt.t_reset_adjusted_cost_flag(j));
6191 --tk_util.debug('cost(e):salvage_value(e):cip_cost(e):deprn_limit_amount(e):'||to_char(td_cost(e))||':'||to_char(td_salvage_value(e))||':'||to_char(td_cip_cost(e))||':'||to_char(td_deprn_limit_amount(e)));
6192
6193 --
6194 -- Needed to use (e - 1) for sal and limit because delta table
6195 -- contains actual amounts for these values since there is no chagne
6196 -- in columns for these values.
6197 --
6198 if (fa_amort_pvt.t_reset_adjusted_cost_flag(j) = 'Y') or
6199 (j = (l_count)) or
6200 (td_cost(e) <> 0) or
6201 ((td_salvage_value(e) - td_salvage_value(e - 1)) <> 0) or
6202 (td_cip_cost(e) <> 0) or
6203 ((td_deprn_limit_amount(e) - td_deprn_limit_amount(e - 1)) <> 0) then
6204
6205 if (fa_amort_pvt.t_period_num(j) = 1) then
6206 l_fiscal_year := fa_amort_pvt.t_fiscal_year(j) - 1;
6207 l_period_num := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
6208 else
6209 l_fiscal_year := fa_amort_pvt.t_fiscal_year(j);
6210 l_period_num := fa_amort_pvt.t_period_num(j) - 1;
6211 end if;
6212
6213 l_period_counter := fa_amort_pvt.t_period_counter(j) - 1;
6214 EXIT;
6215 end if;
6216
6217 END LOOP;
6218 else
6219 FOR j in (i + 1)..(l_count) LOOP
6220 l_adjusted_ind := l_adjusted_ind + 1;
6221
6222 --tk_util.debug('reset_adjusted_cost_flag: '||fa_amort_pvt.t_reset_adjusted_cost_flag(j));
6223
6224 if (fa_amort_pvt.t_reset_adjusted_cost_flag(j) = 'Y') or
6225 (j = (l_count)) then
6226 if (fa_amort_pvt.t_period_num(j) = 1) then
6227 l_fiscal_year := fa_amort_pvt.t_fiscal_year(j) - 1;
6228 l_period_num := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
6229 else
6230 l_fiscal_year := fa_amort_pvt.t_fiscal_year(j);
6231 l_period_num := fa_amort_pvt.t_period_num(j) - 1;
6232 end if;
6233
6234 l_period_counter := fa_amort_pvt.t_period_counter(j) - 1;
6235 EXIT;
6236 end if;
6237
6238 END LOOP;
6239 end if;
6240 --tk_util.debug('fy:pn: '||to_char(l_fiscal_year)||':'||to_char(l_period_num));
6241
6242 --
6243 -- Prepare Running Depreciation
6244 --
6245 l_dpr_in.y_begin := fa_amort_pvt.t_fiscal_year(i);
6246 l_dpr_in.p_cl_begin := fa_amort_pvt.t_period_num(i);
6250 -- HHIRAGA set loop ended period
6247 l_dpr_in.y_end := l_fiscal_year;
6248 l_dpr_in.p_cl_end := l_period_num;
6249
6251 l_old_recalc_end_fy := l_dpr_in.y_end;
6252 l_old_recalc_end_period_num := l_dpr_in.p_cl_end;
6253 --
6254
6255 if (p_log_level_rec.statement_level) then
6256 fa_debug_pkg.add(l_calling_fn, 'Depreciation starts from period of ', l_dpr_in.p_cl_begin, p_log_level_rec => p_log_level_rec);
6257 fa_debug_pkg.add(l_calling_fn, 'and year of ', l_dpr_in.y_begin, p_log_level_rec => p_log_level_rec);
6258 fa_debug_pkg.add(l_calling_fn, 'Depreciation will end at period of ', l_dpr_in.p_cl_end, p_log_level_rec => p_log_level_rec);
6259 fa_debug_pkg.add(l_calling_fn, 'and year of ', l_dpr_in.y_end, p_log_level_rec => p_log_level_rec);
6260 end if;
6261
6262 if (fa_amort_pvt.t_period_num(i) <> 1) then
6263 l_dpr_in.deprn_rounding_flag := 'ADJ';
6264 end if;
6265
6266 l_dpr_in.prior_fy_exp := l_asset_deprn_rec.prior_fy_expense;
6267 l_dpr_in.ytd_deprn := l_asset_deprn_rec.ytd_deprn;
6268 l_dpr_in.deprn_rsv := l_asset_deprn_rec.deprn_reserve;
6269 l_dpr_in.adj_cost := l_asset_fin_rec_new.adjusted_cost;
6270 l_dpr_in.eofy_reserve := l_asset_fin_rec_new.eofy_reserve;
6271 l_dpr_in.rate_adj_factor := l_asset_fin_rec_new.rate_adjustment_factor;
6272 l_dpr_in.formula_factor := l_asset_fin_rec_new.formula_factor;
6273 l_dpr_in.super_group_id := l_asset_fin_rec_new.super_group_id;
6274 --tk_util.debug('l_dpr_in.super_group_id: '||to_char(l_dpr_in.super_group_id));
6275 l_dpr_in.cost := l_asset_fin_rec_new.cost;
6276
6277 l_dpr_in.mrc_sob_type_code := p_mrc_sob_type_code;
6278 l_dpr_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
6279
6280 -- manual override
6281 if fa_cache_pkg.fa_deprn_override_enabled then
6282 l_dpr_in.update_override_status := TRUE;
6283 end if;
6284
6285 --
6286 -- Running Depreciation
6287 --
6288 --tk_util.debug('i: '||to_char(i));
6289
6290 if not FA_CDE_PKG.faxcde(l_dpr_in,
6291 l_dpr_arr,
6292 l_dpr_out,
6293 l_running_mode,
6294 i, p_log_level_rec => p_log_level_rec) then
6295 if (p_log_level_rec.statement_level) then
6296 fa_debug_pkg.add(l_calling_fn, 'Error calling',
6297 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
6298 end if;
6299
6300 raise calc_failed;
6301 end if;
6302
6303 if (p_log_level_rec.statement_level) then
6304 fa_debug_pkg.add(l_calling_fn, 'l_dpr_out.new_ytd_deprn',
6305 l_dpr_out.new_ytd_deprn, p_log_level_rec => p_log_level_rec);
6306 fa_debug_pkg.add(l_calling_fn, 'l_dpr_out.new_deprn_rsv',
6307 l_dpr_out.new_deprn_rsv, p_log_level_rec => p_log_level_rec);
6308 end if;
6309
6310 -- manual override
6311 if fa_cache_pkg.fa_deprn_override_enabled then
6312 p_trans_rec.deprn_override_flag := l_dpr_out.deprn_override_flag;
6313 end if;
6314
6315 if (l_asset_fin_rec_new.adjusted_cost <> 0) or
6316 (l_dpr_out.new_adj_cost <> 0) then
6317 l_asset_fin_rec_new.reval_amortization_basis := l_dpr_out.new_reval_amo_basis;
6318 l_asset_deprn_rec.deprn_reserve := l_dpr_out.new_deprn_rsv;
6319 l_asset_deprn_rec.ytd_deprn := l_dpr_out.new_ytd_deprn;
6320 l_asset_deprn_rec.reval_deprn_reserve := l_dpr_out.new_reval_rsv;
6321 l_asset_fin_rec_new.adjusted_capacity := l_dpr_out.new_adj_capacity;
6322 l_asset_deprn_rec.ltd_production := l_dpr_out.new_ltd_prod;
6323 l_asset_fin_rec_new.eofy_reserve := l_dpr_out.new_eofy_reserve;
6324
6325 l_asset_deprn_rec.prior_fy_expense := l_dpr_out.new_prior_fy_exp;
6326 l_asset_deprn_rec.bonus_deprn_amount := l_dpr_out.bonus_deprn_exp;
6327 l_asset_deprn_rec.bonus_deprn_reserve := l_dpr_out.new_bonus_deprn_rsv;
6328 l_asset_deprn_rec.prior_fy_bonus_expense := l_dpr_out.new_prior_fy_bonus_exp;
6329 l_asset_deprn_rec.impairment_amount := l_dpr_out.impairment_exp;
6330 l_asset_deprn_rec.impairment_reserve := l_dpr_out.new_impairment_rsv;
6331
6332 end if;
6333
6334 --++++++ Put adjusted cost back ++++++
6335 l_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
6336 l_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
6337
6338 l_out_deprn_exp := l_dpr_out.deprn_exp;
6339 l_out_reval_exp := l_dpr_out.reval_exp;
6340 l_out_reval_amo := l_dpr_out.reval_amo;
6341 l_out_prod := l_dpr_out.prod;
6342 l_out_ann_adj_exp := l_dpr_out.ann_adj_exp;
6343 l_out_ann_adj_reval_exp := l_dpr_out.ann_adj_reval_exp;
6344 l_out_ann_adj_reval_amo := l_dpr_out.ann_adj_reval_amo;
6345 l_out_bonus_rate_used := l_dpr_out.bonus_rate_used;
6346 l_out_full_rsv_flag := l_dpr_out.full_rsv_flag;
6347 l_out_life_comp_flag := l_dpr_out.life_comp_flag;
6348 l_out_deprn_override_flag := l_dpr_out.deprn_override_flag;
6349
6350 l_eop_rec_cost := l_asset_fin_rec_new.recoverable_cost;
6351 l_eop_sal_val := l_asset_fin_rec_new.salvage_value;
6352
6353 -- HHIRAGA
6354 --+++++++++ Call member level maintenance for tracking +++++++
6358 p_dpr_in => l_dpr_in,
6355 if nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
6356
6357 if not FA_TRACK_MEMBER_PVT.member_eofy_rsv(p_asset_hdr_rec => p_asset_hdr_rec,
6359 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
6360 if (p_log_level_rec.statement_level) then
6361 fa_debug_pkg.add(l_calling_fn, 'Error calling',
6362 'FA_TRACK_MEMBER_PVT.member_eofy_rsv', p_log_level_rec => p_log_level_rec);
6363 end if;
6364
6365 raise calc_failed;
6366
6367 end if;
6368
6369 if (p_log_level_rec.statement_level) then
6370 fa_debug_pkg.add(l_calling_fn, '###### Copy to backup #######',
6371 fa_track_member_pvt.p_track_member_table.COUNT, p_log_level_rec => p_log_level_rec);
6372 end if;
6373
6374 if (p_log_level_rec.statement_level) then
6375 fa_debug_pkg.add(l_calling_fn, '##### bakcup table counter #####',
6376 fa_track_member_pvt.p_track_member_table_for_deprn.COUNT, p_log_level_rec => p_log_level_rec);
6377 end if;
6378
6379 if not FA_TRACK_MEMBER_PVT.copy_member_table(p_backup_restore => 'BACKUP',
6380 p_current_fiscal_year => l_dpr_in.y_begin,
6381 p_current_period_num => l_dpr_in.p_cl_begin, p_log_level_rec => p_log_level_rec) then
6382 if (p_log_level_rec.statement_level) then
6383 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'COPY_MEMBER_TABLE', p_log_level_rec => p_log_level_rec);
6384 end if;
6385 raise calc_failed;
6386 end if;
6387 l_backup_processed_flag := TRUE;
6388
6389 if (p_log_level_rec.statement_level) then
6390 fa_debug_pkg.add(l_calling_fn, '++++ FA_TRACK_MEMBER_PVT.MEMBER_EOFY_RSV +++', '++++', p_log_level_rec => p_log_level_rec);
6391 fa_debug_pkg.add(l_calling_fn, 'Copied p_track_member_table to bakcup area', '++++', p_log_level_rec => p_log_level_rec);
6392 end if;
6393
6394 end if; -- nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE'
6395 -- End of HHIRAGA
6396
6397 if (p_log_level_rec.statement_level) then
6398 fa_debug_pkg.add(' '||l_calling_fn, 'ytd_deprn', l_asset_deprn_rec.ytd_deprn, p_log_level_rec => p_log_level_rec);
6399 fa_debug_pkg.add(' '||l_calling_fn, 'deprn_reserve', l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
6400 end if;
6401
6402 --tk_util.debug('l_adjusted_ind: '||to_char(l_adjusted_ind));
6403 l_bs_ind := l_bs_ind + l_adjusted_ind;
6404
6405 else
6406
6407 l_asset_deprn_rec.ytd_deprn := fa_amort_pvt.t_ytd_deprn(i);
6408 l_asset_deprn_rec.deprn_reserve := fa_amort_pvt.t_deprn_reserve(i);
6409 l_asset_deprn_rec.bonus_ytd_deprn := fa_amort_pvt.t_bonus_ytd_deprn(i);
6410 l_asset_deprn_rec.bonus_deprn_reserve := fa_amort_pvt.t_bonus_deprn_reserve(i);
6411
6412 l_asset_deprn_rec.ytd_impairment := fa_amort_pvt.t_ytd_impairment(i);
6413 l_asset_deprn_rec.impairment_reserve := fa_amort_pvt.t_impairment_reserve(i);
6414
6415
6416 if (p_log_level_rec.statement_level) then
6417 fa_debug_pkg.add(' '||l_calling_fn, 'Depreciation is ', 'SKIPPED' , p_log_level_rec => p_log_level_rec);
6418 end if;
6419
6420 end if; -- (l_period_rec.period_counter <> fa_amort_pvt.t_period_counter(i)) or
6421
6422 else
6423 if (i = 1) then
6424 fa_amort_pvt.t_ytd_deprn(i) := fa_amort_pvt.t_deprn_amount(i);
6425 fa_amort_pvt.t_deprn_reserve(i) := fa_amort_pvt.t_deprn_amount(i) +
6426 fa_amort_pvt.t_reserve_adjustment_amount(i);
6427 fa_amort_pvt.t_bonus_ytd_deprn(i) := 0;
6428 fa_amort_pvt.t_bonus_deprn_reserve(i) := 0;
6429 fa_amort_pvt.t_ytd_impairment(i) := 0;
6430 fa_amort_pvt.t_impairment_reserve(i) := 0;
6431 fa_amort_pvt.t_ltd_production(i) := 0;
6432 fa_amort_pvt.t_ytd_production(i) := 0;
6433 fa_amort_pvt.t_ytd_reval_deprn_expense(i) := 0;
6434 fa_amort_pvt.t_reval_reserve(i) := 0;
6435 else
6439 fa_amort_pvt.t_ytd_impairment(i) := 0;
6436 if (fa_amort_pvt.t_period_num(i) = 1) then
6437 fa_amort_pvt.t_ytd_deprn(i) := fa_amort_pvt.t_deprn_amount(i);
6438 fa_amort_pvt.t_bonus_ytd_deprn(i) := 0;
6440 fa_amort_pvt.t_ytd_production(i) := 0;
6441 fa_amort_pvt.t_ytd_reval_deprn_expense(i) := 0;
6442 else
6443 fa_amort_pvt.t_ytd_deprn(i) := fa_amort_pvt.t_deprn_amount(i) +
6444 fa_amort_pvt.t_ytd_deprn(i - 1);
6445 fa_amort_pvt.t_bonus_ytd_deprn(i) := fa_amort_pvt.t_bonus_ytd_deprn(i - 1);
6446 fa_amort_pvt.t_ytd_impairment(i) := fa_amort_pvt.t_ytd_impairment(i - 1);
6447 fa_amort_pvt.t_ytd_production(i) := fa_amort_pvt.t_ltd_production(i - 1);
6448 fa_amort_pvt.t_ytd_reval_deprn_expense(i) := fa_amort_pvt.t_ytd_reval_deprn_expense(i - 1);
6449
6450 end if;
6451 --tk_util.debug('fa_amort_pvt.t_deprn_reserve(i - 1): '||to_char(fa_amort_pvt.t_deprn_reserve(i - 1)));
6452 fa_amort_pvt.t_deprn_reserve(i) := fa_amort_pvt.t_deprn_amount(i) +
6453 fa_amort_pvt.t_reserve_adjustment_amount(i) +
6454 fa_amort_pvt.t_deprn_reserve(i - 1);
6455 fa_amort_pvt.t_bonus_deprn_reserve(i) := fa_amort_pvt.t_bonus_deprn_reserve(i - 1);
6456 fa_amort_pvt.t_impairment_reserve(i) := fa_amort_pvt.t_impairment_reserve(i - 1);
6457 fa_amort_pvt.t_ltd_production(i) := fa_amort_pvt.t_ltd_production(i - 1);
6458 fa_amort_pvt.t_reval_reserve(i) := fa_amort_pvt.t_reval_reserve(i - 1);
6459
6460 end if;
6461
6462 --
6463 -- This is necessary to call FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS.
6464 --
6465 l_asset_fin_rec_new.cost := fa_amort_pvt.t_cost(i);
6466 l_asset_fin_rec_new.salvage_value := fa_amort_pvt.t_salvage_value(i);
6467 l_asset_fin_rec_new.recoverable_cost := fa_amort_pvt.t_recoverable_cost(i);
6468 l_asset_fin_rec_new.deprn_method_code := fa_amort_pvt.t_deprn_method_code(i);
6469 l_asset_fin_rec_new.life_in_months := fa_amort_pvt.t_life_in_months(i);
6470 l_asset_fin_rec_new.group_asset_id := fa_amort_pvt.t_group_asset_id(i);
6471 l_asset_fin_rec_new.depreciate_flag := fa_amort_pvt.t_depreciate_flag(i);
6472 l_asset_fin_rec_new.eofy_reserve := fa_amort_pvt.t_eofy_reserve(i);
6473 l_asset_fin_rec_new.rate_adjustment_factor := fa_amort_pvt.t_rate_adjustment_factor(i);
6474 l_asset_fin_rec_new.formula_factor := fa_amort_pvt.t_formula_factor(i);
6475 l_asset_fin_rec_new.super_group_id := fa_amort_pvt.t_super_group_id(i);
6476
6477 end if; -- (l_bs_ind <= i)
6478
6479 END LOOP; -- FOR i IN 1..l_count LOOP
6480
6481 --
6482 -- Need to reset eofy and eop rec cost and salvage value
6483 -- for deprn basis call
6484 --
6485 if (l_count > fa_cache_pkg.fazcct_record.number_per_fiscal_year) then
6486 l_eofy_rec_cost := fa_amort_pvt.t_recoverable_cost(l_count - fa_amort_pvt.t_period_num(l_count));
6487 l_eofy_sal_val := fa_amort_pvt.t_salvage_value(l_count - fa_amort_pvt.t_period_num(l_count));
6488
6489 if (l_count > 1) then
6490 l_eop_rec_cost := fa_amort_pvt.t_recoverable_cost(l_count - 1);
6491 l_eop_sal_val := fa_amort_pvt.t_salvage_value(l_count - 1);
6492 end if;
6493 end if;
6494
6495 -- Call Depreciable Basis Rule for Formula/NBV Basis
6496 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
6497 (p_event_type => 'AMORT_ADJ3',
6498 p_asset_fin_rec_new => l_asset_fin_rec_new,
6499 p_asset_fin_rec_old => l_asset_fin_rec_new,
6500 p_asset_hdr_rec => p_asset_hdr_rec,
6501 p_asset_type_rec => p_asset_type_rec,
6502 p_asset_deprn_rec => l_asset_deprn_rec,
6503 p_trans_rec => p_trans_rec,
6504 p_period_rec => l_period_rec,
6505 p_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
6506 p_current_total_rsv => l_asset_deprn_rec.deprn_reserve,
6507 p_adj_reserve => p_asset_deprn_rec_adj.deprn_reserve,
6508 p_current_rsv => l_asset_deprn_rec.deprn_reserve -
6509 l_asset_deprn_rec.bonus_deprn_reserve -
6510 nvl(l_asset_deprn_rec.impairment_reserve,0),
6511 p_current_total_ytd => l_asset_deprn_rec.ytd_deprn,
6512 p_hyp_basis => l_asset_fin_rec_new.adjusted_cost,
6513 p_hyp_total_rsv => l_asset_deprn_rec_raf.deprn_reserve,
6514 p_hyp_rsv => l_asset_deprn_rec_raf.deprn_reserve -
6515 l_asset_deprn_rec_raf.bonus_deprn_reserve -
6516 nvl(l_asset_deprn_rec_raf.impairment_reserve,0),
6517 p_eofy_recoverable_cost => l_eofy_rec_cost,
6518 p_eop_recoverable_cost => l_eop_rec_cost,
6519 p_eofy_salvage_value => l_eofy_sal_val,
6520 p_eop_salvage_value => l_eop_sal_val,
6521 p_mrc_sob_type_code => p_mrc_sob_type_code,
6522 p_used_by_adjustment => 'ADJUSTMENT',
6523 px_new_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
6527 if (p_log_level_rec.statement_level) then
6524 px_new_raf => l_asset_fin_rec_new.rate_adjustment_factor,
6525 px_new_formula_factor => l_asset_fin_rec_new.formula_factor,
6526 p_log_level_rec => p_log_level_rec)) then
6528 fa_debug_pkg.add(l_calling_fn, 'Error calling',
6529 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
6530 end if;
6531
6532 raise calc_failed;
6533 end if; -- (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
6534
6535 if (p_log_level_rec.statement_level) then
6536 fa_debug_pkg.add(l_calling_fn, 'Returned values from ',
6537 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS AMORT_ADJ3', p_log_level_rec => p_log_level_rec);
6538 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_cost',
6539 l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
6540 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.rate_adjustment_factor',
6541 l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
6542 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.formula_factor',
6543 l_asset_fin_rec_new.formula_factor, p_log_level_rec => p_log_level_rec);
6544 end if;
6545
6546 px_asset_fin_rec_new.cost := fa_amort_pvt.t_cost(l_count);
6547 px_asset_fin_rec_new.recoverable_cost:= fa_amort_pvt.t_recoverable_cost(l_count);
6548 px_asset_fin_rec_new.adjusted_recoverable_cost:=
6549 fa_amort_pvt.t_adjusted_recoverable_cost(l_count);
6550 px_asset_fin_rec_new.salvage_value := fa_amort_pvt.t_salvage_value(l_count);
6551 px_asset_fin_rec_new.allowed_deprn_limit_amount :=
6552 fa_amort_pvt.t_allowed_deprn_limit_amount(l_count);
6553 px_asset_fin_rec_new.percent_salvage_value := fa_amort_pvt.t_percent_salvage_value(l_count);
6557 -- px_asset_fin_rec_new.unrevalued_cost := fa_amort_pvt.t_unrevalued_cost(l_count);
6554 px_asset_fin_rec_new.allowed_deprn_limit := fa_amort_pvt.t_allowed_deprn_limit(l_count);
6555
6556 -- For now, this won't be touched.
6558
6559 px_asset_fin_rec_new.production_capacity := fa_amort_pvt.t_production_capacity(l_count);
6560 px_asset_fin_rec_new.reval_ceiling := fa_amort_pvt.t_reval_ceiling(l_count);
6561 -- px_asset_fin_rec_new.adjusted_cost := fa_amort_pvt.t_adjusted_cost(l_count);
6562 px_asset_fin_rec_new.adjusted_cost := l_asset_fin_rec_new.adjusted_cost;
6563 -- px_asset_fin_rec_new.rate_adjustment_factor := fa_amort_pvt.t_rate_adjustment_factor(l_count);
6564 px_asset_fin_rec_new.rate_adjustment_factor := l_asset_fin_rec_new.rate_adjustment_factor;
6565 px_asset_fin_rec_new.reval_amortization_basis :=
6566 fa_amort_pvt.t_reval_amortization_basis(l_count);
6567 px_asset_fin_rec_new.adjusted_capacity := fa_amort_pvt.t_adjusted_capacity(l_count);
6568 -- px_asset_fin_rec_new.formula_factor := fa_amort_pvt.t_formula_factor(l_count);
6569 px_asset_fin_rec_new.formula_factor := l_asset_fin_rec_new.formula_factor;
6570 px_asset_fin_rec_new.eofy_reserve := fa_amort_pvt.t_eofy_reserve(l_count);
6571
6572 --
6573 -- When returning catch up expenses, amounts in p_asset_deprn_rec_adj need to be
6574 -- excluded because it was included at beginning to find correct catchup but
6575 -- these amounts cannot be expensed in this period.
6576 --
6577 -- if (px_asset_fin_rec_new.depreciate_flag = 'NO') or
6578 -- (px_asset_fin_rec_new.disabled_flag = 'Y') then
6579 if (px_asset_fin_rec_new.disabled_flag = 'Y') then
6580 x_deprn_expense := 0;
6581 x_bonus_expense := 0;
6582 x_impairment_expense := 0;
6583 else
6584 --Bug8425794 / 8244128: In case of reinstatement, p_asset_deprn_rec_adj.deprn_reserve
6585 -- is only used to back out reserve retired from fabs.rsv_adj column
6586 -- but when calculating difference between old reserve and new reserve
6587 -- should not be used(double counted).
6588 if (l_asset_deprn_rec.deprn_reserve = p_asset_deprn_rec.deprn_reserve) or (p_trans_rec.transaction_key = 'MS') then
6589 x_deprn_expense := l_asset_deprn_rec.deprn_reserve - p_asset_deprn_rec.deprn_reserve;
6590 x_bonus_expense := l_asset_deprn_rec.bonus_deprn_reserve - p_asset_deprn_rec.bonus_deprn_reserve;
6591 elsif (p_reclass_src_dest = 'SOURCE') then
6592 x_deprn_expense := l_asset_deprn_rec.deprn_reserve - p_asset_deprn_rec.deprn_reserve - x_deprn_reserve;
6593 x_bonus_expense := l_asset_deprn_rec.bonus_deprn_reserve - p_asset_deprn_rec.bonus_deprn_reserve - nvl(p_asset_deprn_rec_adj.bonus_deprn_reserve, 0);
6594 else
6595 x_deprn_expense := l_asset_deprn_rec.deprn_reserve - p_asset_deprn_rec.deprn_reserve - x_deprn_reserve - nvl(p_asset_deprn_rec_adj.deprn_reserve, 0);
6596 x_bonus_expense := l_asset_deprn_rec.bonus_deprn_reserve - p_asset_deprn_rec.bonus_deprn_reserve - nvl(p_asset_deprn_rec_adj.bonus_deprn_reserve, 0);
6597 end if;
6598 x_impairment_expense := nvl(l_asset_deprn_rec.impairment_reserve,0) - nvl(p_asset_deprn_rec.impairment_reserve,0) - nvl(p_asset_deprn_rec_adj.impairment_reserve,0);
6599 end if;
6600
6601 if (p_log_level_rec.statement_level) then
6602 fa_debug_pkg.add(l_calling_fn, 'x_deprn_reserve', x_deprn_reserve, p_log_level_rec => p_log_level_rec);
6603 fa_debug_pkg.add(l_calling_fn, 'l_asset_deprn_rec.deprn_reserve', l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
6604 fa_debug_pkg.add(l_calling_fn, 'p_asset_deprn_rec.deprn_reserve', p_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
6605 fa_debug_pkg.add(l_calling_fn, 'p_asset_deprn_rec_adj.deprn_reserve', p_asset_deprn_rec_adj.deprn_reserve, p_log_level_rec => p_log_level_rec);
6606 fa_debug_pkg.add(l_calling_fn, 'fa_amort_pvt.t_deprn_reserve('||to_char(l_count)||')',
6607 fa_amort_pvt.t_deprn_reserve(l_count));
6608 end if;
6609
6610 -- HHIRAGA
6611 --+++++++++ Call member level maintenance for tracking +++++++
6612 if nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
6613
6614 if not FA_TRACK_MEMBER_PVT.update_member_books(p_trans_rec=> p_trans_rec,
6615 p_asset_hdr_rec => p_asset_hdr_rec,
6616 p_dpr_in => l_dpr_in,
6617 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
6618 if (p_log_level_rec.statement_level) then
6619 fa_debug_pkg.add(l_calling_fn, 'Error calling',
6620 'FA_TRACK_MEMBER_PVT.update_member_books', p_log_level_rec => p_log_level_rec);
6621 end if;
6622
6623 raise calc_failed;
6624 end if;
6625
6626 fa_track_member_pvt.p_track_member_eofy_table.delete;
6627
6628 if (p_log_level_rec.statement_level) then
6629 fa_debug_pkg.add(l_calling_fn, 'fa_track_member_pvt.p_track_member_eofy_table',
6630 'deleted', p_log_level_rec => p_log_level_rec);
6631 end if;
6632
6633 if (p_log_level_rec.statement_level) then
6634 for i in 1.. fa_track_member_pvt.p_track_member_table.count loop
6635 fa_debug_pkg.add('HH DEBUG**', 'all records in p_track_member_table', i);
6636 if not fa_track_member_pvt.display_debug_message2(i, 'HH DEBUG**', p_log_leveL_rec) then
6637 null;
6638 end if;
6639 end loop;
6640 end if;
6641
6642 end if; -- nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE'
6643 -- End of HHIRAGA
6644 -- HHIRAGA
6645 --+++++++++ Call member level maintenance for tracking +++++++
6646 if nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
6647
6648 if not FA_TRACK_MEMBER_PVT.create_update_bs_table(p_trans_rec => p_trans_rec,
6652 p_sob_id => p_asset_hdr_rec.set_of_books_id, --Bug 8941132
6649 p_book_type_code => p_asset_hdr_rec.book_type_code,
6650 p_group_asset_id => p_asset_hdr_rec.asset_id,
6651 p_mrc_sob_type_code => p_mrc_sob_type_code, --Bug 8941132
6653 p_calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec) then
6654 if (p_log_level_rec.statement_level) then
6655 fa_debug_pkg.add(l_calling_fn, 'Error calling',
6656 'FA_TRACK_MEMBER_PVT.create_update_bs_table', p_log_level_rec => p_log_level_rec);
6657 end if;
6658
6659 raise calc_failed;
6660 end if;
6661
6662 end if; -- nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE'
6663 -- End of HHIRAGA
6664
6665 if (p_update_books_summary) then
6666 --
6667 -- Update FA_BOOKS_SUMMARY
6668 --
6669 --tk_util.debug('period# : cost: chcost: msal: exp: ytd: rsv: rsv');
6670 --tk_util.debug('period# : cost: adjcost: exp: eofy: rsvaj: rsv: dlmt: arec');
6671 /*
6672 for i in fa_amort_pvt.t_cost.FIRST..fa_amort_pvt.t_cost.LAST loop
6673 --tk_util.debug(rpad(to_char(fa_amort_pvt.t_period_counter(i)), 8, ' ')||':'||
6674 lpad(to_char(fa_amort_pvt.t_cost(i)), 10, ' ')||':'||
6675 -- lpad(substrb(to_char(fa_amort_pvt.t_rate_adjustment_factor(i)), 1, 10), 10, ' ')||':'||
6676 -- fa_amort_pvt.t_reset_adjusted_cost_flag(i)||':'||
6677 -- lpad(to_char(fa_amort_pvt.t_change_in_cost(i)), 10, ' ')||':'||
6678 lpad(to_char(fa_amort_pvt.t_adjusted_cost(i)), 10, ' ')||':'||
6679 -- lpad(to_char(fa_amort_pvt.t_salvage_value(i)), 10, ' ')||':'||
6680 -- lpad(to_char(fa_amort_pvt.t_member_salvage_value(i)), 10, ' ')||':'||
6681 -- lpad(to_char(fa_amort_pvt.t_deprn_adjustment_amount(i)), 10, ' ')||':'||
6682 lpad(to_char(fa_amort_pvt.t_deprn_amount(i)), 10, ' ')||':'||
6683 lpad(to_char(fa_amort_pvt.t_ytd_deprn(i)), 10, ' ')||':'||
6684 -- lpad(to_char(fa_amort_pvt.t_eofy_reserve(i)), 10, ' ')||':'||
6685 lpad(to_char(fa_amort_pvt.t_reserve_adjustment_amount(i)), 10, ' ')||':'||
6686 lpad(to_char(fa_amort_pvt.t_deprn_reserve(i)), 10, ' ')||':'||
6687 -- lpad(nvl(to_char(fa_amort_pvt.t_allowed_deprn_limit_amount(i)), 'null'), 5, ' ')||':'||
6688 lpad(to_char(fa_amort_pvt.t_adjusted_recoverable_cost(i)), 10, ' ')
6689 );
6690 end loop;
6691 */
6692 if (p_mrc_sob_type_code = 'R') then
6693 FORALL i in l_temp_ind..fa_amort_pvt.t_cost.LAST
6694 UPDATE FA_MC_BOOKS_SUMMARY
6695 SET RESET_ADJUSTED_COST_FLAG = fa_amort_pvt.t_reset_adjusted_cost_flag(i)
6696 , CHANGE_IN_COST = fa_amort_pvt.t_change_in_cost(i)
6697 , CHANGE_IN_CIP_COST = fa_amort_pvt.t_change_in_cip_cost(i)
6698 , COST = fa_amort_pvt.t_cost(i)
6699 , CIP_COST = fa_amort_pvt.t_cip_cost(i)
6700 , SALVAGE_TYPE = fa_amort_pvt.t_salvage_type(i)
6701 , PERCENT_SALVAGE_VALUE = fa_amort_pvt.t_percent_salvage_value(i)
6702 , SALVAGE_VALUE = fa_amort_pvt.t_salvage_value(i)
6703 , MEMBER_SALVAGE_VALUE = fa_amort_pvt.t_member_salvage_value(i)
6704 , RECOVERABLE_COST = fa_amort_pvt.t_recoverable_cost(i)
6705 , DEPRN_LIMIT_TYPE = fa_amort_pvt.t_deprn_limit_type(i)
6706 , ALLOWED_DEPRN_LIMIT = fa_amort_pvt.t_allowed_deprn_limit(i)
6707 , ALLOWED_DEPRN_LIMIT_AMOUNT = fa_amort_pvt.t_allowed_deprn_limit_amount(i)
6708 , MEMBER_DEPRN_LIMIT_AMOUNT = fa_amort_pvt.t_member_deprn_limit_amount(i)
6709 , ADJUSTED_RECOVERABLE_COST = fa_amort_pvt.t_adjusted_recoverable_cost(i)
6710 , ADJUSTED_COST = fa_amort_pvt.t_adjusted_cost(i)
6711 , DEPRECIATE_FLAG = fa_amort_pvt.t_depreciate_flag(i)
6712 , DEPRN_METHOD_CODE = fa_amort_pvt.t_deprn_method_code(i)
6713 , LIFE_IN_MONTHS = fa_amort_pvt.t_life_in_months(i)
6714 , RATE_ADJUSTMENT_FACTOR = fa_amort_pvt.t_rate_adjustment_factor(i)
6715 , ADJUSTED_RATE = fa_amort_pvt.t_adjusted_rate(i)
6716 , BONUS_RULE = fa_amort_pvt.t_bonus_rule(i)
6717 , ADJUSTED_CAPACITY = fa_amort_pvt.t_adjusted_capacity(i)
6718 , PRODUCTION_CAPACITY = fa_amort_pvt.t_production_capacity(i)
6719 , UNIT_OF_MEASURE = fa_amort_pvt.t_unit_of_measure(i)
6720 , REMAINING_LIFE1 = fa_amort_pvt.t_remaining_life1(i)
6721 , REMAINING_LIFE2 = fa_amort_pvt.t_remaining_life2(i)
6722 , FORMULA_FACTOR = fa_amort_pvt.t_formula_factor(i)
6723 , UNREVALUED_COST = fa_amort_pvt.t_unrevalued_cost(i)
6724 , REVAL_AMORTIZATION_BASIS = fa_amort_pvt.t_reval_amortization_basis(i)
6725 , REVAL_CEILING = fa_amort_pvt.t_reval_ceiling(i)
6726 , CEILING_NAME = fa_amort_pvt.t_ceiling_name(i)
6727 , EOFY_ADJ_COST = fa_amort_pvt.t_eofy_adj_cost(i)
6728 , EOFY_FORMULA_FACTOR = fa_amort_pvt.t_eofy_formula_factor(i)
6729 , EOFY_RESERVE = fa_amort_pvt.t_eofy_reserve(i)
6730 , EOP_ADJ_COST = fa_amort_pvt.t_eop_adj_cost(i)
6731 , EOP_FORMULA_FACTOR = fa_amort_pvt.t_eop_formula_factor(i)
6735 , OVER_DEPRECIATE_OPTION = fa_amort_pvt.t_over_depreciate_option(i)
6732 , SHORT_FISCAL_YEAR_FLAG = fa_amort_pvt.t_short_fiscal_year_flag(i)
6733 , GROUP_ASSET_ID = fa_amort_pvt.t_group_asset_id(i)
6734 , SUPER_GROUP_ID = fa_amort_pvt.t_super_group_id(i)
6736 , DEPRN_AMOUNT = fa_amort_pvt.t_deprn_amount(i)
6737 , YTD_DEPRN = fa_amort_pvt.t_ytd_deprn(i)
6738 , DEPRN_RESERVE = fa_amort_pvt.t_deprn_reserve(i)
6739 , BONUS_DEPRN_AMOUNT = fa_amort_pvt.t_bonus_deprn_amount(i)
6740 , BONUS_YTD_DEPRN = fa_amort_pvt.t_bonus_ytd_deprn(i)
6741 , BONUS_DEPRN_RESERVE = fa_amort_pvt.t_bonus_deprn_reserve(i)
6742 , BONUS_RATE = fa_amort_pvt.t_bonus_rate(i)
6743 , IMPAIRMENT_AMOUNT = fa_amort_pvt.t_impairment_amount(i)
6744 , YTD_IMPAIRMENT = fa_amort_pvt.t_ytd_impairment(i)
6745 , impairment_reserve = fa_amort_pvt.t_impairment_reserve(i)
6746 , LTD_PRODUCTION = fa_amort_pvt.t_ltd_production(i)
6747 , YTD_PRODUCTION = fa_amort_pvt.t_ytd_production(i)
6748 , PRODUCTION = fa_amort_pvt.t_production(i)
6749 , REVAL_AMORTIZATION = fa_amort_pvt.t_reval_amortization(i)
6750 , REVAL_DEPRN_EXPENSE = fa_amort_pvt.t_reval_deprn_expense(i)
6751 , REVAL_RESERVE = fa_amort_pvt.t_reval_reserve(i)
6752 , YTD_REVAL_DEPRN_EXPENSE = fa_amort_pvt.t_ytd_reval_deprn_expense(i)
6753 , DEPRN_OVERRIDE_FLAG = fa_amort_pvt.t_deprn_override_flag(i)
6754 , SYSTEM_DEPRN_AMOUNT = fa_amort_pvt.t_system_deprn_amount(i)
6755 , SYSTEM_BONUS_DEPRN_AMOUNT = fa_amort_pvt.t_system_bonus_deprn_amount(i)
6756 , YTD_PROCEEDS_OF_SALE = fa_amort_pvt.t_ytd_proceeds_of_sale(i)
6757 , LTD_PROCEEDS_OF_SALE = fa_amort_pvt.t_ltd_proceeds_of_sale(i)
6758 , YTD_COST_OF_REMOVAL = fa_amort_pvt.t_ytd_cost_of_removal(i)
6759 , LTD_COST_OF_REMOVAL = fa_amort_pvt.t_ltd_cost_of_removal(i)
6760 , DEPRN_ADJUSTMENT_AMOUNT = fa_amort_pvt.t_deprn_adjustment_amount(i)
6761 , EXPENSE_ADJUSTMENT_AMOUNT = fa_amort_pvt.t_expense_adjustment_amount(i)
6762 , RESERVE_ADJUSTMENT_AMOUNT = fa_amort_pvt.t_reserve_adjustment_amount(i)
6763 , CHANGE_IN_EOFY_RESERVE = fa_amort_pvt.t_change_in_eofy_reserve(i)
6764 , LAST_UPDATE_DATE = p_trans_rec.who_info.last_update_date
6765 , LAST_UPDATED_BY = p_trans_rec.who_info.last_updated_by
6766 , LAST_UPDATE_LOGIN = p_trans_rec.who_info.last_update_login
6767 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
6768 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
6769 AND PERIOD_COUNTER = fa_amort_pvt.t_period_counter(i)
6770 AND SET_OF_BOOKS_ID = p_asset_hdr_rec.set_of_books_id;
6771
6772 else
6773 FORALL i in l_temp_ind..fa_amort_pvt.t_cost.LAST
6774 UPDATE FA_BOOKS_SUMMARY
6775 SET RESET_ADJUSTED_COST_FLAG = fa_amort_pvt.t_reset_adjusted_cost_flag(i)
6776 , CHANGE_IN_COST = fa_amort_pvt.t_change_in_cost(i)
6777 , CHANGE_IN_CIP_COST = fa_amort_pvt.t_change_in_cip_cost(i)
6778 , COST = fa_amort_pvt.t_cost(i)
6779 , CIP_COST = fa_amort_pvt.t_cip_cost(i)
6780 , SALVAGE_TYPE = fa_amort_pvt.t_salvage_type(i)
6781 , PERCENT_SALVAGE_VALUE = fa_amort_pvt.t_percent_salvage_value(i)
6782 , SALVAGE_VALUE = fa_amort_pvt.t_salvage_value(i)
6783 , MEMBER_SALVAGE_VALUE = fa_amort_pvt.t_member_salvage_value(i)
6784 , RECOVERABLE_COST = fa_amort_pvt.t_recoverable_cost(i)
6785 , DEPRN_LIMIT_TYPE = fa_amort_pvt.t_deprn_limit_type(i)
6786 , ALLOWED_DEPRN_LIMIT = fa_amort_pvt.t_allowed_deprn_limit(i)
6787 , ALLOWED_DEPRN_LIMIT_AMOUNT = fa_amort_pvt.t_allowed_deprn_limit_amount(i)
6788 , MEMBER_DEPRN_LIMIT_AMOUNT = fa_amort_pvt.t_member_deprn_limit_amount(i)
6789 , ADJUSTED_RECOVERABLE_COST = fa_amort_pvt.t_adjusted_recoverable_cost(i)
6790 , ADJUSTED_COST = fa_amort_pvt.t_adjusted_cost(i)
6791 , DEPRECIATE_FLAG = fa_amort_pvt.t_depreciate_flag(i)
6792 , DEPRN_METHOD_CODE = fa_amort_pvt.t_deprn_method_code(i)
6793 , LIFE_IN_MONTHS = fa_amort_pvt.t_life_in_months(i)
6794 , RATE_ADJUSTMENT_FACTOR = fa_amort_pvt.t_rate_adjustment_factor(i)
6795 , ADJUSTED_RATE = fa_amort_pvt.t_adjusted_rate(i)
6796 , BONUS_RULE = fa_amort_pvt.t_bonus_rule(i)
6797 , ADJUSTED_CAPACITY = fa_amort_pvt.t_adjusted_capacity(i)
6798 , PRODUCTION_CAPACITY = fa_amort_pvt.t_production_capacity(i)
6799 , UNIT_OF_MEASURE = fa_amort_pvt.t_unit_of_measure(i)
6800 , REMAINING_LIFE1 = fa_amort_pvt.t_remaining_life1(i)
6801 , REMAINING_LIFE2 = fa_amort_pvt.t_remaining_life2(i)
6802 , FORMULA_FACTOR = fa_amort_pvt.t_formula_factor(i)
6803 , UNREVALUED_COST = fa_amort_pvt.t_unrevalued_cost(i)
6804 , REVAL_AMORTIZATION_BASIS = fa_amort_pvt.t_reval_amortization_basis(i)
6805 , REVAL_CEILING = fa_amort_pvt.t_reval_ceiling(i)
6809 , EOFY_RESERVE = fa_amort_pvt.t_eofy_reserve(i)
6806 , CEILING_NAME = fa_amort_pvt.t_ceiling_name(i)
6807 , EOFY_ADJ_COST = fa_amort_pvt.t_eofy_adj_cost(i)
6808 , EOFY_FORMULA_FACTOR = fa_amort_pvt.t_eofy_formula_factor(i)
6810 , EOP_ADJ_COST = fa_amort_pvt.t_eop_adj_cost(i)
6811 , EOP_FORMULA_FACTOR = fa_amort_pvt.t_eop_formula_factor(i)
6812 , SHORT_FISCAL_YEAR_FLAG = fa_amort_pvt.t_short_fiscal_year_flag(i)
6813 , GROUP_ASSET_ID = fa_amort_pvt.t_group_asset_id(i)
6814 , SUPER_GROUP_ID = fa_amort_pvt.t_super_group_id(i)
6815 , OVER_DEPRECIATE_OPTION = fa_amort_pvt.t_over_depreciate_option(i)
6816 , DEPRN_AMOUNT = fa_amort_pvt.t_deprn_amount(i)
6817 , YTD_DEPRN = fa_amort_pvt.t_ytd_deprn(i)
6818 , DEPRN_RESERVE = fa_amort_pvt.t_deprn_reserve(i)
6819 , BONUS_DEPRN_AMOUNT = fa_amort_pvt.t_bonus_deprn_amount(i)
6820 , BONUS_YTD_DEPRN = fa_amort_pvt.t_bonus_ytd_deprn(i)
6821 , BONUS_DEPRN_RESERVE = fa_amort_pvt.t_bonus_deprn_reserve(i)
6822 , BONUS_RATE = fa_amort_pvt.t_bonus_rate(i)
6823 , IMPAIRMENT_AMOUNT = fa_amort_pvt.t_impairment_amount(i)
6824 , YTD_IMPAIRMENT = fa_amort_pvt.t_ytd_impairment(i)
6825 , impairment_reserve = fa_amort_pvt.t_impairment_reserve(i)
6826 , LTD_PRODUCTION = fa_amort_pvt.t_ltd_production(i)
6827 , YTD_PRODUCTION = fa_amort_pvt.t_ytd_production(i)
6828 , PRODUCTION = fa_amort_pvt.t_production(i)
6829 , REVAL_AMORTIZATION = fa_amort_pvt.t_reval_amortization(i)
6830 , REVAL_DEPRN_EXPENSE = fa_amort_pvt.t_reval_deprn_expense(i)
6831 , REVAL_RESERVE = fa_amort_pvt.t_reval_reserve(i)
6832 , YTD_REVAL_DEPRN_EXPENSE = fa_amort_pvt.t_ytd_reval_deprn_expense(i)
6833 , DEPRN_OVERRIDE_FLAG = fa_amort_pvt.t_deprn_override_flag(i)
6834 , SYSTEM_DEPRN_AMOUNT = fa_amort_pvt.t_system_deprn_amount(i)
6835 , SYSTEM_BONUS_DEPRN_AMOUNT = fa_amort_pvt.t_system_bonus_deprn_amount(i)
6836 , YTD_PROCEEDS_OF_SALE = fa_amort_pvt.t_ytd_proceeds_of_sale(i)
6837 , LTD_PROCEEDS_OF_SALE = fa_amort_pvt.t_ltd_proceeds_of_sale(i)
6838 , YTD_COST_OF_REMOVAL = fa_amort_pvt.t_ytd_cost_of_removal(i)
6839 , LTD_COST_OF_REMOVAL = fa_amort_pvt.t_ltd_cost_of_removal(i)
6840 , DEPRN_ADJUSTMENT_AMOUNT = fa_amort_pvt.t_deprn_adjustment_amount(i)
6841 , EXPENSE_ADJUSTMENT_AMOUNT = fa_amort_pvt.t_expense_adjustment_amount(i)
6842 , RESERVE_ADJUSTMENT_AMOUNT = fa_amort_pvt.t_reserve_adjustment_amount(i)
6843 , CHANGE_IN_EOFY_RESERVE = fa_amort_pvt.t_change_in_eofy_reserve(i)
6844 , LAST_UPDATE_DATE = p_trans_rec.who_info.last_update_date
6845 , LAST_UPDATED_BY = p_trans_rec.who_info.last_updated_by
6846 , LAST_UPDATE_LOGIN = p_trans_rec.who_info.last_update_login
6847 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
6848 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
6849 AND PERIOD_COUNTER = fa_amort_pvt.t_period_counter(i);
6850 end if;
6851
6852 end if; -- (p_update_books_summary)
6853
6854 --
6855 -- Initialize global variables
6856 --
6857 InitGlobeVariables;
6858
6859 if (p_log_level_rec.statement_level) then
6860 fa_debug_pkg.add(l_calling_fn, 'End',
6861 x_deprn_expense||':'||x_bonus_expense||':'||x_deprn_reserve, p_log_level_rec => p_log_level_rec);
6862 end if;
6863
6864 return true;
6865
6866 EXCEPTION
6867 WHEN invalid_trx_to_overlap THEN
6868 --
6869 -- Initialize global variables
6870 --
6871 InitGlobeVariables;
6872
6873 if (p_log_level_rec.statement_level) then
6874 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'invalid_trx_to_overlap', p_log_level_rec => p_log_level_rec);
6875 end if;
6876
6877 fa_srvr_msg.add_message(calling_fn => l_calling_fn,
6878 name => 'FA_INVALID_TRX_TO_OVERLAP', p_log_level_rec => p_log_level_rec);
6879 return false;
6880 WHEN calc_failed THEN
6881 --
6882 -- Initialize global variables
6883 --
6884 InitGlobeVariables;
6885
6886 if (p_log_level_rec.statement_level) then
6887 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'calc_failed', p_log_level_rec => p_log_level_rec);
6888 end if;
6889
6890 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
6891 return false;
6892
6893 WHEN OTHERS THEN
6894 --
6895 -- Initialize global variables
6896 --
6897 InitGlobeVariables;
6898
6899 if (p_log_level_rec.statement_level) then
6900 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
6901 end if;
6902
6903 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
6904 raise;
6905 END bsRecalculate;
6906
6907 --+==============================================================================
6908 -- Procedure: populate_fin_rec
6909 --
6910 -- This procedure popualte asset_fin_rec_adj in case it is not provided.
6911 --
6912 --+==============================================================================
6916 p_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type default null,
6913 PROCEDURE populate_fin_rec(
6914 p_trans_rec FA_API_TYPES.trans_rec_type,
6915 p_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type,
6917 p_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type,
6918 x_asset_fin_rec_adj OUT NOCOPY FA_API_TYPES.asset_fin_rec_type, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) IS
6919
6920 BEGIN
6921 /*
6922 if (nvl(p_asset_fin_rec_old.cost, 0) = nvl(p_asset_fin_rec_new.cost, 0) and
6923 p_asset_fin_rec_adj.cost is null) and
6924 (nvl(p_asset_fin_rec_old.cip_cost, 0) = nvl(p_asset_fin_rec_new.cip_cost, 0) and
6925 p_asset_fin_rec_adj.cip_cost is null) and
6926 (nvl(p_asset_fin_rec_old.salvage_type, 'NULL') = nvl(p_asset_fin_rec_new.salvage_type, 'NULL') and
6927 p_asset_fin_rec_adj.salvage_type is NULL) and
6928 (p_asset_fin_rec_adj.percent_salvage_value is null) and
6929 (nvl(p_asset_fin_rec_old.salvage_value, 0) = nvl(p_asset_fin_rec_new.salvage_value, 0) and
6930 p_asset_fin_rec_adj.salvage_value is null) and
6931 (p_asset_fin_rec_adj.recoverable_cost is null) and
6932 (p_asset_fin_rec_adj.adjusted_recoverable_cost is null) and
6933 (nvl(p_asset_fin_rec_old.deprn_limit_type, 'NULL') = nvl(p_asset_fin_rec_new.deprn_limit_type, 'NULL') and
6934 p_asset_fin_rec_adj.deprn_limit_type is null) and
6935 (p_asset_fin_rec_adj.allowed_deprn_limit is null) and
6936 (nvl(p_asset_fin_rec_old.allowed_deprn_limit_amount, 0) = nvl(p_asset_fin_rec_new.allowed_deprn_limit_amount, 0) and
6937 p_asset_fin_rec_adj.allowed_deprn_limit_amount is null) and
6938 (p_asset_fin_rec_adj.production_capacity is null) and
6939 (p_asset_fin_rec_adj.reval_ceiling is null) and
6940 (p_asset_fin_rec_adj.unrevalued_cost is null) and
6941 (p_asset_fin_rec_adj.deprn_method_code is null) and
6942 (p_asset_fin_rec_adj.basic_rate is null) and
6943 (p_asset_fin_rec_adj.adjusted_rate is null) and
6944 (p_asset_fin_rec_adj.life_in_months is null) and
6945 (p_asset_fin_rec_adj.date_placed_in_service is null) and
6946 (p_asset_fin_rec_adj.prorate_date is null) and
6947 (p_asset_fin_rec_adj.bonus_rule is null) then
6948 */
6949 if (p_asset_fin_rec_adj.cost is null) and
6950 (p_asset_fin_rec_adj.cip_cost is null) and
6951 (p_asset_fin_rec_adj.salvage_type is null) and
6952 (p_asset_fin_rec_adj.percent_salvage_value is null) and
6953 (p_asset_fin_rec_adj.salvage_value is null) and
6954 (p_asset_fin_rec_adj.recoverable_cost is null) and
6955 (p_asset_fin_rec_adj.adjusted_recoverable_cost is null) and
6956 (p_asset_fin_rec_adj.deprn_limit_type is null) and
6957 (p_asset_fin_rec_adj.allowed_deprn_limit is null) and
6958 (p_asset_fin_rec_adj.allowed_deprn_limit_amount is null) and
6959 (p_asset_fin_rec_adj.production_capacity is null) and
6960 (p_asset_fin_rec_adj.reval_ceiling is null) and
6961 (p_asset_fin_rec_adj.unrevalued_cost is null) and
6962 (p_asset_fin_rec_adj.deprn_method_code is null) and
6963 (p_asset_fin_rec_adj.basic_rate is null) and
6964 (p_asset_fin_rec_adj.adjusted_rate is null) and
6965 (p_asset_fin_rec_adj.life_in_months is null) and
6966 (p_asset_fin_rec_adj.date_placed_in_service is null) and
6967 (p_asset_fin_rec_adj.prorate_date is null) and
6968 (p_asset_fin_rec_adj.bonus_rule is null) then
6969 --tk_util.debug('Fin Adj is NULL!!!!!!');
6970 x_asset_fin_rec_adj := p_asset_fin_rec_new;
6971
6972 if p_trans_rec.transaction_type_code <> 'ADDITION' then
6973
6974 if (p_asset_fin_rec_adj.cost is not null) then
6975 x_asset_fin_rec_adj.cost :=p_asset_fin_rec_adj.cost;
6976 else
6977 x_asset_fin_rec_adj.cost := nvl(p_asset_fin_rec_new.cost, 0) -
6978 nvl(p_asset_fin_rec_old.cost, 0);
6979 end if;
6980
6981 if (p_asset_fin_rec_adj.cip_cost is not null) then
6982 x_asset_fin_rec_adj.cip_cost := p_asset_fin_rec_adj.cip_cost;
6983 elsif (p_asset_fin_rec_new.cip_cost is not null) then
6984 x_asset_fin_rec_adj.cip_cost := nvl(p_asset_fin_rec_new.cip_cost, 0) -
6985 nvl(p_asset_fin_rec_old.cip_cost, 0);
6986 end if;
6987
6988 if (p_asset_fin_rec_adj.salvage_value is not null) then
6989 x_asset_fin_rec_adj.salvage_value := p_asset_fin_rec_adj.salvage_value;
6990 elsif (p_asset_fin_rec_new.salvage_value is not null) then
6991 x_asset_fin_rec_adj.salvage_value := nvl(p_asset_fin_rec_new.salvage_value, 0) -
6992 nvl(p_asset_fin_rec_old.salvage_value, 0);
6993 end if;
6994
6995 if (p_asset_fin_rec_adj.recoverable_cost is not null) then
6996 x_asset_fin_rec_adj.recoverable_cost :=
6997 p_asset_fin_rec_adj.recoverable_cost;
6998 elsif (p_asset_fin_rec_new.recoverable_cost is not null) then
6999 x_asset_fin_rec_adj.recoverable_cost :=
7000 nvl(p_asset_fin_rec_new.recoverable_cost, 0) -
7001 nvl(p_asset_fin_rec_old.recoverable_cost, 0);
7002 end if;
7003
7004 if (p_asset_fin_rec_adj.adjusted_recoverable_cost is not null) then
7005 x_asset_fin_rec_adj.adjusted_recoverable_cost :=
7006 p_asset_fin_rec_adj.adjusted_recoverable_cost;
7007 elsif (p_asset_fin_rec_new.adjusted_recoverable_cost is not null) then
7008 x_asset_fin_rec_adj.adjusted_recoverable_cost :=
7009 nvl(p_asset_fin_rec_new.adjusted_recoverable_cost, 0) -
7010 nvl(p_asset_fin_rec_old.adjusted_recoverable_cost, 0);
7011 end if;
7012
7013 if (p_asset_fin_rec_adj.original_cost is not null) then
7017 nvl(p_asset_fin_rec_old.original_cost, 0);
7014 x_asset_fin_rec_adj.original_cost := p_asset_fin_rec_adj.original_cost;
7015 elsif (p_asset_fin_rec_new.original_cost is not null) then
7016 x_asset_fin_rec_adj.original_cost := nvl(p_asset_fin_rec_new.original_cost, 0) -
7018 end if;
7019
7020 if (p_asset_fin_rec_adj.production_capacity is not null) then
7021 x_asset_fin_rec_adj.production_capacity :=
7022 p_asset_fin_rec_adj.production_capacity;
7023 elsif (p_asset_fin_rec_new.production_capacity is not null) then
7024 x_asset_fin_rec_adj.production_capacity :=
7025 nvl(p_asset_fin_rec_new.production_capacity, 0) -
7026 nvl(p_asset_fin_rec_old.production_capacity, 0);
7027 end if;
7028
7029 if (p_asset_fin_rec_adj.reval_ceiling is not null) then
7030 x_asset_fin_rec_adj.reval_ceiling :=
7031 p_asset_fin_rec_adj.reval_ceiling;
7032 elsif (p_asset_fin_rec_new.reval_ceiling is not null) then
7033 x_asset_fin_rec_adj.reval_ceiling :=
7034 nvl(p_asset_fin_rec_new.reval_ceiling, 0) -
7035 nvl(p_asset_fin_rec_old.reval_ceiling, 0);
7036 end if;
7037
7038
7039 if (p_asset_fin_rec_adj.unrevalued_cost is not null) then
7040 x_asset_fin_rec_adj.unrevalued_cost :=
7041 p_asset_fin_rec_adj.unrevalued_cost;
7042 elsif (p_asset_fin_rec_new.unrevalued_cost is not null) then
7043 x_asset_fin_rec_adj.unrevalued_cost :=
7044 nvl(p_asset_fin_rec_new.unrevalued_cost, 0) -
7045 nvl(p_asset_fin_rec_old.unrevalued_cost, 0);
7046 end if;
7047
7048 if (p_asset_fin_rec_new.salvage_type = 'PCT') then
7049 x_asset_fin_rec_adj.percent_salvage_value := nvl(p_asset_fin_rec_new.percent_salvage_value, 0) -
7050 nvl(p_asset_fin_rec_old.percent_salvage_value, 0);
7051 else
7052 x_asset_fin_rec_adj.percent_salvage_value := to_number(null);
7053 end if;
7054
7055 if (x_asset_fin_rec_adj.deprn_limit_type = 'NONE') then
7056 x_asset_fin_rec_adj.deprn_limit_type := 'NONE';
7057 x_asset_fin_rec_adj.allowed_deprn_limit := to_number(null);
7058 x_asset_fin_rec_adj.allowed_deprn_limit_amount := to_number(null);
7059 elsif (p_asset_fin_rec_new.deprn_limit_type <>
7060 p_asset_fin_rec_old.deprn_limit_type) then
7061 x_asset_fin_rec_adj.deprn_limit_type := p_asset_fin_rec_new.deprn_limit_type;
7062 x_asset_fin_rec_adj.allowed_deprn_limit := p_asset_fin_rec_new.allowed_deprn_limit;
7063 x_asset_fin_rec_adj.allowed_deprn_limit_amount :=
7064 p_asset_fin_rec_new.allowed_deprn_limit_amount;
7065 else
7066 x_asset_fin_rec_adj.allowed_deprn_limit := p_asset_fin_rec_new.allowed_deprn_limit -
7067 p_asset_fin_rec_old.allowed_deprn_limit;
7068 x_asset_fin_rec_adj.allowed_deprn_limit_amount :=
7069 p_asset_fin_rec_new.allowed_deprn_limit_amount -
7070 p_asset_fin_rec_old.allowed_deprn_limit_amount;
7071 end if;
7072
7073 end if;
7074
7075 x_asset_fin_rec_adj.eofy_reserve := null;
7076
7077 if p_asset_fin_rec_old.deprn_method_code = p_asset_fin_rec_new.deprn_method_code and
7078 nvl(p_asset_fin_rec_old.life_in_months, 0) =
7079 nvl(p_asset_fin_rec_new.life_in_months, 0) and
7080 nvl(p_asset_fin_rec_old.basic_rate, 0) =
7081 nvl(p_asset_fin_rec_new.basic_rate, 0) and
7082 nvl(p_asset_fin_rec_old.adjusted_rate, 0) =
7083 nvl(p_asset_fin_rec_new.adjusted_rate, 0) and
7084 nvl(p_asset_fin_rec_old.production_capacity, 0) =
7085 nvl(p_asset_fin_rec_new.production_capacity, 0) and
7086 p_trans_rec.transaction_type_code <> 'ADDITION' then
7087
7088 x_asset_fin_rec_adj.deprn_method_code := null;
7089 x_asset_fin_rec_adj.life_in_months := to_number(null);
7090 x_asset_fin_rec_adj.basic_rate := to_number(null);
7091 x_asset_fin_rec_adj.adjusted_rate := to_number(null);
7092 x_asset_fin_rec_adj.production_capacity := to_number(null);
7093 end if;
7094
7095 else
7096 --tk_util.debug('Fin Adj is NOT null');
7097 x_asset_fin_rec_adj := p_asset_fin_rec_adj;
7098
7099 -- Bug3041716
7100 -- New faxama is expecting delta information so method information only needs to
7101 -- be populated only if there is a change in method related values
7102 --
7103 if p_asset_fin_rec_old.deprn_method_code = p_asset_fin_rec_new.deprn_method_code and
7104 nvl(p_asset_fin_rec_old.life_in_months, 0) =
7105 nvl(p_asset_fin_rec_new.life_in_months, 0) and
7106 nvl(p_asset_fin_rec_old.basic_rate, 0) =
7107 nvl(p_asset_fin_rec_new.basic_rate, 0) and
7108 nvl(p_asset_fin_rec_old.adjusted_rate, 0) =
7109 nvl(p_asset_fin_rec_new.adjusted_rate, 0) and
7110 nvl(p_asset_fin_rec_old.production_capacity, 0) =
7111 nvl(p_asset_fin_rec_new.production_capacity, 0) then
7112
7113 x_asset_fin_rec_adj.deprn_method_code := null;
7114 x_asset_fin_rec_adj.life_in_months := to_number(null);
7115 x_asset_fin_rec_adj.basic_rate := to_number(null);
7116 x_asset_fin_rec_adj.adjusted_rate := to_number(null);
7117 x_asset_fin_rec_adj.production_capacity := to_number(null);
7118 end if;
7119
7120 end if;
7124 END populate_fin_rec;
7121
7122
7123
7125
7126 ---------------------------------------------------------------------------
7127
7128 FUNCTION faxama
7129 (px_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
7130 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
7131 p_asset_desc_rec FA_API_TYPES.asset_desc_rec_type,
7132 p_asset_cat_rec FA_API_TYPES.asset_cat_rec_type,
7133 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
7134 p_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type,
7135 p_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type default null,
7136 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
7137 p_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type,
7138 p_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type default null,
7139 p_period_rec FA_API_TYPES.period_rec_type,
7140 p_mrc_sob_type_code VARCHAR2,
7141 p_running_mode NUMBER,
7142 p_used_by_revaluation NUMBER,
7143 p_reclassed_asset_id NUMBER default null,
7144 p_reclass_src_dest VARCHAR2 default null,
7145 p_reclassed_asset_dpis DATE default null,
7146 p_update_books_summary BOOLEAN default FALSE,
7147 p_proceeds_of_sale NUMBER default 0,
7148 p_cost_of_removal NUMBER default 0,
7149 x_deprn_exp OUT NOCOPY NUMBER,
7150 x_bonus_deprn_exp OUT NOCOPY NUMBER,
7151 x_impairment_exp OUT NOCOPY NUMBER,
7152 x_deprn_rsv OUT NOCOPY NUMBER
7153 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return boolean IS
7154
7155 l_calling_fn varchar2(50) := 'newFA_AMORT_PVT.faxama';
7156 l_reval_deprn_rsv_adj number :=0;
7157 l_afn_zero number:=0;
7158
7159 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
7160
7161 -- Bug4958977: Adding following cursor and 2 new variables
7162 CURSOR c_check_dpis_change is
7163 select inbk.transaction_header_id_in
7164 from fa_books inbk
7165 , fa_books outbk
7166 where inbk.transaction_header_id_in = px_trans_rec.member_transaction_header_id
7167 and outbk.asset_id = inbk.asset_id
7168 and outbk.book_type_code = p_asset_hdr_rec.book_type_code
7169 and outbk.transaction_header_id_out = px_trans_rec.member_transaction_header_id
7170 and inbk.cost = outbk.cost
7171 and nvl(inbk.salvage_value, 0) = nvl(outbk.salvage_value, 0)
7172 and nvl(inbk.allowed_deprn_limit_amount, 0) = nvl(outbk.allowed_deprn_limit_amount, 0)
7173 and inbk.date_placed_in_service <> outbk.date_placed_in_service;
7174
7175 l_temp_thid number;
7176 l_call_bs BOOLEAN := FALSE;
7177
7178 l_valid_type_change BOOLEAN := TRUE; -- bug5149789
7179
7180 calc_err EXCEPTION;
7181
7182 /*
7183 err number;
7184
7185 cursor c_get_profiler is
7186 select runid,
7187 run_date,
7188 run_comment
7189 from plsql_profiler_runs;
7190 */
7191
7192 begin <<faxama>>
7193 --tk_util.debug('-');
7194 --tk_util.debug('-');
7195 --tk_util.debug('-');
7196 --tk_util.debug('-+++++-');
7197 if (p_log_level_rec.statement_level) then
7198 fa_debug_pkg.add(l_calling_fn, 'Begin', p_asset_type_rec.asset_type||':'||
7199 p_asset_hdr_rec.asset_id||':'||
7200 to_char(px_trans_rec.transaction_header_id));
7201 fa_debug_pkg.add(l_calling_fn, 'Begin sob_id', p_asset_hdr_rec.set_of_books_id);
7202
7203 end if;
7204
7205
7206 -- err:=DBMS_PROFILER.START_PROFILER ('faxama:'||to_char(sysdate,'dd-Mon-YYYY hh:mi:ss'));
7207
7208 X_deprn_exp := 0;
7209 X_bonus_deprn_exp := 0;
7210 x_impairment_exp := 0;
7211
7212 if (p_asset_type_rec.asset_type='CIP') then
7213 FA_SRVR_MSG.ADD_MESSAGE
7214 (CALLING_FN => 'FA_AMORT_PKG.faxama',
7215 NAME => 'FA_AMT_CIP_NOT_ALLOWED',
7216 TOKEN1 => 'TYPE',
7217 VALUE1 => 'Amortized', p_log_level_rec => p_log_level_rec);
7218 return FALSE;
7219 end if;
7220
7221 --tk_util.DumpTrxRec(px_trans_rec, 'px_trans_rec');
7222 --tk_util.DumpFinRec(p_asset_fin_rec_old, 'old fin_rec');
7223 --tk_util.DumpFinRec(p_asset_fin_rec_adj, 'adj fin_rec');
7224 --tk_util.DumpFinRec(px_asset_fin_rec_new, 'new_fin_rec');
7225 --tk_util.DumpDeprnRec(p_asset_deprn_rec, 'old deprn');
7226 --tk_util.DumpDeprnRec(p_asset_deprn_rec_adj, 'adj deprn');
7227
7228 -- Bug5149789: checking whether member exists or not
7229 -- Call function check_member_existence if either of
7230 -- salvage or deprn limit type is being changed and there is 0 group cost
7231 if (((px_asset_fin_rec_new.salvage_type = 'SUM') and
7232 (px_asset_fin_rec_new.salvage_type <> nvl(p_asset_fin_rec_old.salvage_type,
7233 px_asset_fin_rec_new.salvage_type))) or
7234 ((px_asset_fin_rec_new.deprn_limit_type = 'SUM') and
7235 (px_asset_fin_rec_new.deprn_limit_type <> nvl(p_asset_fin_rec_old.deprn_limit_type,
7236 px_asset_fin_rec_new.deprn_limit_type)))) then
7237
7238 if (px_asset_fin_rec_new.cost = 0) then
7239
7240 if not check_member_existence (p_asset_hdr_rec => p_asset_hdr_rec,
7244 end if;
7241 p_log_level_rec => p_log_level_rec) then
7242 if (p_log_level_rec.statement_level) then
7243 fa_debug_pkg.add(l_calling_fn, 'calling check_member_existence', 'FAILED', p_log_level_rec => p_log_level_rec);
7245
7246 l_valid_type_change := FALSE;
7247
7248 end if;
7249
7250 else
7251 if (p_log_level_rec.statement_level) then
7252 fa_debug_pkg.add(l_calling_fn, 'Method.deprn_limit type change', 'FAILED', p_log_level_rec => p_log_level_rec);
7253 fa_debug_pkg.add(l_calling_fn, 'cost', px_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
7254 end if;
7255
7256 l_valid_type_change := FALSE;
7257
7258 end if;
7259
7260 if (not l_valid_type_change) then
7261 if (px_asset_fin_rec_new.salvage_type = 'SUM') then
7262 fa_srvr_msg.add_message(
7263 calling_fn => l_calling_fn,
7264 name => 'FA_INVALID_PARAMETER',
7265 token1 => 'VALUE',
7266 value1 => px_asset_fin_rec_new.salvage_type,
7267 token2 => 'PARAM',
7268 value2 => 'SALVAGE_TYPE', p_log_level_rec => p_log_level_rec);
7269
7270 else
7271 fa_srvr_msg.add_message(
7272 calling_fn => l_calling_fn,
7273 name => 'FA_INVALID_PARAMETER',
7274 token1 => 'VALUE',
7275 value1 => px_asset_fin_rec_new.deprn_limit_type,
7276 token2 => 'PARAM',
7277 value2 => 'DEPRN_LIMIT_TYPE', p_log_level_rec => p_log_level_rec);
7278 end if;
7279
7280 return false;
7281 end if;
7282
7283 end if; -- (((px_asset_fin_rec_new.salvage_type = 'SUM') and
7284
7285 if ((px_trans_rec.transaction_type_code = 'GROUP ADDITION' and
7286 nvl(p_asset_deprn_rec.deprn_reserve, 0) = 0) and
7287 (px_trans_rec.transaction_key not in( 'MA','MJ','MC','MV','MD','MN'))
7288 and (px_asset_fin_rec_new.cost = 0 and px_asset_fin_rec_new.cip_cost = 0) -- Necessary??
7289 or ( px_trans_rec.transaction_type_code = 'GROUP ADJUSTMENT' and
7290 px_trans_rec.transaction_key = 'GJ' and
7291 p_asset_fin_rec_old.date_placed_in_service <> px_asset_fin_rec_new.date_placed_in_service))
7292 then
7293 -- Group Addition or adjustment in period of group addition before
7294 -- depreciation run or first member addition
7295
7296 if not createGroup(
7297 p_trans_rec => px_trans_rec,
7298 p_asset_hdr_rec => p_asset_hdr_rec,
7299 p_asset_type_rec => p_asset_type_rec,
7300 p_period_rec => p_period_rec,
7301 p_asset_fin_rec => px_asset_fin_rec_new,
7302 p_asset_deprn_rec => p_asset_deprn_rec_adj,
7303 p_mrc_sob_type_code => p_mrc_sob_type_code,
7304 p_calling_fn => l_calling_fn,
7305 p_log_level_rec => p_log_level_rec) then
7306
7307 if (p_log_level_rec.statement_level) then
7308 fa_debug_pkg.add('calc_fin_info', 'calling FA_AMORT_PVT.createGroup', 'FAILED', p_log_level_rec => p_log_level_rec);
7309 end if;
7310
7311 return (FALSE);
7312
7313 end if;
7314
7315 return true;
7316 elsif (px_trans_rec.transaction_type_code = 'ADDITION' or
7317 px_trans_rec.transaction_type_code = 'CIP ADDITION' or
7318 px_trans_rec.transaction_type_code = 'ADJUSTMENT' or
7319 px_trans_rec.transaction_type_code = 'CIP ADJUSTMENT') and
7320 (p_asset_fin_rec_old.group_asset_id is not null or
7321 px_asset_fin_rec_new.group_asset_id is not null)
7322 and (nvl(px_trans_rec.amortization_start_date,
7323 px_trans_rec.transaction_date_entered) <
7324 p_period_rec.calendar_period_open_date)
7325 then
7326 -- Member addition and adjustment that has impact to the group
7327
7328 if (p_log_level_rec.statement_level) then
7329 fa_debug_pkg.add('calc_fin_info', 'calling FA_AMORT_PVT.maintainGroup', 'FAILED', p_log_level_rec => p_log_level_rec);
7330 end if;
7331
7332 end if;
7333
7334
7335 populate_fin_rec(
7336 p_trans_rec => px_trans_rec,
7337 p_asset_fin_rec_old => p_asset_fin_rec_old,
7338 p_asset_fin_rec_adj => p_asset_fin_rec_adj,
7339 p_asset_fin_rec_new => px_asset_fin_rec_new,
7340 x_asset_fin_rec_adj => l_asset_fin_rec_adj,
7341 p_log_level_rec => p_log_level_rec);
7342
7343 -- Bug4958977: Adding following entire if statement
7344 -- trx could be dpis change if following conditions are met
7345 -- even though trx date is in current period
7346 --tk_util.DumpFinRec(p_asset_fin_rec_adj, 'adj fin_rec');
7347 if (px_trans_rec.transaction_key = 'MJ' and
7348 nvl(p_asset_fin_rec_adj.cost, 0) = 0 and
7349 nvl(p_asset_fin_rec_adj.cip_cost, 0) = 0 and
7350 nvl(p_asset_fin_rec_adj.salvage_value, 0) = 0 and
7351 nvl(p_asset_fin_rec_adj.allowed_deprn_limit_amount, 0) = 0) and
7352 (nvl(px_trans_rec.amortization_start_date,
7353 px_trans_rec.transaction_date_entered) >=
7354 p_period_rec.calendar_period_open_date) then
7355
7356 if (p_log_level_rec.statement_level) then
7357 fa_debug_pkg.add(l_calling_fn, 'could be dpis change', 'cont', p_log_level_rec => p_log_level_rec);
7358 end if;
7359
7360 OPEN c_check_dpis_change;
7361 FETCH c_check_dpis_change INTO l_temp_thid;
7362 CLOSE c_check_dpis_change;
7363
7367
7364 if (p_log_level_rec.statement_level) then
7365 fa_debug_pkg.add(l_calling_fn, 'temp_thid', l_temp_thid, p_log_level_rec => p_log_level_rec);
7366 end if;
7368 if (l_temp_thid is not null) then
7369 l_call_bs := TRUE;
7370 else
7371 l_call_bs := FALSE;
7372 end if;
7373 end if;
7374
7375 -- Bug4037112: Change for ATT 0 cost change
7376 X_deprn_rsv := 0;
7377
7378 if (not l_call_bs) and
7379 (px_trans_rec.transaction_type_code = 'GROUP ADJUSTMENT') and
7380 (nvl(px_asset_fin_rec_new.tracking_method, 'NULL') <> 'CALCULATE') and
7381 (nvl(l_asset_fin_rec_adj.cost, 0) = 0) and
7382 ((px_trans_rec.transaction_key = 'MA')
7383 or
7384 (px_trans_rec.transaction_key = 'MJ' and
7385 (px_asset_fin_rec_new.salvage_type not in ('SUM', 'AMT')) and
7386 (px_asset_fin_rec_new.deprn_limit_type not in ('SUM', 'AMT')))
7387 ) then
7388
7389 -- Bug4958977: Need to check possibility of dpis change.
7390 -- This time, possible that dpis is changed from current to old
7391 -- date.
7392 if (p_log_level_rec.statement_level) then
7393 fa_debug_pkg.add(l_calling_fn, 'could be dpis change(cur to old)', 'cont');
7394 end if;
7395
7396 OPEN c_check_dpis_change;
7397 FETCH c_check_dpis_change INTO l_temp_thid;
7398 CLOSE c_check_dpis_change;
7399
7400 if (p_log_level_rec.statement_level) then
7401 fa_debug_pkg.add(l_calling_fn, 'temp_thid', l_temp_thid, p_log_level_rec => p_log_level_rec);
7402 end if;
7403
7404 if (l_temp_thid is not null) then
7405 l_call_bs := TRUE;
7406 else
7407 l_call_bs := FALSE;
7408 end if;
7409
7410 if (not l_call_bs) then
7411 -- No Need to Maintain FA_BOOKS_SUMMARY Table
7412 return true;
7413 end if;
7414 end if;
7415
7416
7417 if (p_asset_type_rec.asset_type = 'GROUP') then
7418 if (nvl(px_trans_rec.amortization_start_date,
7419 px_trans_rec.transaction_date_entered) >=
7420 p_period_rec.calendar_period_open_date) and
7421 (px_trans_rec.transaction_key not in ('MR', 'MS', 'GC')) and (not l_call_bs) then
7422
7423 if (not CurrentPeriodAdj(
7424 p_trans_rec => px_trans_rec,
7425 p_asset_hdr_rec => p_asset_hdr_rec,
7426 p_asset_type_rec => p_asset_type_rec,
7427 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
7428 p_asset_fin_rec_old => p_asset_fin_rec_old,
7429 px_asset_fin_rec_new => px_asset_fin_rec_new,
7430 p_period_rec => p_period_rec,
7431 p_asset_deprn_rec_adj => p_asset_deprn_rec_adj,
7432 p_proceeds_of_sale => nvl(p_proceeds_of_sale, 0),
7433 p_cost_of_removal => nvl(p_cost_of_removal, 0),
7434 p_calling_fn => l_calling_fn,
7435 p_mrc_sob_type_code => p_mrc_sob_type_code,
7436 p_log_level_rec => p_log_level_rec)) then
7437 raise calc_err;
7438 end if;
7439
7440 else
7441
7442 if (l_asset_fin_rec_adj.eofy_reserve is null) and
7443 (p_asset_deprn_rec_adj.deprn_reserve is not null) and
7444 (p_asset_deprn_rec_adj.ytd_deprn is not null) then
7445 l_asset_fin_rec_adj.eofy_reserve :=
7446 p_asset_deprn_rec_adj.deprn_reserve - p_asset_deprn_rec_adj.ytd_deprn;
7447 end if;
7448
7449
7450 if (not bsRecalculate(
7451 p_trans_rec => px_trans_rec,
7452 p_asset_hdr_rec => p_asset_hdr_rec,
7453 p_asset_type_rec => p_asset_type_rec,
7454 p_asset_desc_rec => p_asset_desc_rec,
7455 p_asset_fin_rec_old => p_asset_fin_rec_old,
7456 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
7457 p_period_rec => p_period_rec,
7458 px_asset_fin_rec_new => px_asset_fin_rec_new,
7459 p_asset_deprn_rec => p_asset_deprn_rec,
7460 p_asset_deprn_rec_adj => p_asset_deprn_rec_adj,
7461 x_deprn_expense => x_deprn_exp,
7462 x_bonus_expense => x_bonus_deprn_exp,
7463 x_impairment_expense => x_impairment_exp,
7464 x_deprn_reserve => x_deprn_rsv,
7465 p_running_mode => p_running_mode,
7466 p_used_by_revaluation => p_used_by_revaluation,
7467 p_reclassed_asset_id => p_reclassed_asset_id,
7468 p_reclass_src_dest => p_reclass_src_dest,
7469 p_reclassed_asset_dpis => p_reclassed_asset_dpis,
7470 p_update_books_summary => p_update_books_summary,
7471 p_mrc_sob_type_code => p_mrc_sob_type_code,
7472 p_calling_fn => l_calling_fn,
7473 p_log_level_rec => p_log_level_rec)) then
7474 raise calc_err;
7475 end if;
7476 end if; -- (nvl(px_trans_rec.amortization_start_date,
7477 end if; -- (p_asset_type_rec.asset_type = 'GROUP')
7478
7479 --tk_util.DumpFinRec(px_asset_fin_rec_new, 'Nfaxama');
7480
7481 if (p_log_level_rec.statement_level) then
7482 fa_debug_pkg.add(l_calling_fn, 'End', p_asset_type_rec.asset_type||':'||p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
7483 end if;
7484 --tk_util.debug('-+++++-');
7485 --tk_util.debug('-');
7486 --tk_util.debug('-');
7487 --tk_util.debug('-');
7488 --tk_util.debug('-');
7489 --tk_util.debug('-');
7490
7494 for r_get_profiler in c_get_profiler loop
7491 -- err:=DBMS_PROFILER.STOP_PROFILER;
7492
7493 /*
7495 null;
7496 --tk_util.debug('runid: '||to_char(r_get_profiler.runid));
7497 --tk_util.debug('run_date: '||to_char(r_get_profiler.run_date, 'DD-MON-YYYY HH24:MI:SS'));
7498 --tk_util.debug('run_comment: '||r_get_profiler.run_comment);
7499 end loop;
7500 */
7501
7502 return TRUE;
7503
7504 exception
7505 when calc_err then
7506 if (p_log_level_rec.statement_level) then
7507 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'calc_err', p_log_level_rec => p_log_level_rec);
7508 end if;
7509
7510 FA_SRVR_MSG.ADD_SQL_ERROR(CALLING_FN => l_calling_fn, p_log_level_rec => p_log_level_rec);
7511 return false;
7512
7513 when others then
7514 if (p_log_level_rec.statement_level) then
7515 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
7516 end if;
7517
7518 FA_SRVR_MSG.ADD_SQL_ERROR(CALLING_FN => l_calling_fn, p_log_level_rec => p_log_level_rec);
7519 return FALSE;
7520 end faxama;
7521
7522
7523 --+==============================================================================
7524 -- Function: GetExpRsv
7525 --
7526 -- This function return expense or reserve amounts incurred due to some
7527 -- transaction such as unplanned, reserve transfer and retirement adjustment.
7528 --
7529 -- Transaction Transaction_Key
7530 -- ---------------------- ---------------
7531 -- Retirement Adjustment GR
7532 -- Reserve Transfer GV
7533 -- Unplanned Depreciation UA or UE
7534 --
7535 --+==============================================================================
7536 FUNCTION GetExpRsv(
7537 p_trans_rec FA_API_TYPES.trans_rec_type,
7538 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
7539 p_period_rec FA_API_TYPES.period_rec_type,
7540 p_mrc_sob_type_code VARCHAR2,
7541 x_exp_rsv_amount OUT NOCOPY NUMBER
7542 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return BOOLEAN IS
7543
7544 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.GetExpRsv';
7545
7546 --
7547 -- This cursor doesn't include period counter created as condition
7548 -- because it is not certain that prior period unplanned is allowed
7549 -- and if it is allowed, whether fa_adjsutments stores period_counter
7550 -- created as the period of amortization start date or not.
7551 -- If period counter created is the period of amortization start date,
7552 -- then period counter can be used as a one of condition.
7553 --
7554 CURSOR c_get_exp_amount IS
7555 select
7556 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7557 'EXPENSE',
7558 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7559 'DR', ADJ.ADJUSTMENT_AMOUNT,
7560 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7561 0)
7562 from fa_adjustments adj
7563 where adj.transaction_header_id = p_trans_rec.transaction_header_id
7564 and adj.asset_id = p_asset_hdr_rec.asset_id
7565 and adj.book_type_code = p_asset_hdr_rec.book_type_code;
7566
7567 CURSOR c_get_mc_exp_amount IS
7568 select
7569 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7570 'EXPENSE',
7571 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7572 'DR', ADJ.ADJUSTMENT_AMOUNT,
7573 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7574 0)
7575 from fa_mc_adjustments adj
7576 where adj.transaction_header_id = p_trans_rec.transaction_header_id
7577 and adj.asset_id = p_asset_hdr_rec.asset_id
7578 and adj.book_type_code = p_asset_hdr_rec.book_type_code
7579 and adj.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
7580
7581
7582 BEGIN
7583
7584 --
7585 -- Case of Unplanned Depreciation
7586 --
7587 if (p_mrc_sob_type_code = 'R') then
7588 OPEN c_get_mc_exp_amount;
7589 FETCH c_get_mc_exp_amount INTO x_exp_rsv_amount;
7590 CLOSE c_get_mc_exp_amount;
7591 else
7592 OPEN c_get_exp_amount;
7593 FETCH c_get_exp_amount INTO x_exp_rsv_amount;
7594 CLOSE c_get_exp_amount;
7595 end if;
7596
7597 if (p_log_level_rec.statement_level) then
7598 fa_debug_pkg.add(l_calling_fn, 'Found Expense:'||p_trans_rec.transaction_key, x_exp_rsv_amount, p_log_level_rec => p_log_level_rec);
7599 end if;
7600
7601
7602 return true;
7603
7604 EXCEPTION
7605 WHEN others THEN
7606 if (p_log_level_rec.statement_level) then
7607 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
7608 end if;
7609
7610 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
7611 return false;
7612
7613 END GetExpRsv;
7614
7615 --+==============================================================================
7616 -- Function: GetDeprnRec
7617 --
7618 -- The function returns FA_API_TYPES.asset_deprn_rec_type.
7619 -- This will be the starting point for recalculating depreciation.
7620 --
7621 --+==============================================================================
7622 FUNCTION GetDeprnRec (
7623 p_trans_rec FA_API_TYPES.trans_rec_type,
7624 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
7625 p_period_rec FA_API_TYPES.period_rec_type,
7626 p_incoming_trx_type_code VARCHAR2 default 'NULL',
7630
7627 x_asset_deprn_rec OUT NOCOPY FA_API_TYPES.asset_deprn_rec_type,
7628 p_mrc_sob_type_code VARCHAR2,
7629 p_unplanned_exp IN OUT NOCOPY NUMBER, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
7631 CURSOR c_check_period IS
7632 select 'Y'
7633 from fa_deprn_summary
7634 where asset_id = p_asset_hdr_rec.asset_id
7635 and book_type_code = p_asset_hdr_rec.book_type_code
7636 and period_counter <= p_period_rec.period_counter;
7637 /*
7638 from fa_deprn_periods
7639 where book_type_code = p_asset_hdr_rec.book_type_code
7640 and period_counter = p_period_rec.period_counter;
7641 */
7642
7643 -- Return values if year of first transaction is the same year as addition happened.
7644 CURSOR c_get_eofy_rsv IS
7645 select ds.deprn_reserve - ds.ytd_deprn
7646 , ds.bonus_deprn_reserve - ds.bonus_ytd_deprn
7647 , ds.impairment_reserve - ds.ytd_impairment
7648 , ds.ltd_production - ds.ytd_production
7649 , ds.reval_reserve - ds.ytd_reval_deprn_expense
7650 from fa_fiscal_year fy
7651 , fa_deprn_summary ds
7652 , fa_deprn_periods dp
7653 where ds.asset_id = p_asset_hdr_rec.asset_id
7654 and ds.book_type_code = p_asset_hdr_rec.book_type_code
7655 and ds.deprn_source_code = 'BOOKS'
7656 and dp.book_type_code = p_asset_hdr_rec.book_type_code
7657 and dp.period_counter = ds.period_counter + 1 --Bug6987743: add one
7658 and fy.fiscal_year_name = fa_cache_pkg.fazcbc_record.fiscal_year_name
7659 and fy.fiscal_year = (dp.period_counter - dp.period_num)/fa_cache_pkg.fazcct_record.number_per_fiscal_year
7663 CURSOR c_get_books_rsv IS
7660 and fy.fiscal_year = (p_period_rec.period_counter + 1 - p_period_rec.period_num)/
7661 fa_cache_pkg.fazcct_record.number_per_fiscal_year;
7662
7664 select ds.deprn_reserve
7665 , ds.bonus_deprn_reserve
7666 , ds.impairment_reserve
7667 , ds.ltd_production
7668 , ds.reval_reserve
7669 from fa_deprn_summary ds, fa_deprn_periods dp
7670 ,
7671 (select (fy.fiscal_year * ct.NUMBER_PER_FISCAL_YEAR + cp.PERIOD_NUM)
7672 add_amort_period
7673 from fa_calendar_periods cp,
7674 fa_book_controls bc,
7675 fa_fiscal_year fy,
7676 fa_calendar_types ct,
7677 fa_transaction_headers th
7678 WHERE th.book_type_code = p_asset_hdr_rec.book_type_code
7679 and th.asset_id = p_asset_hdr_rec.asset_id
7680 and bc.book_type_code = th.book_type_code
7681 and bc.deprn_calendar = ct.calendar_type
7682 and bc.fiscal_year_name = fy.fiscal_year_name
7683 and ct.fiscal_year_name = bc.fiscal_year_name
7684 and ct.calendar_type = cp.calendar_type
7685 and cp.start_date between fy.start_date and fy.end_date
7686 and th.amortization_start_date between cp.start_date and cp.end_date
7687 and th.transaction_type_code = 'ADDITION'
7688 ) ilv
7689 where ds.book_type_code = p_asset_hdr_rec.book_type_code
7690 and ds.asset_id = p_asset_hdr_rec.asset_id
7691 and ds.deprn_source_code = 'BOOKS'
7692 and dp.period_counter = ds.period_counter+1
7693 and dp.book_type_code = ds.book_type_code
7694 and nvl(add_amort_period,ds.period_counter) <= p_period_rec.period_counter+1;
7695
7696 CURSOR c_get_adjs IS
7697 SELECT NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7698 'RESERVE',
7699 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7700 'DR', ADJ.ADJUSTMENT_AMOUNT,
7701 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7702 0),
7703 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7704 'EXPENSE',
7705 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7706 'DR', ADJ.ADJUSTMENT_AMOUNT,
7707 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7708 0),
7709 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7710 'BONUS RESERVE',
7711 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7712 'DR', ADJ.ADJUSTMENT_AMOUNT,
7713 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7717 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7714 0),
7715 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7716 'BONUS EXPENSE',
7718 'DR', ADJ.ADJUSTMENT_AMOUNT,
7719 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7720 0),
7721 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7722 'IMPAIR RESERVE',
7723 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7724 'DR', ADJ.ADJUSTMENT_AMOUNT,
7725 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7726 0),
7727 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7728 'IMPAIR EXPENSE',
7729 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7730 'DR', ADJ.ADJUSTMENT_AMOUNT,
7731 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7732 0),
7733 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7734 'DEPRN ADJUST',
7735 DECODE(fa_cache_pkg.fazcbc_record.book_class,'TAX',
7736 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7737 'DR', ADJ.ADJUSTMENT_AMOUNT,
7738 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT)))),
7739 0),
7740 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7741 'REVAL EXPENSE',
7742 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7743 'DR', ADJ.ADJUSTMENT_AMOUNT,
7744 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7745 0),
7746 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7747 'REVAL AMORT',
7748 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7749 'DR', ADJ.ADJUSTMENT_AMOUNT,
7750 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7751 0),
7752 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7753 'REVAL RESERVE',
7754 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7755 'DR', ADJ.ADJUSTMENT_AMOUNT,
7756 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7757 0),
7758 NVL(SUM(DECODE(ADJ.SOURCE_TYPE_CODE,
7759 'REVALUATION',
7760 DECODE(ADJ.ADJUSTMENT_TYPE,
7761 'EXPENSE',
7762 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7763 'DR', ADJ.ADJUSTMENT_AMOUNT,
7764 'CR', -1*ADJ.ADJUSTMENT_AMOUNT)))), 0),
7765 NVL(SUM(DECODE(TH.TRANSACTION_KEY,
7766 'UE',
7767 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7768 'DR', ADJ.ADJUSTMENT_AMOUNT,
7769 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT),
7770 'UA',
7771 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7772 'DR', ADJ.ADJUSTMENT_AMOUNT,
7773 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT)
7774 )),
7775 0)
7776 FROM FA_ADJUSTMENTS ADJ,
7777 FA_TRANSACTION_HEADERS TH
7778 WHERE TH.ASSET_ID = p_asset_hdr_rec.asset_id
7779 AND TH.BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
7780 AND TH.TRANSACTION_HEADER_ID <> p_trans_rec.transaction_header_id
7781 AND TH.TRANSACTION_DATE_ENTERED <= p_trans_rec.transaction_date_entered
7782 AND TH.DATE_EFFECTIVE < p_trans_rec.who_info.creation_date
7783 AND TH.DATE_EFFECTIVE BETWEEN nvl(p_period_rec.period_open_date, TH.DATE_EFFECTIVE)
7784 AND nvl(p_period_rec.period_close_date, TH.DATE_EFFECTIVE)
7785 AND TH.TRANSACTION_HEADER_ID = ADJ.TRANSACTION_HEADER_ID
7786 AND ADJ.ASSET_ID = p_asset_hdr_rec.asset_id
7787 AND ADJ.BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
7788 --
7789 -- Bug3387996: next condition is nevessary to get adj amount only for this period
7790 -- Bug4741374: period_counter+1 is required to get the rsv from period of addition
7791 AND ADJ.PERIOD_COUNTER_CREATED = p_period_rec.period_counter + 1
7792 AND ADJ.ADJUSTMENT_TYPE in ('RESERVE', 'EXPENSE')
7793 AND not exists ( select 1 from
7794 fa_retirements ret,
7795 fa_conventions con
7796 where th.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)
7797 and ret.transaction_header_id_in = th.transaction_header_id
7798 and ret.asset_id = p_asset_hdr_rec.asset_id
7799 and ret.book_type_code = p_asset_hdr_rec.book_type_code
7800 and ret.RETIREMENT_PRORATE_CONVENTION = con.PRORATE_CONVENTION_CODE
7801 and ret.date_retired between con.start_date and con.end_date
7802 and con.prorate_date > p_trans_rec.transaction_date_entered); -- Bug6899375 Added the not exists condition
7803
7804 CURSOR c_get_mc_adjs IS
7805 SELECT NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7806 'RESERVE',
7807 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7808 'DR', ADJ.ADJUSTMENT_AMOUNT,
7809 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7810 0),
7811 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7812 'EXPENSE',
7813 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7814 'DR', ADJ.ADJUSTMENT_AMOUNT,
7815 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7816 0),
7817 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7821 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7818 'BONUS RESERVE',
7819 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7820 'DR', ADJ.ADJUSTMENT_AMOUNT,
7822 0),
7823 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7824 'BONUS EXPENSE',
7825 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7826 'DR', ADJ.ADJUSTMENT_AMOUNT,
7827 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7828 0),
7829 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7830 'IMPAIR RESERVE',
7831 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7832 'DR', ADJ.ADJUSTMENT_AMOUNT,
7833 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7834 0),
7835 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7836 'IMPAIR EXPENSE',
7837 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7838 'DR', ADJ.ADJUSTMENT_AMOUNT,
7839 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7840 0),
7841 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7842 'DEPRN ADJUST',
7843 DECODE(fa_cache_pkg.fazcbc_record.book_class,'TAX',
7844 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7845 'DR', ADJ.ADJUSTMENT_AMOUNT,
7846 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT)))),
7847 0),
7848 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7849 'REVAL EXPENSE',
7850 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7851 'DR', ADJ.ADJUSTMENT_AMOUNT,
7852 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7853 0),
7854 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7855 'REVAL AMORT',
7856 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7857 'DR', ADJ.ADJUSTMENT_AMOUNT,
7858 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7859 0),
7860 NVL(SUM(DECODE(ADJ.ADJUSTMENT_TYPE,
7861 'REVAL RESERVE',
7862 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7863 'DR', ADJ.ADJUSTMENT_AMOUNT,
7864 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT))),
7865 0),
7866 NVL(SUM(DECODE(ADJ.SOURCE_TYPE_CODE,
7867 'REVALUATION',
7868 DECODE(ADJ.ADJUSTMENT_TYPE,
7869 'EXPENSE',
7870 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7871 'DR', ADJ.ADJUSTMENT_AMOUNT,
7872 'CR', -1*ADJ.ADJUSTMENT_AMOUNT)))), 0),
7873 NVL(SUM(DECODE(TH.TRANSACTION_KEY,
7874 'UE',
7875 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7876 'DR', ADJ.ADJUSTMENT_AMOUNT,
7877 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT),
7878 'UA',
7879 DECODE(ADJ.DEBIT_CREDIT_FLAG,
7880 'DR', ADJ.ADJUSTMENT_AMOUNT,
7881 'CR', -1 * ADJ.ADJUSTMENT_AMOUNT)
7882 )),
7883 0)
7884 FROM FA_MC_ADJUSTMENTS ADJ,
7885 FA_TRANSACTION_HEADERS TH
7886 WHERE TH.ASSET_ID = p_asset_hdr_rec.asset_id
7887 AND TH.BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
7888 AND TH.TRANSACTION_HEADER_ID <> p_trans_rec.transaction_header_id
7889 AND TH.TRANSACTION_DATE_ENTERED <= p_trans_rec.transaction_date_entered
7890 AND TH.DATE_EFFECTIVE < p_trans_rec.who_info.creation_date
7891 AND TH.DATE_EFFECTIVE BETWEEN nvl(p_period_rec.period_open_date, TH.DATE_EFFECTIVE)
7892 AND nvl(p_period_rec.period_close_date, TH.DATE_EFFECTIVE)
7893 AND TH.TRANSACTION_HEADER_ID = ADJ.TRANSACTION_HEADER_ID
7894 AND ADJ.ASSET_ID = p_asset_hdr_rec.asset_id
7895 AND ADJ.BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
7896 --
7897 -- Bug3387996: next condition is nevessary to get adj amount only for this period
7898 -- Bug4741374: period_counter+1 is required to get the rsv from period of addition
7899 AND ADJ.PERIOD_COUNTER_CREATED = p_period_rec.period_counter + 1
7900 AND ADJ.ADJUSTMENT_TYPE in ('RESERVE', 'EXPENSE')
7901 AND ADJ.SET_OF_BOOKS_ID = p_asset_hdr_rec.set_of_books_id
7902 AND not exists ( select 1 from
7903 fa_retirements ret,
7907 and ret.asset_id = p_asset_hdr_rec.asset_id
7904 fa_conventions con
7905 where th.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)
7906 and ret.transaction_header_id_in = th.transaction_header_id
7908 and ret.book_type_code = p_asset_hdr_rec.book_type_code
7909 and ret.RETIREMENT_PRORATE_CONVENTION = con.PRORATE_CONVENTION_CODE
7910 and ret.date_retired between con.start_date and con.end_date
7911 and con.prorate_date > p_trans_rec.transaction_date_entered); -- Bug6899375 Added the not exists condition
7912
7913
7914 l_calling_fn VARCHAR2(100) := 'FA_AMORT_PVT.GetDeprnRec';
7915 l_dpr FA_STD_TYPES.FA_DEPRN_ROW_STRUCT;
7916 l_run_mode VARCHAR2(20) := 'TRANSACTION';
7917 l_status BOOLEAN;
7918
7919 l_deprn_rsv number;
7920 l_deprn_exp number;
7921 l_bonus_deprn_rsv number;
7922 l_bonus_deprn_amount number;
7923 l_impairment_rsv number;
7924 l_impairment_amount number;
7925 l_deprn_adjust_exp number;
7926 l_reval_deprn_exp number;
7927 l_reval_amo number;
7928 l_reval_rsv number;
7929 l_reval_exp number;
7930
7931 l_unplanned_exp number;
7932 l_period_exists VARCHAR2(1) := 'N';
7933 l_find_eofy_reserve VARCHAR2(1) := 'Y';
7934 error_found EXCEPTION;
7935
7936 BEGIN
7937 if (p_log_level_rec.statement_level) then
7938 fa_debug_pkg.add(l_calling_fn, 'Begin', p_trans_rec.transaction_type_code||':'||
7939 p_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
7940 end if;
7941
7942
7943 OPEN c_check_period;
7944 FETCH c_check_period INTO l_period_exists;
7945
7946 if (c_check_period%NOTFOUND) then
7947 l_period_exists := 'N';
7948 end if;
7949
7950 CLOSE c_check_period;
7951
7952 --tk_util.debug('l_period_exists: '||l_period_exists);
7953
7954 if (l_period_exists = 'Y') and (p_incoming_trx_type_code not like '%ADDITION') then
7955
7956 l_dpr.asset_id := p_asset_hdr_rec.asset_id;
7957 l_dpr.book := p_asset_hdr_rec.book_type_code;
7958 l_dpr.period_ctr := p_period_rec.period_counter;
7959 l_dpr.dist_id := 0;
7960 l_dpr.mrc_sob_type_code := p_mrc_sob_type_code;
7961 l_dpr.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
7962
7963 l_run_mode := 'STANDARD';
7964
7965 fa_query_balances_pkg.query_balances_int(
7966 X_DPR_ROW => l_dpr,
7967 X_RUN_MODE => l_run_mode,
7968 X_DEBUG => FALSE,
7969 X_SUCCESS => l_status,
7970 X_CALLING_FN => l_calling_fn,
7971 X_TRANSACTION_HEADER_ID => -1, p_log_level_rec => p_log_level_rec);
7972
7973 if (NOT l_status) then
7974
7975 if (p_log_level_rec.statement_level) then
7976 fa_debug_pkg.add(l_calling_fn, 'ERROR',
7977 'Calling fa_query_balances_pkg.query_balances_int', p_log_level_rec => p_log_level_rec);
7978 end if;
7979
7980 raise error_found;
7981 end if;
7982
7983 -- x_asset_deprn_rec.deprn_amount := l_dpr.deprn_exp;
7984 x_asset_deprn_rec.deprn_amount := 0; -- This needs to be 0 because this should only include
7985 -- current period(period that starts recalculate) amounts
7986 x_asset_deprn_rec.ytd_deprn := l_dpr.ytd_deprn;
7987 x_asset_deprn_rec.deprn_reserve := l_dpr.deprn_rsv;
7988 x_asset_deprn_rec.prior_fy_expense := l_dpr.prior_fy_exp;
7989 -- x_asset_deprn_rec.bonus_deprn_amount := l_dpr.bonus_deprn_amount;
7990 x_asset_deprn_rec.bonus_deprn_amount := 0; -- This needs to be 0 because this should only include
7991 -- current period(period that starts recalculate) amounts
7992 x_asset_deprn_rec.bonus_ytd_deprn := l_dpr.bonus_ytd_deprn;
7993 x_asset_deprn_rec.bonus_deprn_reserve := l_dpr.bonus_deprn_rsv;
7994 x_asset_deprn_rec.prior_fy_bonus_expense := l_dpr.prior_fy_bonus_exp;
7995 x_asset_deprn_rec.impairment_amount := 0;
7996 x_asset_deprn_rec.ytd_impairment := l_dpr.ytd_impairment;
7997 x_asset_deprn_rec.impairment_reserve := l_dpr.impairment_rsv;
7998 x_asset_deprn_rec.reval_amortization := l_dpr.reval_amo;
8002 x_asset_deprn_rec.reval_deprn_reserve := l_dpr.reval_rsv;
7999 x_asset_deprn_rec.reval_amortization_basis := l_dpr.reval_amo_basis;
8000 x_asset_deprn_rec.reval_deprn_expense := l_dpr.reval_deprn_exp;
8001 x_asset_deprn_rec.reval_ytd_deprn := l_dpr.ytd_reval_deprn_exp;
8003 x_asset_deprn_rec.production := l_dpr.prod;
8004 x_asset_deprn_rec.ytd_production := l_dpr.ytd_prod;
8005 x_asset_deprn_rec.ltd_production := l_dpr.ltd_prod;
8006 x_asset_deprn_rec.impairment_reserve := l_dpr.impairment_rsv;
8007 x_asset_deprn_rec.ytd_impairment := l_dpr.ytd_impairment;
8008 x_asset_deprn_rec.impairment_amount := l_dpr.impairment_amount;
8009
8010
8011 else
8012 --tk_util.debug('No deprn info in db');
8013 if (p_incoming_trx_type_code like '%ADDITION') then
8014
8015 x_asset_deprn_rec.deprn_reserve := 0;
8016 x_asset_deprn_rec.bonus_deprn_reserve := 0;
8017 x_asset_deprn_rec.impairment_reserve := 0;
8018 x_asset_deprn_rec.ltd_production := 0;
8019 x_asset_deprn_rec.reval_deprn_reserve := 0;
8020
8021 else
8022
8023 --tk_util.debug('Get deprn info from BOOKS row');
8024 OPEN c_get_eofy_rsv;
8025 FETCH c_get_eofy_rsv INTO x_asset_deprn_rec.deprn_reserve
8026 , x_asset_deprn_rec.bonus_deprn_reserve
8027 , x_asset_deprn_rec.impairment_reserve
8028 , x_asset_deprn_rec.ltd_production
8029 , x_asset_deprn_rec.reval_deprn_reserve;
8030 CLOSE c_get_eofy_rsv;
8031 if (x_asset_deprn_rec.deprn_reserve is null) then
8032 -- Bug 10081147 : c_get_eofy_rsv did not fetch any row
8033 OPEN c_get_books_rsv;
8034 FETCH c_get_books_rsv INTO x_asset_deprn_rec.deprn_reserve
8035 , x_asset_deprn_rec.bonus_deprn_reserve
8036 , x_asset_deprn_rec.impairment_reserve
8037 , x_asset_deprn_rec.ltd_production
8038 , x_asset_deprn_rec.reval_deprn_reserve;
8039 CLOSE c_get_books_rsv;
8040 end if;
8041 if (x_asset_deprn_rec.deprn_reserve is null) then
8042 -- Bug 10081147 : c_get_books_rsv did not fetch any row
8043 x_asset_deprn_rec.deprn_reserve := 0;
8044 x_asset_deprn_rec.bonus_deprn_reserve := 0;
8045 x_asset_deprn_rec.impairment_reserve := 0;
8046 x_asset_deprn_rec.ltd_production := 0;
8047 x_asset_deprn_rec.reval_deprn_reserve := 0;
8048 end if;
8049
8050 end if;
8051
8052 x_asset_deprn_rec.deprn_amount := 0;
8053 x_asset_deprn_rec.ytd_deprn := 0;
8054 x_asset_deprn_rec.prior_fy_expense := 0;
8055 x_asset_deprn_rec.bonus_deprn_amount := 0;
8056 x_asset_deprn_rec.impairment_amount := 0;
8057 x_asset_deprn_rec.bonus_ytd_deprn := 0;
8058 x_asset_deprn_rec.prior_fy_bonus_expense := 0;
8059 x_asset_deprn_rec.ytd_impairment := 0;
8060 x_asset_deprn_rec.reval_amortization := 0;
8061 x_asset_deprn_rec.reval_amortization_basis := 0;
8062 x_asset_deprn_rec.reval_ytd_deprn := 0;
8063 x_asset_deprn_rec.reval_deprn_reserve := 0;
8064 x_asset_deprn_rec.production := 0;
8065 x_asset_deprn_rec.ytd_production := 0;
8066
8067
8068 end if;
8069 --tk_util.DumpDeprnRec(x_asset_deprn_rec, 'GDS');
8070
8071 if (p_mrc_sob_type_code = 'R') then
8072 OPEN c_get_mc_adjs;
8073 FETCH c_get_mc_adjs INTO l_deprn_rsv,
8074 l_deprn_exp,
8075 l_bonus_deprn_rsv,
8076 l_bonus_deprn_amount,
8077 l_impairment_rsv,
8078 l_impairment_amount,
8079 l_deprn_adjust_exp,
8080 l_reval_deprn_exp,
8081 l_reval_amo,
8082 l_reval_rsv,
8083 l_reval_exp,
8084 l_unplanned_exp;
8085 CLOSE c_get_mc_adjs;
8086 else
8087 OPEN c_get_adjs;
8088 FETCH c_get_adjs INTO l_deprn_rsv,
8089 l_deprn_exp,
8090 l_bonus_deprn_rsv,
8091 l_bonus_deprn_amount,
8092 l_impairment_rsv,
8093 l_impairment_amount,
8094 l_deprn_adjust_exp,
8095 l_reval_deprn_exp,
8096 l_reval_amo,
8097 l_reval_rsv,
8098 l_reval_exp,
8099 l_unplanned_exp;
8100 CLOSE c_get_adjs;
8101 end if;
8102
8103 if (l_deprn_exp <> 0) then
8104 x_asset_deprn_rec.deprn_amount := x_asset_deprn_rec.deprn_amount + l_deprn_exp;
8105 x_asset_deprn_rec.ytd_deprn := x_asset_deprn_rec.ytd_deprn + l_deprn_exp;
8106 x_asset_deprn_rec.deprn_reserve := x_asset_deprn_rec.deprn_reserve + l_deprn_exp -
8107 l_reval_exp;
8108 end if;
8109
8110 if (l_bonus_deprn_amount <> 0) then
8111 x_asset_deprn_rec.bonus_deprn_amount := x_asset_deprn_rec.bonus_deprn_amount +
8112 l_bonus_deprn_amount;
8113 x_asset_deprn_rec.bonus_ytd_deprn := x_asset_deprn_rec.bonus_ytd_deprn +
8114 l_bonus_deprn_amount;
8115 x_asset_deprn_rec.bonus_deprn_reserve := x_asset_deprn_rec.bonus_deprn_reserve +
8116 l_bonus_deprn_amount;
8120 x_asset_deprn_rec.impairment_amount := x_asset_deprn_rec.impairment_amount +
8117 end if;
8118
8119 if (l_impairment_amount <> 0) then
8121 l_impairment_amount;
8122 x_asset_deprn_rec.ytd_impairment := x_asset_deprn_rec.ytd_impairment +
8123 l_impairment_amount;
8124 x_asset_deprn_rec.impairment_reserve := x_asset_deprn_rec.impairment_reserve +
8125 l_impairment_amount;
8126 end if;
8127
8128 if (l_deprn_rsv <> 0) then
8129 x_asset_deprn_rec.deprn_reserve := x_asset_deprn_rec.deprn_reserve - l_deprn_rsv;
8130 end if;
8131
8132 --tk_util.DumpDeprnRec(x_asset_deprn_rec, 'GDA');
8133 p_unplanned_exp := l_unplanned_exp;
8134
8135 if (p_log_level_rec.statement_level) then
8136 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
8137 end if;
8138
8139 return true;
8140
8141 EXCEPTION
8142 when error_found then
8143 if (p_log_level_rec.statement_level) then
8144 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'error_found', p_log_level_rec => p_log_level_rec);
8145 end if;
8146
8147 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
8148 return false;
8149
8150 when others then
8151 if (p_log_level_rec.statement_level) then
8152 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
8153 end if;
8154
8155 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
8156 return false;
8157
8158 END GetDeprnRec;
8159
8160 --+==============================================================================
8161 -- Function: GetEofyReserve
8162 --
8163 --+==============================================================================
8164 FUNCTION GetEofyReserve(
8165 p_trans_rec FA_API_TYPES.trans_rec_type,
8166 p_trans_rec_cur FA_API_TYPES.trans_rec_type,
8167 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
8168 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
8169 p_period_rec FA_API_TYPES.period_rec_type,
8170 x_eofy_reserve OUT NOCOPY NUMBER,
8171 x_transaction_header_id OUT NOCOPY NUMBER,
8172 x_transaction_date_entered OUT NOCOPY DATE,
8173 x_date_effective OUT NOCOPY DATE,
8174 x_transaction_type_code OUT NOCOPY VARCHAR2,
8175 p_mrc_sob_type_code VARCHAR2,
8176 p_calling_fn VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return BOOLEAN IS
8177
8178 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.GetEofyReserve';
8179 get_err EXCEPTION;
8180
8181 --
8182 -- Find transaction which is
8183 -- Entered in the same fiscal year as given transaction date
8184 -- The transaction has transaction_date ealier than the fiscal year start date
8185 -- In this case, Recalculation needs to go back more to recalculate because
8186 -- it is impossible to find eofy_reserve from fa_deprn_summary
8187 -- Bug 5654286 Excluded ADDITION/VOID transaction
8188 CURSOR c_get_other_trx IS
8189 select th.transaction_header_id transaction_header_id,
8190 nvl(th.amortization_start_date, th.transaction_date_entered) transaction_date_entered,
8191 th.date_effective date_effective,
8192 th.transaction_type_code transaction_type_code
8193 from
8194 fa_transaction_headers th,
8195 fa_deprn_periods dp,
8196 fa_book_controls bc,
8197 fa_fiscal_year fy
8198 where th.asset_id = p_asset_hdr_rec.asset_id
8199 and th.book_type_code = p_asset_hdr_rec.book_type_code
8200 and bc.book_type_code = p_asset_hdr_rec.book_type_code
8201 and bc.fiscal_year_name = fy.fiscal_year_name
8202 and dp.book_type_code = p_asset_hdr_rec.book_type_code
8203 and dp.fiscal_year = fy.fiscal_year
8204 and dp.calendar_period_open_date = fy.start_date
8205 and p_trans_rec.transaction_date_entered
8206 between fy.start_date and end_date
8207 and th.date_effective >= dp.period_open_date
8208 and th.transaction_date_entered < dp.calendar_period_open_date
8209 and th.transaction_header_id < p_trans_rec.transaction_header_id
8210 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
8211 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
8212 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
8213 G_TRX_TYPE_TFR_VOID)
8214 and not exists (select 1
8215 from fa_deprn_summary ds
8216 , fa_deprn_periods dp2
8217 where ds.asset_id = p_asset_hdr_rec.asset_id
8218 and ds.book_type_code = p_asset_hdr_rec.book_type_code
8219 and dp.book_type_code = p_asset_hdr_rec.book_type_code
8220 and dp.fiscal_year = fy.fiscal_year
8221 and ds.period_counter = dp2.period_counter -1
8222 and ds.deprn_source_code = 'BOOKS'
8223 and ds.deprn_reserve <> 0
8224 and th.date_effective between dp2.period_open_date and dp2.period_close_date
8225 and th.transaction_type_code in (G_TRX_TYPE_ADD, G_TRX_TYPE_ADD_VOID))
8226 ;
8227
8228 CURSOR c_get_ret_trx IS
8229 select nvl(sum(ret.reserve_retired), 0),
8230 nvl(sum(ret.eofy_reserve), 0)
8231 from fa_retirements ret,
8232 fa_transaction_headers mth,
8233 fa_transaction_headers gth,
8234 fa_book_controls bc,
8235 fa_fiscal_year fy
8236 where gth.asset_id = p_asset_hdr_rec.asset_id
8240 and ret.date_retired between fy.start_date
8237 and gth.book_type_code = p_asset_hdr_rec.book_type_code
8238 and bc.book_type_code = p_asset_hdr_rec.book_type_code
8239 and bc.fiscal_year_name = fy.fiscal_year_name
8241 and p_trans_rec.transaction_date_entered
8242 and gth.member_transaction_header_id = mth.transaction_header_id
8243 and mth.book_type_code = p_asset_hdr_rec.book_type_code
8244 and mth.transaction_header_id = ret.transaction_header_id_in
8245 and mth.asset_id = ret.asset_id
8246 and gth.member_transaction_header_id = ret.transaction_header_id_in
8247 and ret.book_type_code = p_asset_hdr_rec.book_type_code
8248 and ret.transaction_header_id_out is null
8249 and fy.start_date =
8250 (select fy.start_date
8251 from fa_fiscal_year fy,
8252 fa_book_controls bc
8253 where bc.book_type_code = p_asset_hdr_rec.book_type_code
8254 and bc.fiscal_year_name = fy.fiscal_year_name
8255 and fy.start_date <= p_trans_rec.transaction_date_entered
8256 and fy.end_date >= p_trans_rec.transaction_date_entered
8257 );
8258
8259 CURSOR c_get_mc_ret_trx IS
8260 select nvl(sum(ret.reserve_retired), 0),
8261 nvl(sum(ret.eofy_reserve), 0)
8262 from fa_mc_retirements ret,
8263 fa_transaction_headers mth,
8264 fa_transaction_headers gth,
8265 fa_mc_book_controls mbc,
8266 fa_book_controls bc,
8267 fa_fiscal_year fy
8268 where gth.asset_id = p_asset_hdr_rec.asset_id
8269 and gth.book_type_code = p_asset_hdr_rec.book_type_code
8270 and bc.book_type_code = p_asset_hdr_rec.book_type_code
8271 and mbc.book_type_code = p_asset_hdr_rec.book_type_code
8272 and mbc.set_of_books_id = p_asset_hdr_rec.set_of_books_id
8273 and bc.fiscal_year_name = fy.fiscal_year_name
8274 and ret.date_retired between fy.start_date
8275 and p_trans_rec.transaction_date_entered
8276 and gth.member_transaction_header_id = mth.transaction_header_id
8277 and mth.book_type_code = p_asset_hdr_rec.book_type_code
8278 and mth.transaction_header_id = ret.transaction_header_id_in
8279 and mth.asset_id = ret.asset_id
8280 and gth.member_transaction_header_id = ret.transaction_header_id_in
8281 and ret.book_type_code = p_asset_hdr_rec.book_type_code
8282 and ret.transaction_header_id_out is null
8283 and ret.set_of_books_id = p_asset_hdr_rec.set_of_books_id
8284 and fy.start_date =
8285 (select fy.start_date
8286 from fa_fiscal_year fy,
8287 fa_mc_book_controls bc
8288 where bc.book_type_code = p_asset_hdr_rec.book_type_code
8289 and bc.set_of_books_id = p_asset_hdr_rec.set_of_books_id
8290 and bc.fiscal_year_name = fy.fiscal_year_name
8291 and fy.start_date <= p_trans_rec.transaction_date_entered
8292 and fy.end_date >= p_trans_rec.transaction_date_entered
8293 );
8294
8295 CURSOR c_get_ret_trx2 IS
8296 select nvl(sum(ret.reserve_retired), 0),
8297 nvl(sum(ret.eofy_reserve), 0)
8298 from fa_retirements ret,
8299 fa_transaction_headers th,
8300 fa_book_controls bc,
8301 fa_fiscal_year fy
8302 where th.asset_id = p_asset_hdr_rec.asset_id
8303 and th.book_type_code = p_asset_hdr_rec.book_type_code
8304 and bc.book_type_code = p_asset_hdr_rec.book_type_code
8305 and bc.fiscal_year_name = fy.fiscal_year_name
8306 and ret.date_retired between fy.start_date
8307 and p_trans_rec.transaction_date_entered
8308 and th.transaction_header_id = ret.transaction_header_id_in
8309 and th.asset_id = ret.asset_id
8310 and ret.book_type_code = p_asset_hdr_rec.book_type_code
8311 and ret.transaction_header_id_out is null;
8312
8313 -- CURSOR c_get_mc_ret_trx2 IS
8314
8315 CURSOR c_get_deprn_period IS
8316 select period_counter - 1
8317 , period_open_date
8318 , period_close_date
8319 , period_num
8320 from fa_deprn_periods
8321 where book_type_code = p_asset_hdr_rec.book_type_code
8322 and p_trans_rec.transaction_date_entered between
8323 calendar_period_open_date and calendar_period_close_date;
8324
8325 -- Get the transaction before the member addition's transaction which member is reclassed
8326 -- on same fiscal year.
8327
8328 CURSOR c_get_other_trx2 IS
8329 select th.transaction_header_id transaction_header_id,
8330 nvl(th.amortization_start_date, th.transaction_date_entered) transaction_date_entered,
8331 th.date_effective date_effective,
8332 th.transaction_type_code transaction_type_code
8333 from fa_transaction_headers th
8334 where th.asset_id = p_asset_hdr_rec.asset_id
8335 and th.book_type_code = p_asset_hdr_rec.book_type_code
8336 and th.transaction_header_id =
8337 -- Get the latest trasnaction of reclassed member asset on group asset
8338 (select max(th.transaction_header_id)
8339 from fa_transaction_headers th
8340 where th.asset_id =p_asset_hdr_rec.asset_id
8341 and th.book_type_code = p_asset_hdr_rec.book_type_code
8342 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
8343 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
8347 -- Get first transaction of reclassed member asset on group asset
8344 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
8345 G_TRX_TYPE_TFR_VOID)
8346 and th.transaction_header_id <
8348 (select min(th.transaction_header_id)
8349 from fa_transaction_headers th
8350 where th.book_type_code = p_asset_hdr_rec.book_type_code
8351 and th.asset_id = p_asset_hdr_rec.asset_id
8352 and th.member_transaction_header_id in
8353 -- Get reclassed member's all transaction headers
8354 (select th.transaction_header_id
8355 from fa_transaction_headers th
8356 where th.book_type_code = p_asset_hdr_rec.book_type_code
8357 and th.asset_id in
8358 -- Get reclassed member's asset_id
8359 (select th.asset_id
8360 from fa_transaction_headers th
8361 where th.book_type_code = p_asset_hdr_rec.book_type_code
8362 and transaction_header_id in
8363 -- Get reclassed transaction after this transaction's fiscal year
8364 (select th.member_transaction_header_id
8365 from fa_transaction_headers th,
8366 fa_deprn_periods dp,
8367 fa_fiscal_year fy,
8368 fa_book_controls bc
8369 where th.asset_id = p_asset_hdr_rec.asset_id
8370 and th.book_type_code = p_asset_hdr_rec.book_type_code
8371 and dp.book_type_code = p_asset_hdr_rec.book_type_code
8372 and dp.book_type_code = bc.book_type_code
8373 and bc.fiscal_year_name = fy.fiscal_year_name
8374 and p_trans_rec.transaction_date_entered
8375 between fy.start_date and fy.end_date
8376 and dp.fiscal_year= fy.fiscal_year
8377 and dp.period_num =1
8378 and th.date_effective >= dp.period_open_date
8379 and th.trx_reference_id is not null
8380 and th.member_transaction_header_id is not null
8381 and th.transaction_header_id < p_trans_rec.transaction_header_id
8382
8383 )))));
8384
8385
8386 CURSOR c_cur_eofy_reserve IS
8387 select nvl(bk.eofy_reserve,0)
8388 from FA_BOOKS bk
8389 where asset_id = p_asset_hdr_rec.asset_id
8390 and book_type_code = p_asset_hdr_rec.book_type_code
8391 and transaction_header_id_out is null;
8392
8393
8394 l_transaction_header_id NUMBER;
8395 l_transaction_date_entered DATE;
8396 l_date_effective DATE;
8397 l_transaction_type_code VARCHAR2(30);
8398
8399 l_period_rec FA_API_TYPES.period_rec_type;
8400 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
8401
8402 l_unplanned_exp NUMBER := 0;
8403 l_reserve_retired NUMBER := 0;
8404 l_eofy_reserve_retired NUMBER := 0;
8405
8406 BEGIN
8407
8408 if (p_log_level_rec.statement_level) then
8409 fa_debug_pkg.add('====='||l_calling_fn||'=====', 'Begin', to_char(p_trans_rec.transaction_header_id)||'=====');
8410 end if;
8411
8412 if p_trans_rec_cur.transaction_header_id = p_trans_rec.transaction_header_id
8413 and p_trans_rec.transaction_date_entered between
8414 p_period_rec.calendar_period_open_date and p_period_rec.calendar_period_close_date
8415 then
8416 -- At current open period's transaction, get eofy_reserve from FA_BOOKS.
8417
8418 x_transaction_header_id := to_number(null);
8419 x_transaction_date_entered := null;
8420 x_date_effective := null;
8421
8422 OPEN c_cur_eofy_reserve;
8423 FETCH c_cur_eofy_reserve into x_eofy_reserve;
8424 CLOSE c_cur_eofy_reserve;
8425
8426 if (p_log_level_rec.statement_level) then
8427 fa_debug_pkg.add(l_calling_fn, 'Can determine current eofy reserve from db ', x_eofy_reserve, p_log_level_rec => p_log_level_rec);
8428 end if;
8429
8430 else
8431
8432 OPEN c_get_other_trx;
8433 FETCH c_get_other_trx INTO l_transaction_header_id, l_transaction_date_entered,
8434 l_date_effective, l_transaction_type_code;
8435
8436 --tk_util.debug('l_transaction_header_id: '||to_char(l_transaction_header_id));
8437
8438 if (c_get_other_trx%NOTFOUND) then
8439 --tk_util.debug('c_get_other_trx not found');
8440 OPEN c_get_other_trx2;
8441 FETCH c_get_other_trx2 INTO l_transaction_header_id, l_transaction_date_entered,
8442 l_date_effective, l_transaction_type_code;
8443 end if;
8444
8445 if (c_get_other_trx%NOTFOUND and c_get_other_trx2%NOTFOUND) then
8446
8447 x_transaction_header_id := to_number(null);
8448 x_transaction_date_entered := null;
8449 x_date_effective := null;
8450
8451
8452 OPEN c_get_deprn_period;
8453 FETCH c_get_deprn_period INTO l_period_rec.period_counter,
8454 l_period_rec.period_open_date,
8455 l_period_rec.period_close_date,
8456 l_period_rec.period_num;
8457
8458 if (c_get_deprn_period%NOTFOUND) then
8459 CLOSE c_get_deprn_period;
8460
8461 x_eofy_reserve := 0;
8462
8463 if (p_log_level_rec.statement_level) then
8464 fa_debug_pkg.add(l_calling_fn, 'This must be addition so eofy reserve ', x_eofy_reserve, p_log_level_rec => p_log_level_rec);
8465 end if;
8466 else
8467 CLOSE c_get_deprn_period;
8468
8472 p_period_rec => l_period_rec,
8469 if not GetDeprnRec (
8470 p_trans_rec => p_trans_rec,
8471 p_asset_hdr_rec => p_asset_hdr_rec,
8473 x_asset_deprn_rec => l_asset_deprn_rec,
8474 p_mrc_sob_type_code => p_mrc_sob_type_code,
8475 p_unplanned_exp => l_unplanned_exp,
8476 p_log_level_rec => p_log_level_rec) then
8477
8478 if (p_log_level_rec.statement_level) then
8479 fa_debug_pkg.add(l_calling_fn, 'Error calling',
8480 'GetDeprnRec', p_log_level_rec => p_log_level_rec);
8481 end if;
8482
8483 raise get_err;
8484 end if;
8485
8486 if (p_mrc_sob_type_code = 'R') then
8487 OPEN c_get_mc_ret_trx;
8488 FETCH c_get_mc_ret_trx INTO l_reserve_retired, l_eofy_reserve_retired;
8489 CLOSE c_get_mc_ret_trx;
8490 else
8491 OPEN c_get_ret_trx;
8492 FETCH c_get_ret_trx INTO l_reserve_retired, l_eofy_reserve_retired;
8493 CLOSE c_get_ret_trx;
8494 end if;
8495
8496 if (p_log_level_rec.statement_level) then
8497 fa_debug_pkg.add(l_calling_fn, 'Sum of Reserve Retired',
8498 l_reserve_retired, p_log_level_rec => p_log_level_rec);
8499 fa_debug_pkg.add(l_calling_fn, 'Sum of Eofy Reserve Retired',
8500 l_eofy_reserve_retired, p_log_level_rec => p_log_level_rec);
8501 fa_debug_pkg.add(l_calling_fn, 'l_unplanned_exp ', l_unplanned_exp, p_log_level_rec => p_log_level_rec);
8502 end if;
8503
8504 if (l_period_rec.period_num = 1) then
8505 x_eofy_reserve := l_asset_deprn_rec.deprn_reserve
8506 + l_reserve_retired
8507 - l_eofy_reserve_retired
8508 - l_unplanned_exp;
8509 else
8510 x_eofy_reserve := l_asset_deprn_rec.deprn_reserve
8511 + l_reserve_retired
8512 - l_asset_deprn_rec.ytd_deprn
8513 - l_eofy_reserve_retired;
8514 -- - l_unplanned_exp; /* Commented for bug#7246137 */
8515 end if;
8516
8517 if (p_log_level_rec.statement_level) then
8518 fa_debug_pkg.add(l_calling_fn, 'Can determine eofy reserve from db ', x_eofy_reserve, p_log_level_rec => p_log_level_rec);
8519 end if;
8520
8521 end if;
8522
8523 else -- c_get_other_trx/2 FOUND
8524
8525 x_eofy_reserve := to_number(null);
8526 x_transaction_header_id := l_transaction_header_id;
8527 x_transaction_date_entered := l_transaction_date_entered;
8528 x_date_effective := l_date_effective;
8529 x_transaction_type_code := l_transaction_type_code;
8530
8531 if (p_log_level_rec.statement_level) then
8532 fa_debug_pkg.add(l_calling_fn, 'Need to go earlier trx',
8533 to_char(x_transaction_header_id)||':'||
8534 to_char(x_transaction_date_entered, 'DD-MON-RR HH24:MI:SS')||':'||
8535 to_char(x_date_effective, 'DD-MON-RR HH24:MI:SS'));
8536 end if;
8537
8538 end if; -- End of c_get_other_trx/2 NOTFOUND
8539
8540 CLOSE c_get_other_trx;
8541 IF c_get_other_trx2%ISOPEN then
8542 CLOSE c_get_other_trx2;
8543 end if;
8544
8545 end if; -- End of current period transaction or not
8546
8547 fa_debug_pkg.add('====='||l_calling_fn||'=====', 'End', '=====', p_log_level_rec => p_log_level_rec);
8548
8549 return TRUE;
8550
8551 EXCEPTION
8552 WHEN get_err THEN
8553 if (p_log_level_rec.statement_level) then
8554 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'get_err', p_log_level_rec => p_log_level_rec);
8555 end if;
8556
8557 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
8558 return false;
8559
8560 WHEN others THEN
8561 if (p_log_level_rec.statement_level) then
8562 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
8563 end if;
8564
8565 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
8566 return false;
8567
8568 END GetEofyReserve;
8569
8570 --+==============================================================================
8571 -- Function: GetFinAdjRec
8572 --
8573 --
8574 --
8575 --
8576 --
8577 --+==============================================================================
8578 FUNCTION GetFinAdjRec(
8579 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
8580 p_reclass_src_dest VARCHAR2,
8581 p_transaction_date_entered DATE,
8582 x_asset_fin_rec_adj OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
8583 p_mrc_sob_type_code VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
8584 return BOOLEAN is
8585
8586 l_calling_fn VARCHAR2(50) := 'FA_AMORT_PVT.GetFinAdjRec';
8587 get_err EXCEPTION;
8588
8589 CURSOR c_get_fin_adj_rec IS
8590 select decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(inbk.cost - nvl(outbk.cost, 0))
8591 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(inbk.salvage_value - nvl(outbk.salvage_value, 0))
8592 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(decode(inbk.production_capacity,
8593 null, decode(outbk.production_capacity,
8597 nvl(outbk.production_capacity, 0)))
8594 null, null,
8595 outbk.production_capacity),
8596 nvl(inbk.production_capacity, 0) -
8598 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(decode(inbk.reval_amortization_basis,
8599 null, decode(outbk.reval_amortization_basis,
8600 null, null,
8601 outbk.reval_amortization_basis),
8602 nvl(inbk.reval_amortization_basis, 0) -
8603 nvl(outbk.reval_amortization_basis, 0)))
8604 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(decode(inbk.reval_ceiling,
8605 null, decode(outbk.reval_ceiling,
8606 null, null,
8607 outbk.reval_ceiling),
8608 nvl(inbk.reval_ceiling, 0) - nvl(outbk.reval_ceiling, 0)))
8609 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(inbk.unrevalued_cost - nvl(outbk.unrevalued_cost, 0))
8610 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(nvl(inbk.allowed_deprn_limit_amount, 0) -
8611 nvl(outbk.allowed_deprn_limit_amount, 0))
8612 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0))
8613 from fa_transaction_headers th,
8614 fa_books inbk,
8615 fa_books outbk
8616 where inbk.asset_id = p_asset_hdr_rec.asset_id
8617 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
8618 and outbk.asset_id(+) = p_asset_hdr_rec.asset_id
8619 and outbk.book_type_code(+) = p_asset_hdr_rec.book_type_code
8620 and inbk.transaction_header_id_in = th.transaction_header_id
8621 and outbk.transaction_header_id_out(+) = th.transaction_header_id
8622 and th.asset_id = p_asset_hdr_rec.asset_id
8623 and th.book_type_code = p_asset_hdr_rec.book_type_code
8624 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
8625 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
8626 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
8627 G_TRX_TYPE_TFR_VOID)
8628 and nvl(th.amortization_start_date,
8629 th.transaction_date_entered) <= p_transaction_date_entered
8630 and not exists(select 'Exclude This Retirement'
8631 from fa_retirements ret,
8632 fa_transaction_headers reith
8633 where ret.transaction_header_id_in = th.transaction_header_id
8634 and ret.transaction_header_id_out = reith.transaction_header_id
8635 and nvl(reith.amortization_start_date,
8636 reith.transaction_date_entered) <= p_transaction_date_entered)
8637 order by transaction_date_entered;
8638
8639 CURSOR c_get_mc_fin_adj_rec IS
8640 select decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(inbk.cost - nvl(outbk.cost, 0))
8641 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(inbk.salvage_value - nvl(outbk.salvage_value, 0))
8642 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(decode(inbk.production_capacity,
8643 null, decode(outbk.production_capacity,
8644 null, null,
8645 outbk.production_capacity),
8646 nvl(inbk.production_capacity, 0) -
8647 nvl(outbk.production_capacity, 0)))
8648 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(decode(inbk.reval_amortization_basis,
8649 null, decode(outbk.reval_amortization_basis,
8650 null, null,
8651 outbk.reval_amortization_basis),
8652 nvl(inbk.reval_amortization_basis, 0) -
8653 nvl(outbk.reval_amortization_basis, 0)))
8654 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(decode(inbk.reval_ceiling,
8655 null, decode(outbk.reval_ceiling,
8656 null, null,
8657 outbk.reval_ceiling),
8658 nvl(inbk.reval_ceiling, 0) - nvl(outbk.reval_ceiling, 0)))
8659 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(inbk.unrevalued_cost - nvl(outbk.unrevalued_cost, 0))
8660 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(nvl(inbk.allowed_deprn_limit_amount, 0) -
8661 nvl(outbk.allowed_deprn_limit_amount, 0))
8662 , decode(p_reclass_src_dest, 'SOURCE', -1, 1) * sum(nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0))
8663 from fa_transaction_headers th,
8664 fa_mc_books inbk,
8665 fa_mc_books outbk
8666 where inbk.asset_id = p_asset_hdr_rec.asset_id
8667 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
8668 and inbk.set_of_books_id = p_asset_hdr_rec.set_of_books_id
8669 and outbk.asset_id(+) = p_asset_hdr_rec.asset_id
8670 and outbk.book_type_code(+) = p_asset_hdr_rec.book_type_code
8671 and outbk.set_of_books_id = p_asset_hdr_rec.set_of_books_id
8672 and inbk.transaction_header_id_in = th.transaction_header_id
8673 and outbk.transaction_header_id_out(+) = th.transaction_header_id
8674 and th.asset_id = p_asset_hdr_rec.asset_id
8675 and th.book_type_code = p_asset_hdr_rec.book_type_code
8676 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
8677 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
8678 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
8679 G_TRX_TYPE_TFR_VOID)
8680 and nvl(th.amortization_start_date,
8681 th.transaction_date_entered) <= p_transaction_date_entered
8682 and not exists(select 'Exclude This Retirement'
8686 and ret.transaction_header_id_out = reith.transaction_header_id
8683 from fa_mc_retirements ret,
8684 fa_transaction_headers reith
8685 where ret.transaction_header_id_in = th.transaction_header_id
8687 and ret.set_of_books_id = p_asset_hdr_rec.set_of_books_id
8688 and nvl(reith.amortization_start_date,
8689 reith.transaction_date_entered) <= p_transaction_date_entered)
8690 order by transaction_date_entered;
8691
8692
8693 BEGIN
8694
8695 if (p_log_level_rec.statement_level) then
8696 fa_debug_pkg.add(l_calling_fn, 'Begin',
8697 to_char(p_asset_hdr_rec.asset_id)||':'||
8698 to_char(p_transaction_date_entered, 'DD-MON-YYYY'));
8699 end if;
8700
8701 if (p_mrc_sob_type_code = 'R') then
8702 OPEN c_get_mc_fin_adj_rec;
8703 FETCH c_get_mc_fin_adj_rec INTO x_asset_fin_rec_adj.cost
8704 , x_asset_fin_rec_adj.salvage_value
8705 , x_asset_fin_rec_adj.production_capacity
8706 , x_asset_fin_rec_adj.reval_amortization_basis
8707 , x_asset_fin_rec_adj.reval_ceiling
8708 , x_asset_fin_rec_adj.unrevalued_cost
8709 , x_asset_fin_rec_adj.allowed_deprn_limit_amount
8710 , x_asset_fin_rec_adj.cip_cost;
8711 CLOSE c_get_mc_fin_adj_rec;
8712 else
8713 OPEN c_get_fin_adj_rec;
8714 FETCH c_get_fin_adj_rec INTO x_asset_fin_rec_adj.cost
8715 , x_asset_fin_rec_adj.salvage_value
8716 , x_asset_fin_rec_adj.production_capacity
8717 , x_asset_fin_rec_adj.reval_amortization_basis
8718 , x_asset_fin_rec_adj.reval_ceiling
8719 , x_asset_fin_rec_adj.unrevalued_cost
8720 , x_asset_fin_rec_adj.allowed_deprn_limit_amount
8721 , x_asset_fin_rec_adj.cip_cost;
8722 CLOSE c_get_fin_adj_rec;
8723 end if;
8724
8725 if (p_log_level_rec.statement_level) then
8726 fa_debug_pkg.add(l_calling_fn, 'End',
8727 to_char(x_asset_fin_rec_adj.cost)||':'||
8728 to_char(x_asset_fin_rec_adj.salvage_value)||':'||
8729 to_char(x_asset_fin_rec_adj.production_capacity)||':'||
8730 to_char(x_asset_fin_rec_adj.reval_amortization_basis)||':'||
8731 to_char(x_asset_fin_rec_adj.reval_ceiling)||':'||
8732 to_char(x_asset_fin_rec_adj.unrevalued_cost)||':'||
8733 to_char(x_asset_fin_rec_adj.allowed_deprn_limit_amount)||':'||
8734 to_char(x_asset_fin_rec_adj.cip_cost));
8735 end if;
8736
8737 return true;
8738
8739 EXCEPTION
8740 WHEN get_err THEN
8741 if (p_log_level_rec.statement_level) then
8742 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'get_err', p_log_level_rec => p_log_level_rec);
8743 end if;
8744
8745 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
8746 return false;
8747
8748 WHEN others THEN
8749 if (p_log_level_rec.statement_level) then
8750 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
8751 end if;
8752
8753 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
8754 return false;
8755 END GetFinAdjRec;
8756
8757 --+==============================================================================
8758 -- Function: GetFinRec
8759 --
8760 --
8761 --
8762 --
8763 --
8764 --+==============================================================================
8765 FUNCTION GetFinRec(
8766 p_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
8767 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
8768 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
8769 px_asset_fin_rec IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
8770 p_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type,
8771 p_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type,
8772 x_asset_fin_rec_new OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
8773 p_init_transaction_header_id FA_TRANSACTION_HEADERS.TRANSACTION_HEADER_ID%TYPE,
8774 p_use_fin_rec_adj BOOLEAN,
8775 p_use_new_deprn_rule BOOLEAN,
8776 p_process_this_trx BOOLEAN,
8777 x_dpis_change OUT NOCOPY BOOLEAN,
8778 p_mrc_sob_type_code VARCHAR2
8779 ,p_log_level_rec IN fa_api_types.log_level_rec_type default null
8780 ) return BOOLEAN IS
8781
8782 Cursor c_get_init_bk IS
8783 select date_placed_in_service
8784 , deprn_start_date
8785 , deprn_method_code
8786 , life_in_months
8787 , rate_adjustment_factor
8788 , adjusted_cost
8789 , cost
8790 , original_cost
8791 , salvage_value
8792 , prorate_convention_code
8793 , prorate_date
8794 , cost_change_flag
8795 , adjustment_required_status
8796 , capitalize_flag
8797 , retirement_pending_flag
8798 , depreciate_flag
8799 , itc_amount_id
8800 , itc_amount
8801 , retirement_id
8802 , tax_request_id
8803 , itc_basis
8804 , basic_rate
8808 , recoverable_cost
8805 , adjusted_rate
8806 , bonus_rule
8807 , ceiling_name
8809 , adjusted_capacity
8810 , fully_rsvd_revals_counter
8811 , idled_flag
8812 , period_counter_capitalized
8813 , period_counter_fully_reserved
8814 , period_counter_fully_retired
8815 , production_capacity
8816 , reval_amortization_basis
8817 , reval_ceiling
8818 , unit_of_measure
8819 , unrevalued_cost
8820 , annual_deprn_rounding_flag
8821 , percent_salvage_value
8822 , allowed_deprn_limit
8823 , allowed_deprn_limit_amount
8824 , period_counter_life_complete
8825 , adjusted_recoverable_cost
8826 , annual_rounding_flag
8827 , eofy_adj_cost
8828 , eofy_formula_factor
8829 , short_fiscal_year_flag
8830 , conversion_date
8831 , ORIGINAL_DEPRN_START_DATE
8832 , remaining_life1
8833 , remaining_life2
8834 , group_asset_id
8835 , old_adjusted_cost
8836 , formula_factor
8837 , salvage_type
8838 , deprn_limit_type
8839 , over_depreciate_option
8840 , super_group_id
8841 , reduction_rate
8842 , reduce_addition_flag
8843 , reduce_adjustment_flag
8844 , reduce_retirement_flag
8845 , recognize_gain_loss
8846 , recapture_reserve_flag
8847 , limit_proceeds_flag
8848 , terminal_gain_loss
8849 , tracking_method
8850 , exclude_fully_rsv_flag
8851 , excess_allocation_option
8852 , depreciation_option
8853 , member_rollup_flag
8854 , ytd_proceeds
8855 , ltd_proceeds
8856 , allocate_to_fully_rsv_flag
8857 , allocate_to_fully_ret_flag
8858 , cip_cost
8859 , terminal_gain_loss_amount
8860 , ltd_cost_of_removal
8861 , prior_eofy_reserve
8862 , eofy_reserve
8863 , eop_adj_cost
8864 , eop_formula_factor
8865 , global_attribute1
8866 , global_attribute2
8867 , global_attribute3
8868 , global_attribute4
8869 , global_attribute5
8870 , global_attribute6
8871 , global_attribute7
8872 , global_attribute8
8873 , global_attribute9
8874 , global_attribute10
8875 , global_attribute11
8876 , global_attribute12
8877 , global_attribute13
8878 , global_attribute14
8879 , global_attribute15
8880 , global_attribute16
8881 , global_attribute17
8882 , global_attribute18
8883 , global_attribute19
8884 , global_attribute20
8885 , global_attribute_category
8886 , nbv_at_switch
8887 , prior_deprn_limit_type
8888 , prior_deprn_limit_amount
8889 , prior_deprn_limit
8890 , prior_deprn_method
8891 , prior_life_in_months
8892 , prior_basic_rate
8893 , prior_adjusted_rate
8894 from fa_books
8895 where asset_id = p_asset_hdr_rec.asset_id
8896 and book_type_code = p_asset_hdr_rec.book_type_code
8897 and (transaction_header_id_out = p_trans_rec.transaction_header_id
8898 or (transaction_header_id_in < p_trans_rec.transaction_header_id and
8899 transaction_header_id_out is null))
8900 order by transaction_header_id_in desc;
8901
8902
8903 Cursor c_get_init_bk_winit IS
8904 select date_placed_in_service
8905 , deprn_start_date
8906 , deprn_method_code
8907 , life_in_months
8908 , rate_adjustment_factor
8909 , adjusted_cost
8910 , cost
8911 , original_cost
8912 , salvage_value
8913 , prorate_convention_code
8914 , prorate_date
8915 , cost_change_flag
8916 , adjustment_required_status
8917 , capitalize_flag
8918 , retirement_pending_flag
8919 , depreciate_flag
8920 , itc_amount_id
8921 , itc_amount
8922 , retirement_id
8923 , tax_request_id
8924 , itc_basis
8925 , basic_rate
8926 , adjusted_rate
8927 , bonus_rule
8928 , ceiling_name
8929 , recoverable_cost
8930 , adjusted_capacity
8931 , fully_rsvd_revals_counter
8932 , idled_flag
8933 , period_counter_capitalized
8934 , period_counter_fully_reserved
8935 , period_counter_fully_retired
8936 , production_capacity
8937 , reval_amortization_basis
8938 , reval_ceiling
8939 , unit_of_measure
8940 , unrevalued_cost
8941 , annual_deprn_rounding_flag
8942 , percent_salvage_value
8943 , allowed_deprn_limit
8944 , allowed_deprn_limit_amount
8945 , period_counter_life_complete
8946 , adjusted_recoverable_cost
8947 , annual_rounding_flag
8948 , eofy_adj_cost
8949 , eofy_formula_factor
8950 , short_fiscal_year_flag
8951 , conversion_date
8952 , ORIGINAL_DEPRN_START_DATE
8953 , remaining_life1
8954 , remaining_life2
8955 , group_asset_id
8956 , old_adjusted_cost
8957 , formula_factor
8958 , salvage_type
8959 , deprn_limit_type
8960 , over_depreciate_option
8961 , super_group_id
8962 , reduction_rate
8963 , reduce_addition_flag
8967 , recapture_reserve_flag
8964 , reduce_adjustment_flag
8965 , reduce_retirement_flag
8966 , recognize_gain_loss
8968 , limit_proceeds_flag
8969 , terminal_gain_loss
8970 , tracking_method
8971 , exclude_fully_rsv_flag
8972 , excess_allocation_option
8973 , depreciation_option
8974 , member_rollup_flag
8975 , ytd_proceeds
8976 , ltd_proceeds
8977 , allocate_to_fully_rsv_flag
8978 , allocate_to_fully_ret_flag
8979 , cip_cost
8980 , terminal_gain_loss_amount
8981 , ltd_cost_of_removal
8982 , prior_eofy_reserve
8983 , eofy_reserve
8984 , eop_adj_cost
8985 , eop_formula_factor
8986 , global_attribute1
8987 , global_attribute2
8988 , global_attribute3
8989 , global_attribute4
8990 , global_attribute5
8991 , global_attribute6
8992 , global_attribute7
8993 , global_attribute8
8994 , global_attribute9
8995 , global_attribute10
8996 , global_attribute11
8997 , global_attribute12
8998 , global_attribute13
8999 , global_attribute14
9000 , global_attribute15
9001 , global_attribute16
9002 , global_attribute17
9003 , global_attribute18
9004 , global_attribute19
9005 , global_attribute20
9006 , global_attribute_category
9007 , nbv_at_switch
9008 , prior_deprn_limit_type
9009 , prior_deprn_limit_amount
9010 , prior_deprn_limit
9011 , prior_deprn_method
9012 , prior_life_in_months
9013 , prior_basic_rate
9014 , prior_adjusted_rate
9015 from fa_books
9016 where asset_id = p_asset_hdr_rec.asset_id
9017 and book_type_code = p_asset_hdr_rec.book_type_code
9018 and (transaction_header_id_out = p_init_transaction_header_id
9019 or (p_init_transaction_header_id > transaction_header_id_in and
9020 transaction_header_id_in < p_trans_rec.transaction_header_id and
9021 transaction_header_id_out is null))
9022 order by transaction_header_id_in desc;
9023
9024 Cursor c_get_init_mcbk IS
9025 select date_placed_in_service
9026 , deprn_start_date
9027 , deprn_method_code
9028 , life_in_months
9029 , rate_adjustment_factor
9030 , adjusted_cost
9031 , cost
9032 , original_cost
9033 , salvage_value
9034 , prorate_convention_code
9035 , prorate_date
9036 , cost_change_flag
9037 , adjustment_required_status
9038 , capitalize_flag
9039 , retirement_pending_flag
9040 , depreciate_flag
9041 , itc_amount_id
9042 , itc_amount
9043 , retirement_id
9044 , tax_request_id
9045 , itc_basis
9046 , basic_rate
9047 , adjusted_rate
9048 , bonus_rule
9049 , ceiling_name
9050 , recoverable_cost
9051 , adjusted_capacity
9052 , fully_rsvd_revals_counter
9053 , idled_flag
9054 , period_counter_capitalized
9055 , period_counter_fully_reserved
9056 , period_counter_fully_retired
9057 , production_capacity
9058 , reval_amortization_basis
9059 , reval_ceiling
9060 , unit_of_measure
9061 , unrevalued_cost
9062 , annual_deprn_rounding_flag
9063 , percent_salvage_value
9064 , allowed_deprn_limit
9065 , allowed_deprn_limit_amount
9066 , period_counter_life_complete
9067 , adjusted_recoverable_cost
9068 , annual_rounding_flag
9069 , eofy_adj_cost
9070 , eofy_formula_factor
9071 , short_fiscal_year_flag
9072 , conversion_date
9073 , ORIGINAL_DEPRN_START_DATE
9074 , remaining_life1
9075 , remaining_life2
9076 , group_asset_id
9077 , old_adjusted_cost
9078 , formula_factor
9079 , salvage_type
9080 , deprn_limit_type
9081 , over_depreciate_option
9082 , super_group_id
9083 , reduction_rate
9084 , reduce_addition_flag
9085 , reduce_adjustment_flag
9086 , reduce_retirement_flag
9087 , recognize_gain_loss
9088 , recapture_reserve_flag
9089 , limit_proceeds_flag
9090 , terminal_gain_loss
9091 , tracking_method
9092 , exclude_fully_rsv_flag
9093 , excess_allocation_option
9094 , depreciation_option
9095 , member_rollup_flag
9096 , ytd_proceeds
9097 , ltd_proceeds
9098 , allocate_to_fully_rsv_flag
9099 , allocate_to_fully_ret_flag
9100 , cip_cost
9101 , terminal_gain_loss_amount
9102 , ltd_cost_of_removal
9103 , prior_eofy_reserve
9104 , eofy_reserve
9105 , eop_adj_cost
9106 , eop_formula_factor
9107 , global_attribute1
9108 , global_attribute2
9109 , global_attribute3
9110 , global_attribute4
9111 , global_attribute5
9112 , global_attribute6
9113 , global_attribute7
9114 , global_attribute8
9115 , global_attribute9
9116 , global_attribute10
9117 , global_attribute11
9118 , global_attribute12
9119 , global_attribute13
9120 , global_attribute14
9121 , global_attribute15
9125 , global_attribute19
9122 , global_attribute16
9123 , global_attribute17
9124 , global_attribute18
9126 , global_attribute20
9127 , global_attribute_category
9128 from fa_mc_books
9129 where asset_id = p_asset_hdr_rec.asset_id
9130 and set_of_books_id = p_asset_hdr_rec.set_of_books_id
9131 and book_type_code = p_asset_hdr_rec.book_type_code
9132 and (transaction_header_id_out = p_trans_rec.transaction_header_id
9133 or (transaction_header_id_in < p_trans_rec.transaction_header_id and
9134 transaction_header_id_out is null))
9135 order by transaction_header_id_in desc;
9136
9137 Cursor c_get_init_mcbk_winit IS
9138 select date_placed_in_service
9139 , deprn_start_date
9140 , deprn_method_code
9141 , life_in_months
9142 , rate_adjustment_factor
9143 , adjusted_cost
9144 , cost
9145 , original_cost
9146 , salvage_value
9147 , prorate_convention_code
9148 , prorate_date
9149 , cost_change_flag
9150 , adjustment_required_status
9151 , capitalize_flag
9152 , retirement_pending_flag
9153 , depreciate_flag
9154 , itc_amount_id
9155 , itc_amount
9156 , retirement_id
9157 , tax_request_id
9158 , itc_basis
9159 , basic_rate
9160 , adjusted_rate
9161 , bonus_rule
9162 , ceiling_name
9163 , recoverable_cost
9164 , adjusted_capacity
9165 , fully_rsvd_revals_counter
9166 , idled_flag
9167 , period_counter_capitalized
9168 , period_counter_fully_reserved
9169 , period_counter_fully_retired
9170 , production_capacity
9171 , reval_amortization_basis
9172 , reval_ceiling
9173 , unit_of_measure
9174 , unrevalued_cost
9175 , annual_deprn_rounding_flag
9176 , percent_salvage_value
9177 , allowed_deprn_limit
9178 , allowed_deprn_limit_amount
9179 , period_counter_life_complete
9180 , adjusted_recoverable_cost
9181 , annual_rounding_flag
9182 , eofy_adj_cost
9183 , eofy_formula_factor
9184 , short_fiscal_year_flag
9185 , conversion_date
9186 , ORIGINAL_DEPRN_START_DATE
9187 , remaining_life1
9188 , remaining_life2
9189 , group_asset_id
9190 , old_adjusted_cost
9191 , formula_factor
9192 , salvage_type
9193 , deprn_limit_type
9194 , over_depreciate_option
9195 , super_group_id
9196 , reduction_rate
9197 , reduce_addition_flag
9198 , reduce_adjustment_flag
9199 , reduce_retirement_flag
9200 , recognize_gain_loss
9201 , recapture_reserve_flag
9202 , limit_proceeds_flag
9203 , terminal_gain_loss
9204 , tracking_method
9205 , exclude_fully_rsv_flag
9206 , excess_allocation_option
9207 , depreciation_option
9208 , member_rollup_flag
9209 , ytd_proceeds
9210 , ltd_proceeds
9211 , allocate_to_fully_rsv_flag
9212 , allocate_to_fully_ret_flag
9213 , cip_cost
9214 , terminal_gain_loss_amount
9215 , ltd_cost_of_removal
9216 , prior_eofy_reserve
9217 , eofy_reserve
9218 , eop_adj_cost
9219 , eop_formula_factor
9220 , global_attribute1
9221 , global_attribute2
9222 , global_attribute3
9223 , global_attribute4
9224 , global_attribute5
9225 , global_attribute6
9226 , global_attribute7
9227 , global_attribute8
9228 , global_attribute9
9229 , global_attribute10
9230 , global_attribute11
9231 , global_attribute12
9232 , global_attribute13
9233 , global_attribute14
9234 , global_attribute15
9235 , global_attribute16
9236 , global_attribute17
9237 , global_attribute18
9238 , global_attribute19
9239 , global_attribute20
9240 , global_attribute_category
9241 from fa_mc_books
9242 where set_of_books_id = p_asset_hdr_rec.set_of_books_id
9243 and asset_id = p_asset_hdr_rec.asset_id
9244 and book_type_code = p_asset_hdr_rec.book_type_code
9245 and (transaction_header_id_out = p_init_transaction_header_id
9246 or (p_init_transaction_header_id > transaction_header_id_in and
9247 transaction_header_id_in < p_trans_rec.transaction_header_id and
9248 transaction_header_id_out is null))
9249 order by transaction_header_id_in desc;
9250
9251 /* Bug 4043619 : Modified the cursor for salvage_value, allow_deprn_limit and allow_deprn_limit_adjusted. */
9252 /* Bug 5384014 : Modified the cursor so that it returns the deprn_method_code correctly for assets
9253 using depreciation method 'Units of production in hours' */
9254 /* Bug 6863138 : Need to calculate new deprn_limit values instead of delta */
9255
9256 Cursor c_get_bk (c_asset_id number,
9257 c_transaction_header_id number) IS
9258 select inbk.date_placed_in_service
9259 , inbk.deprn_start_date
9260 , decode(inbk.deprn_method_code,
9261 outbk.deprn_method_code,
9262 decode(inbk.life_in_months,
9263 outbk.life_in_months,
9264 decode(inbk.basic_rate,
9268 decode(inbk.production_capacity,
9265 outbk.basic_rate,
9266 decode(inbk.adjusted_rate,
9267 outbk.adjusted_rate,
9269 outbk.production_capacity,
9270 null,
9271 inbk.deprn_method_code),
9272 inbk.deprn_method_code),
9273 inbk.deprn_method_code),
9274 inbk.deprn_method_code),
9275 inbk.deprn_method_code)
9276 , decode(inbk.deprn_method_code,
9277 outbk.deprn_method_code,
9278 decode(inbk.life_in_months,
9279 outbk.life_in_months, null,
9280 inbk.life_in_months),
9281 inbk.life_in_months)
9282 , inbk.rate_adjustment_factor
9283 , inbk.adjusted_cost
9284 , inbk.cost - nvl(outbk.cost, 0)
9285 , inbk.original_cost
9286 , decode(inbk.salvage_type,
9287 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9288 'PCT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9289 'AMT',nvl(inbk.salvage_value, 0)),
9290 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9291 'AMT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9292 'PCT',nvl(inbk.salvage_value, 0)))
9293 , inbk.prorate_convention_code
9294 , inbk.prorate_date
9295 , inbk.cost_change_flag
9296 , inbk.adjustment_required_status
9297 , inbk.capitalize_flag
9298 , inbk.retirement_pending_flag
9299 , inbk.depreciate_flag
9300 , inbk.itc_amount_id
9301 , inbk.itc_amount
9302 , inbk.retirement_id
9303 , inbk.tax_request_id
9304 , inbk.itc_basis
9305 --bug fix 5718524
9306 , decode(inbk.deprn_method_code,
9307 outbk.deprn_method_code,
9308 decode(inbk.basic_rate,
9309 outbk.basic_rate, decode(inbk.adjusted_rate,
9310 outbk.adjusted_rate, null,
9311 inbk.basic_rate),
9312 inbk.basic_rate),
9313 inbk.basic_rate)
9314 , decode(inbk.deprn_method_code,
9315 outbk.deprn_method_code,
9316 decode(inbk.adjusted_rate,
9317 outbk.adjusted_rate, decode(inbk.basic_rate,
9318 outbk.basic_rate, null,
9319 inbk.adjusted_rate),
9320 inbk.adjusted_rate),
9321 inbk.adjusted_rate)
9322 , inbk.bonus_rule
9323 , inbk.ceiling_name
9324 , inbk.recoverable_cost
9325 , inbk.adjusted_capacity
9326 , decode(inbk.fully_rsvd_revals_counter,
9327 null, decode(outbk.fully_rsvd_revals_counter,
9328 null, null,
9329 outbk.fully_rsvd_revals_counter),
9330 nvl(inbk.fully_rsvd_revals_counter, 0) -
9331 nvl(outbk.fully_rsvd_revals_counter, 0))
9332 , inbk.idled_flag
9333 , inbk.period_counter_capitalized
9334 , inbk.period_counter_fully_reserved
9335 , inbk.period_counter_fully_retired
9336 , decode(inbk.production_capacity,
9337 null, decode(outbk.production_capacity,
9338 null, null,
9339 outbk.production_capacity),
9340 nvl(inbk.production_capacity, 0) - nvl(outbk.production_capacity, 0))
9341 , decode(inbk.reval_amortization_basis,
9342 null, decode(outbk.reval_amortization_basis,
9343 null, null,
9344 outbk.reval_amortization_basis),
9345 nvl(inbk.reval_amortization_basis, 0) -
9346 nvl(outbk.reval_amortization_basis, 0))
9347 , decode(inbk.reval_ceiling,
9348 null, decode(outbk.reval_ceiling,
9349 null, null,
9350 outbk.reval_ceiling),
9351 nvl(inbk.reval_ceiling, 0) - nvl(outbk.reval_ceiling, 0))
9352 , inbk.unit_of_measure
9353 , inbk.unrevalued_cost - nvl(outbk.unrevalued_cost, 0)
9354 , inbk.annual_deprn_rounding_flag
9355 , decode(inbk.salvage_type,
9356 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9357 'PCT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9358 'AMT',nvl(inbk.percent_salvage_value, 0)),
9359 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9360 'AMT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9361 'PCT',nvl(inbk.percent_salvage_value, 0)))
9362 ,decode(p_trans_rec.calling_interface, 'FAXASSET',decode(inbk.deprn_limit_type,
9363 'PCT', nvl(inbk.allowed_deprn_limit, 0),
9367 'PCT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9364 'AMT', nvl(inbk.allowed_deprn_limit, 0)),
9365 decode(inbk.deprn_limit_type,
9366 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9368 'AMT',nvl(inbk.allowed_deprn_limit, 0)),
9369 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9370 'AMT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9371 'PCT',nvl(inbk.allowed_deprn_limit, 0)))) --Bug7196658
9372
9373 , decode(p_trans_rec.calling_interface, 'FAXASSET',decode(inbk.deprn_limit_type,
9374 'PCT', nvl(inbk.allowed_deprn_limit_amount, 0),
9375 'AMT', nvl(inbk.allowed_deprn_limit_amount, 0)),
9376 decode(inbk.deprn_limit_type,
9377 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9378 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9379 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0)),
9380 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9381 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9382 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0)))) --Bug7196658
9383 , inbk.period_counter_life_complete
9384 , inbk.adjusted_recoverable_cost
9385 , inbk.annual_rounding_flag
9386 , inbk.eofy_adj_cost
9387 , inbk.eofy_formula_factor
9388 , inbk.short_fiscal_year_flag
9389 , inbk.conversion_date
9390 , inbk.ORIGINAL_DEPRN_START_DATE
9391 , inbk.remaining_life1
9392 , inbk.remaining_life2
9393 , inbk.group_asset_id
9394 , inbk.old_adjusted_cost
9395 , inbk.formula_factor
9396 , inbk.salvage_type
9397 , inbk.deprn_limit_type
9398 , inbk.over_depreciate_option
9399 , decode(inbk.super_group_id, outbk.super_group_id, null, inbk.super_group_id)
9400 , decode(inbk.reduction_rate,
9401 null, decode(outbk.reduction_rate,
9402 null, null,
9403 outbk.reduction_rate),
9404 nvl(inbk.reduction_rate, 0) - nvl(outbk.reduction_rate, 0))
9405 , inbk.reduce_addition_flag
9406 , inbk.reduce_adjustment_flag
9407 , inbk.reduce_retirement_flag
9408 , inbk.recognize_gain_loss
9409 , inbk.recapture_reserve_flag
9410 , inbk.limit_proceeds_flag
9411 , inbk.terminal_gain_loss
9412 , inbk.tracking_method
9413 , inbk.exclude_fully_rsv_flag
9414 , inbk.excess_allocation_option
9415 , inbk.depreciation_option
9416 , inbk.member_rollup_flag
9417 , inbk.ytd_proceeds
9418 , inbk.ltd_proceeds
9419 , inbk.allocate_to_fully_rsv_flag
9420 , inbk.allocate_to_fully_ret_flag
9421 , nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0)
9422 , inbk.terminal_gain_loss_amount
9423 , inbk.ltd_cost_of_removal
9424 , inbk.prior_eofy_reserve
9425 , nvl(inbk.eofy_reserve, 0) - nvl(outbk.eofy_reserve, 0)
9426 , inbk.eop_adj_cost
9427 , inbk.eop_formula_factor
9428 , inbk.global_attribute1
9429 , inbk.global_attribute2
9430 , inbk.global_attribute3
9431 , inbk.global_attribute4
9432 , inbk.global_attribute5
9433 , inbk.global_attribute6
9434 , inbk.global_attribute7
9435 , inbk.global_attribute8
9436 , inbk.global_attribute9
9437 , inbk.global_attribute10
9438 , inbk.global_attribute11
9439 , inbk.global_attribute12
9440 , inbk.global_attribute13
9441 , inbk.global_attribute14
9442 , inbk.global_attribute15
9443 , inbk.global_attribute16
9444 , inbk.global_attribute17
9445 , inbk.global_attribute18
9446 , inbk.global_attribute19
9447 , inbk.global_attribute20
9448 , inbk.global_attribute_category
9449 , inbk.nbv_at_switch
9450 , inbk.prior_deprn_limit_type
9451 , inbk.prior_deprn_limit_amount
9452 , inbk.prior_deprn_limit
9453 , inbk.prior_deprn_method
9454 , inbk.prior_life_in_months
9455 , inbk.prior_basic_rate
9456 , inbk.prior_adjusted_rate
9457 from fa_books inbk,
9458 fa_books outbk
9459 where inbk.asset_id = c_asset_id
9460 and inbk.asset_id = outbk.asset_id(+)
9461 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
9462 and inbk.book_type_code = outbk.book_type_code(+)
9463 and inbk.transaction_header_id_in = c_transaction_header_id
9464 and inbk.transaction_header_id_in = outbk.transaction_header_id_out(+);
9465
9466 /* Bug 4043619 : Modified the mrc cursor for salvage_value, allow_deprn_limit and allow_deprn_limit_adjusted. */
9467 /* Bug 5384014 : Modified the mrc cursor so that it returns the deprn_method_code correctly for assets
9468 using depreciation method 'Units of production in hours' */
9472 c_transaction_header_id number) IS
9469 /* Bug 6863138 : Need to calculate new deprn_limit values instead of delta */
9470
9471 Cursor c_get_mcbk (c_asset_id number,
9473 select inbk.date_placed_in_service
9474 , inbk.deprn_start_date
9475 , decode(inbk.deprn_method_code,
9476 outbk.deprn_method_code,
9477 decode(inbk.life_in_months,
9478 outbk.life_in_months,
9479 decode(inbk.basic_rate,
9480 outbk.basic_rate,
9481 decode(inbk.adjusted_rate,
9482 outbk.adjusted_rate,
9483 decode(inbk.production_capacity,
9484 outbk.production_capacity,
9485 null,
9486 inbk.deprn_method_code),
9487 inbk.deprn_method_code),
9488 inbk.deprn_method_code),
9489 inbk.deprn_method_code),
9490 inbk.deprn_method_code)
9491 , decode(inbk.deprn_method_code,
9492 outbk.deprn_method_code, decode(inbk.life_in_months,
9493 outbk.life_in_months, null,
9494 inbk.life_in_months),
9495 inbk.life_in_months)
9496 , inbk.rate_adjustment_factor
9497 , inbk.adjusted_cost
9498 , inbk.cost - nvl(outbk.cost, 0)
9499 , inbk.original_cost
9500 , decode(inbk.salvage_type,
9501 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9502 'PCT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9503 'AMT',nvl(inbk.salvage_value, 0)),
9504 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9505 'AMT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9506 'PCT',nvl(inbk.salvage_value, 0)))
9507 , inbk.prorate_convention_code
9508 , inbk.prorate_date
9509 , inbk.cost_change_flag
9510 , inbk.adjustment_required_status
9511 , inbk.capitalize_flag
9512 , inbk.retirement_pending_flag
9513 , inbk.depreciate_flag
9514 , inbk.itc_amount_id
9515 , inbk.itc_amount
9516 , inbk.retirement_id
9517 , inbk.tax_request_id
9518 , inbk.itc_basis
9519 , decode(inbk.deprn_method_code,
9520 outbk.deprn_method_code, decode(inbk.basic_rate,
9521 outbk.basic_rate, decode(inbk.adjusted_rate,
9522 outbk.adjusted_rate, null,
9523 inbk.basic_rate),
9524 inbk.basic_rate),
9525 inbk.basic_rate)
9526 , decode(inbk.deprn_method_code,
9527 outbk.deprn_method_code, decode(inbk.adjusted_rate,
9528 outbk.adjusted_rate, decode(inbk.basic_rate,
9529 outbk.basic_rate, null,
9530 inbk.adjusted_rate),
9531 inbk.adjusted_rate),
9532 inbk.adjusted_rate)
9533 , inbk.bonus_rule
9534 , inbk.ceiling_name
9535 , inbk.recoverable_cost
9536 , inbk.adjusted_capacity
9537 , decode(inbk.fully_rsvd_revals_counter,
9538 null, decode(outbk.fully_rsvd_revals_counter,
9539 null, null,
9540 outbk.fully_rsvd_revals_counter),
9541 nvl(inbk.fully_rsvd_revals_counter, 0) -
9542 nvl(outbk.fully_rsvd_revals_counter, 0))
9543 , inbk.idled_flag
9544 , inbk.period_counter_capitalized
9545 , inbk.period_counter_fully_reserved
9546 , inbk.period_counter_fully_retired
9547 , decode(inbk.production_capacity,
9548 null, decode(outbk.production_capacity,
9549 null, null,
9550 outbk.production_capacity),
9551 nvl(inbk.production_capacity, 0) - nvl(outbk.production_capacity, 0))
9552 , decode(inbk.reval_amortization_basis,
9553 null, decode(outbk.reval_amortization_basis,
9554 null, null,
9555 outbk.reval_amortization_basis),
9556 nvl(inbk.reval_amortization_basis, 0) -
9557 nvl(outbk.reval_amortization_basis, 0))
9558 , decode(inbk.reval_ceiling,
9559 null, decode(outbk.reval_ceiling,
9560 null, null,
9561 outbk.reval_ceiling),
9562 nvl(inbk.reval_ceiling, 0) - nvl(outbk.reval_ceiling, 0))
9563 , inbk.unit_of_measure
9564 , inbk.unrevalued_cost - nvl(outbk.unrevalued_cost, 0)
9565 , inbk.annual_deprn_rounding_flag
9566 , decode(inbk.salvage_type,
9570 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9567 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9568 'PCT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9569 'AMT',nvl(inbk.percent_salvage_value, 0)),
9571 'AMT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9572 'PCT',nvl(inbk.percent_salvage_value, 0)))
9573 ,decode(p_trans_rec.calling_interface, 'FAXASSET',decode(inbk.deprn_limit_type,
9574 'PCT', nvl(inbk.allowed_deprn_limit, 0),
9575 'AMT', nvl(inbk.allowed_deprn_limit, 0)),
9576 decode(inbk.deprn_limit_type,
9577 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9578 'PCT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9579 'AMT',nvl(inbk.allowed_deprn_limit, 0)),
9580 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9581 'AMT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9582 'PCT',nvl(inbk.allowed_deprn_limit, 0)))) --Bug7196658
9583
9584 , decode(p_trans_rec.calling_interface, 'FAXASSET',decode(inbk.deprn_limit_type,
9585 'PCT', nvl(inbk.allowed_deprn_limit_amount, 0),
9586 'AMT', nvl(inbk.allowed_deprn_limit_amount, 0)),
9587 decode(inbk.deprn_limit_type,
9588 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9589 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9590 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0)),
9591 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9592 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9593 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0)))) --Bug7196658
9594 , inbk.period_counter_life_complete
9595 , inbk.adjusted_recoverable_cost
9596 , inbk.annual_rounding_flag
9597 , inbk.eofy_adj_cost
9598 , inbk.eofy_formula_factor
9599 , inbk.short_fiscal_year_flag
9600 , inbk.conversion_date
9601 , inbk.ORIGINAL_DEPRN_START_DATE
9602 , inbk.remaining_life1
9603 , inbk.remaining_life2
9604 , inbk.group_asset_id
9605 , inbk.old_adjusted_cost
9606 , inbk.formula_factor
9607 , inbk.salvage_type
9608 , inbk.deprn_limit_type
9609 , inbk.over_depreciate_option
9610 , decode(inbk.super_group_id, outbk.super_group_id, null, inbk.super_group_id)
9611 , decode(inbk.reduction_rate,
9612 null, decode(outbk.reduction_rate,
9613 null, null,
9614 outbk.reduction_rate),
9615 nvl(inbk.reduction_rate, 0) - nvl(outbk.reduction_rate, 0))
9616 , inbk.reduce_addition_flag
9617 , inbk.reduce_adjustment_flag
9618 , inbk.reduce_retirement_flag
9619 , inbk.recognize_gain_loss
9620 , inbk.recapture_reserve_flag
9621 , inbk.limit_proceeds_flag
9622 , inbk.terminal_gain_loss
9623 , inbk.tracking_method
9624 , inbk.exclude_fully_rsv_flag
9625 , inbk.excess_allocation_option
9626 , inbk.depreciation_option
9627 , inbk.member_rollup_flag
9628 , inbk.ytd_proceeds
9629 , inbk.ltd_proceeds
9630 , inbk.allocate_to_fully_rsv_flag
9631 , inbk.allocate_to_fully_ret_flag
9632 , nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0)
9633 , inbk.terminal_gain_loss_amount
9634 , inbk.ltd_cost_of_removal
9635 , inbk.prior_eofy_reserve
9636 , nvl(inbk.eofy_reserve, 0) - nvl(outbk.eofy_reserve, 0)
9637 , inbk.eop_adj_cost
9638 , inbk.eop_formula_factor
9639 , inbk.global_attribute1
9640 , inbk.global_attribute2
9641 , inbk.global_attribute3
9642 , inbk.global_attribute4
9643 , inbk.global_attribute5
9644 , inbk.global_attribute6
9645 , inbk.global_attribute7
9646 , inbk.global_attribute8
9647 , inbk.global_attribute9
9648 , inbk.global_attribute10
9649 , inbk.global_attribute11
9650 , inbk.global_attribute12
9651 , inbk.global_attribute13
9652 , inbk.global_attribute14
9653 , inbk.global_attribute15
9654 , inbk.global_attribute16
9655 , inbk.global_attribute17
9656 , inbk.global_attribute18
9657 , inbk.global_attribute19
9658 , inbk.global_attribute20
9659 , inbk.global_attribute_category
9660 from fa_mc_books inbk,
9661 fa_mc_books outbk
9662 where inbk.asset_id = c_asset_id
9663 and inbk.asset_id = outbk.asset_id(+)
9664 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
9665 and inbk.book_type_code = outbk.book_type_code(+)
9666 and inbk.transaction_header_id_in = c_transaction_header_id
9670
9667 and inbk.transaction_header_id_in = outbk.transaction_header_id_out(+)
9668 and inbk.set_of_books_id = p_asset_hdr_rec.set_of_books_id
9669 and outbk.set_of_books_id(+) = p_asset_hdr_rec.set_of_books_id;
9671 /* Bug 4043619 : Modified the cursor for salvage_value, allow_deprn_limit and allow_deprn_limit_adjusted. */
9672
9673 -- In case px_asset_fin_rec is null
9674 Cursor c_get_bk2 (c_asset_id number,
9675 c_transaction_header_id number) IS
9676 select inbk.date_placed_in_service
9677 , inbk.deprn_start_date
9678 , inbk.deprn_method_code
9679 , inbk.life_in_months
9680 , inbk.rate_adjustment_factor
9681 , inbk.adjusted_cost
9682 , inbk.cost - nvl(outbk.cost, 0)
9683 , inbk.original_cost
9684 , decode(inbk.salvage_type,
9685 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9686 'PCT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9687 'AMT',nvl(inbk.salvage_value, 0)),
9688 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9689 'AMT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9690 'PCT',nvl(inbk.salvage_value, 0)))
9691 , inbk.prorate_convention_code
9692 , inbk.prorate_date
9693 , inbk.cost_change_flag
9694 , inbk.adjustment_required_status
9695 , inbk.capitalize_flag
9696 , inbk.retirement_pending_flag
9697 , inbk.depreciate_flag
9698 , inbk.itc_amount_id
9699 , inbk.itc_amount
9700 , inbk.retirement_id
9704 , inbk.adjusted_rate
9701 , inbk.tax_request_id
9702 , inbk.itc_basis
9703 , inbk.basic_rate
9705 , inbk.bonus_rule
9706 , inbk.ceiling_name
9707 , inbk.recoverable_cost
9708 , inbk.adjusted_capacity
9709 , decode(inbk.fully_rsvd_revals_counter,
9710 null, decode(outbk.fully_rsvd_revals_counter,
9711 null, null,
9712 outbk.fully_rsvd_revals_counter),
9713 nvl(inbk.fully_rsvd_revals_counter, 0) -
9714 nvl(outbk.fully_rsvd_revals_counter, 0))
9715 , inbk.idled_flag
9716 , inbk.period_counter_capitalized
9717 , inbk.period_counter_fully_reserved
9718 , inbk.period_counter_fully_retired
9719 , decode(inbk.production_capacity,
9720 null, decode(outbk.production_capacity,
9721 null, null,
9722 outbk.production_capacity),
9723 nvl(inbk.production_capacity, 0) - nvl(outbk.production_capacity, 0))
9724 , decode(inbk.reval_amortization_basis,
9725 null, decode(outbk.reval_amortization_basis,
9726 null, null,
9727 outbk.reval_amortization_basis),
9728 nvl(inbk.reval_amortization_basis, 0) -
9729 nvl(outbk.reval_amortization_basis, 0))
9730 , decode(inbk.reval_ceiling,
9731 null, decode(outbk.reval_ceiling,
9732 null, null,
9733 outbk.reval_ceiling),
9734 nvl(inbk.reval_ceiling, 0) - nvl(outbk.reval_ceiling, 0))
9735 , inbk.unit_of_measure
9736 , inbk.unrevalued_cost - nvl(outbk.unrevalued_cost, 0)
9737 , inbk.annual_deprn_rounding_flag
9738 , decode(inbk.salvage_type,
9739 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9740 'PCT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9741 'AMT',nvl(inbk.percent_salvage_value, 0)),
9742 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9743 'AMT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9744 'PCT',nvl(inbk.percent_salvage_value, 0)))
9745 , decode(inbk.deprn_limit_type,
9746 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9747 'PCT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9748 'AMT',nvl(inbk.allowed_deprn_limit, 0)),
9749 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9750 'AMT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9751 'PCT',nvl(inbk.allowed_deprn_limit, 0)))
9755 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0)),
9752 , decode(inbk.deprn_limit_type,
9753 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9754 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9756 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9757 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9758 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0)))
9759 , inbk.period_counter_life_complete
9760 , inbk.adjusted_recoverable_cost
9761 , inbk.annual_rounding_flag
9762 , inbk.eofy_adj_cost
9763 , inbk.eofy_formula_factor
9764 , inbk.short_fiscal_year_flag
9765 , inbk.conversion_date
9766 , inbk.ORIGINAL_DEPRN_START_DATE
9767 , inbk.remaining_life1
9768 , inbk.remaining_life2
9769 , inbk.group_asset_id
9770 , inbk.old_adjusted_cost
9771 , inbk.formula_factor
9772 , inbk.salvage_type
9773 , inbk.deprn_limit_type
9774 , inbk.over_depreciate_option
9775 , decode(inbk.super_group_id, outbk.super_group_id, null, inbk.super_group_id)
9776 , decode(inbk.reduction_rate,
9777 null, decode(outbk.reduction_rate,
9778 null, null,
9779 outbk.reduction_rate),
9780 nvl(inbk.reduction_rate, 0) - nvl(outbk.reduction_rate, 0))
9781 , inbk.reduce_addition_flag
9782 , inbk.reduce_adjustment_flag
9783 , inbk.reduce_retirement_flag
9784 , inbk.recognize_gain_loss
9785 , inbk.recapture_reserve_flag
9786 , inbk.limit_proceeds_flag
9787 , inbk.terminal_gain_loss
9788 , inbk.tracking_method
9789 , inbk.exclude_fully_rsv_flag
9790 , inbk.excess_allocation_option
9791 , inbk.depreciation_option
9792 , inbk.member_rollup_flag
9793 , inbk.ytd_proceeds
9794 , inbk.ltd_proceeds
9795 , inbk.allocate_to_fully_rsv_flag
9796 , inbk.allocate_to_fully_ret_flag
9797 , nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0)
9798 , inbk.terminal_gain_loss_amount
9799 , inbk.ltd_cost_of_removal
9800 , inbk.prior_eofy_reserve
9801 , nvl(inbk.eofy_reserve, 0) - nvl(outbk.eofy_reserve, 0)
9802 , inbk.eop_adj_cost
9803 , inbk.eop_formula_factor
9804 , inbk.global_attribute1
9805 , inbk.global_attribute2
9806 , inbk.global_attribute3
9807 , inbk.global_attribute4
9808 , inbk.global_attribute5
9809 , inbk.global_attribute6
9810 , inbk.global_attribute7
9811 , inbk.global_attribute8
9812 , inbk.global_attribute9
9813 , inbk.global_attribute10
9814 , inbk.global_attribute11
9815 , inbk.global_attribute12
9816 , inbk.global_attribute13
9817 , inbk.global_attribute14
9818 , inbk.global_attribute15
9819 , inbk.global_attribute16
9820 , inbk.global_attribute17
9821 , inbk.global_attribute18
9822 , inbk.global_attribute19
9823 , inbk.global_attribute20
9824 , inbk.global_attribute_category
9825 , inbk.nbv_at_switch
9826 , inbk.prior_deprn_limit_type
9827 , inbk.prior_deprn_limit_amount
9828 , inbk.prior_deprn_limit
9829 , inbk.prior_deprn_method
9830 , inbk.prior_life_in_months
9831 , inbk.prior_basic_rate
9832 , inbk.prior_adjusted_rate
9833 from fa_books inbk,
9834 fa_books outbk
9835 where inbk.asset_id = c_asset_id
9836 and inbk.asset_id = outbk.asset_id(+)
9837 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
9838 and inbk.book_type_code = outbk.book_type_code(+)
9839 and inbk.transaction_header_id_in = c_transaction_header_id
9840 and inbk.transaction_header_id_in = outbk.transaction_header_id_out(+);
9841
9842
9843 /* Bug 4043619 : Modified the mrc cursor for salvage_value, allow_deprn_limit and allow_deprn_limit_adjusted. */
9844
9845 -- In case px_asset_fin_rec is null
9846 Cursor c_get_mcbk2 (c_asset_id number,
9847 c_transaction_header_id number) IS
9848 select inbk.date_placed_in_service
9849 , inbk.deprn_start_date
9850 , inbk.deprn_method_code
9851 , inbk.life_in_months
9852 , inbk.rate_adjustment_factor
9853 , inbk.adjusted_cost
9854 , inbk.cost - nvl(outbk.cost, 0)
9855 , inbk.original_cost
9856 , decode(inbk.salvage_type,
9857 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9858 'PCT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9859 'AMT',nvl(inbk.salvage_value, 0)),
9860 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9861 'AMT',inbk.salvage_value - nvl(outbk.salvage_value, 0),
9862 'PCT',nvl(inbk.salvage_value, 0)))
9863 , inbk.prorate_convention_code
9864 , inbk.prorate_date
9865 , inbk.cost_change_flag
9866 , inbk.adjustment_required_status
9867 , inbk.capitalize_flag
9868 , inbk.retirement_pending_flag
9869 , inbk.depreciate_flag
9870 , inbk.itc_amount_id
9871 , inbk.itc_amount
9872 , inbk.retirement_id
9873 , inbk.tax_request_id
9874 , inbk.itc_basis
9875 , inbk.basic_rate
9876 , inbk.adjusted_rate
9877 , inbk.bonus_rule
9878 , inbk.ceiling_name
9882 null, decode(outbk.fully_rsvd_revals_counter,
9879 , inbk.recoverable_cost
9880 , inbk.adjusted_capacity
9881 , decode(inbk.fully_rsvd_revals_counter,
9883 null, null,
9884 outbk.fully_rsvd_revals_counter),
9885 nvl(inbk.fully_rsvd_revals_counter, 0) -
9886 nvl(outbk.fully_rsvd_revals_counter, 0))
9887 , inbk.idled_flag
9888 , inbk.period_counter_capitalized
9889 , inbk.period_counter_fully_reserved
9890 , inbk.period_counter_fully_retired
9891 , decode(inbk.production_capacity,
9892 null, decode(outbk.production_capacity,
9893 null, null,
9894 outbk.production_capacity),
9895 nvl(inbk.production_capacity, 0) - nvl(outbk.production_capacity, 0))
9896 , decode(inbk.reval_amortization_basis,
9897 null, decode(outbk.reval_amortization_basis,
9898 null, null,
9899 outbk.reval_amortization_basis),
9900 nvl(inbk.reval_amortization_basis, 0) -
9901 nvl(outbk.reval_amortization_basis, 0))
9902 , decode(inbk.reval_ceiling,
9903 null, decode(outbk.reval_ceiling,
9904 null, null,
9905 outbk.reval_ceiling),
9906 nvl(inbk.reval_ceiling, 0) - nvl(outbk.reval_ceiling, 0))
9907 , inbk.unit_of_measure
9908 , inbk.unrevalued_cost - nvl(outbk.unrevalued_cost, 0)
9909 , inbk.annual_deprn_rounding_flag
9910 , decode(inbk.salvage_type,
9911 'PCT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9912 'PCT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9913 'AMT',nvl(inbk.percent_salvage_value, 0)),
9914 'AMT', decode(nvl(outbk.salvage_type, inbk.salvage_type),
9915 'AMT',nvl(inbk.percent_salvage_value, 0) - nvl(outbk.percent_salvage_value, 0),
9916 'PCT',nvl(inbk.percent_salvage_value, 0)))
9917 , decode(inbk.deprn_limit_type,
9918 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9919 'PCT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9920 'AMT',nvl(inbk.allowed_deprn_limit, 0)),
9921 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9922 'AMT',nvl(inbk.allowed_deprn_limit, 0) - nvl(outbk.allowed_deprn_limit, 0),
9923 'PCT',nvl(inbk.allowed_deprn_limit, 0)))
9924 , decode(inbk.deprn_limit_type,
9925 'PCT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9926 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9927 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0)),
9928 'AMT', decode(nvl(outbk.deprn_limit_type, inbk.deprn_limit_type),
9929 'AMT',nvl(inbk.allowed_deprn_limit_amount, 0) - nvl(outbk.allowed_deprn_limit_amount, 0),
9930 'PCT',nvl(inbk.allowed_deprn_limit_amount, 0)))
9931 , inbk.period_counter_life_complete
9932 , inbk.adjusted_recoverable_cost
9933 , inbk.annual_rounding_flag
9934 , inbk.eofy_adj_cost
9935 , inbk.eofy_formula_factor
9936 , inbk.short_fiscal_year_flag
9937 , inbk.conversion_date
9938 , inbk.ORIGINAL_DEPRN_START_DATE
9939 , inbk.remaining_life1
9940 , inbk.remaining_life2
9941 , inbk.group_asset_id
9942 , inbk.old_adjusted_cost
9943 , inbk.formula_factor
9944 , inbk.salvage_type
9945 , inbk.deprn_limit_type
9946 , inbk.over_depreciate_option
9947 , decode(inbk.super_group_id, outbk.super_group_id, null, inbk.super_group_id)
9948 , decode(inbk.reduction_rate,
9949 null, decode(outbk.reduction_rate,
9950 null, null,
9951 outbk.reduction_rate),
9952 nvl(inbk.reduction_rate, 0) - nvl(outbk.reduction_rate, 0))
9953 , inbk.reduce_addition_flag
9954 , inbk.reduce_adjustment_flag
9955 , inbk.reduce_retirement_flag
9956 , inbk.recognize_gain_loss
9957 , inbk.recapture_reserve_flag
9958 , inbk.limit_proceeds_flag
9959 , inbk.terminal_gain_loss
9960 , inbk.tracking_method
9961 , inbk.exclude_fully_rsv_flag
9962 , inbk.excess_allocation_option
9963 , inbk.depreciation_option
9964 , inbk.member_rollup_flag
9965 , inbk.ytd_proceeds
9966 , inbk.ltd_proceeds
9967 , inbk.allocate_to_fully_rsv_flag
9968 , inbk.allocate_to_fully_ret_flag
9969 , nvl(inbk.cip_cost, 0) - nvl(outbk.cip_cost, 0)
9970 , inbk.terminal_gain_loss_amount
9971 , inbk.ltd_cost_of_removal
9972 , inbk.prior_eofy_reserve
9973 , nvl(inbk.eofy_reserve, 0) - nvl(outbk.eofy_reserve, 0)
9974 , inbk.eop_adj_cost
9975 , inbk.eop_formula_factor
9976 , inbk.global_attribute1
9977 , inbk.global_attribute2
9978 , inbk.global_attribute3
9979 , inbk.global_attribute4
9980 , inbk.global_attribute5
9981 , inbk.global_attribute6
9982 , inbk.global_attribute7
9983 , inbk.global_attribute8
9984 , inbk.global_attribute9
9985 , inbk.global_attribute10
9986 , inbk.global_attribute11
9987 , inbk.global_attribute12
9991 , inbk.global_attribute16
9988 , inbk.global_attribute13
9989 , inbk.global_attribute14
9990 , inbk.global_attribute15
9992 , inbk.global_attribute17
9993 , inbk.global_attribute18
9994 , inbk.global_attribute19
9995 , inbk.global_attribute20
9996 , inbk.global_attribute_category
9997 from fa_mc_books inbk,
9998 fa_mc_books outbk
9999 where inbk.asset_id = c_asset_id
10000 and inbk.asset_id = outbk.asset_id(+)
10001 and inbk.book_type_code = p_asset_hdr_rec.book_type_code
10002 and inbk.book_type_code = outbk.book_type_code(+)
10003 and inbk.transaction_header_id_in = c_transaction_header_id
10004 and inbk.transaction_header_id_in = outbk.transaction_header_id_out(+)
10005 and inbk.set_of_books_id = p_asset_hdr_rec.set_of_books_id
10006 and outbk.set_of_books_id(+) = p_asset_hdr_rec.set_of_books_id;
10007
10008
10009
10010 CURSOR c_get_member_asset_id IS
10011 select asset_id
10012 from fa_transaction_headers
10013 where transaction_header_id = p_trans_rec.member_transaction_header_id;
10014
10015 l_calling_fn VARCHAR2(100) := 'FA_AMORT_PVT.GetFinRec';
10016 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
10017 l_asset_desc_rec FA_API_TYPES.asset_desc_rec_type;
10018 l_asset_cat_rec FA_API_TYPES.asset_cat_rec_type;
10019 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
10020 l_period_rec FA_API_TYPES.period_rec_type;
10021
10022 l_is_member_trx_for_group BOOLEAN := FALSE;
10023 l_asset_id NUMBER;
10024 l_transaction_header_id NUMBER;
10025
10026 l_tmp_cost NUMBER;
10027 l_tmp_percent_salvage_value NUMBER;
10028 l_tmp_salvage_value NUMBER;
10029 l_tmp_allowed_deprn_limit NUMBER;
10030 l_tmp_allowed_deprn_limit_amt NUMBER;
10031 l_tmp_production_capacity NUMBER;
10032 l_tmp_fully_rsv_revals_counter NUMBER;
10033 l_tmp_reval_amortization_basis NUMBER;
10034 l_tmp_reval_ceiling NUMBER;
10035 l_tmp_unrevalued_cost NUMBER;
10036 l_tmp_eofy_reserve NUMBER;
10037 l_tmp_deprn_limit_type varchar2(30); -- Bug 6863138
10038
10039 l_adj_found BOOLEAN := FALSE;
10040 l_reclass_trx BOOLEAN := FALSE;
10041
10042 /* For bug 12739028 */
10043 l_adj_deprn_method VARCHAR2(12);
10044 l_adj_basic_rate NUMBER;
10045 l_adj_adjusted_rate NUMBER;
10046 l_adj_life NUMBER;
10047 l_adj_production_capacity NUMBER;
10048 l_adj_apply_new_method BOOLEAN := FALSE;
10049
10050 calc_failed EXCEPTION;
10051
10052 BEGIN
10053
10054 if (p_log_level_rec.statement_level) then
10055 fa_debug_pkg.add(l_calling_fn, 'Begin', px_asset_fin_rec.date_placed_in_service||':'||
10056 p_init_transaction_header_id, p_log_level_rec => p_log_level_rec);
10057 end if;
10058
10059 x_dpis_change := FALSE;
10060
10061 if (p_trans_rec.transaction_header_id is null and
10062 p_trans_rec.member_transaction_header_id is not null) then
10063 l_is_member_trx_for_group := TRUE;
10064
10065 OPEN c_get_member_asset_id;
10066 FETCH c_get_member_asset_id INTO l_asset_id;
10067 CLOSE c_get_member_asset_id;
10068
10069 l_transaction_header_id := p_trans_rec.member_transaction_header_id;
10070
10071 if (p_log_level_rec.statement_level) then
10072 fa_debug_pkg.add(l_calling_fn, 'Need to get Delta from member', l_asset_id, p_log_level_rec => p_log_level_rec);
10073 end if;
10074
10075 else
10076 l_asset_id := p_asset_hdr_rec.asset_id;
10077 l_transaction_header_id := p_trans_rec.transaction_header_id;
10078 end if;
10079
10080 --tk_util.DumpFinRec(px_asset_fin_rec, 'GO1');
10081
10082 if (nvl(p_mrc_sob_type_code, 'P') = 'R') then
10083 if (px_asset_fin_rec.date_placed_in_service is null) then
10084
10085 if p_init_transaction_header_id is null then
10086 OPEN c_get_init_mcbk;
10087 FETCH c_get_init_mcbk INTO px_asset_fin_rec.date_placed_in_service
10088 , px_asset_fin_rec.deprn_start_date
10089 , px_asset_fin_rec.deprn_method_code
10090 , px_asset_fin_rec.life_in_months
10091 , px_asset_fin_rec.rate_adjustment_factor
10092 , px_asset_fin_rec.adjusted_cost
10093 , px_asset_fin_rec.cost
10094 , px_asset_fin_rec.original_cost
10095 , px_asset_fin_rec.salvage_value
10096 , px_asset_fin_rec.prorate_convention_code
10097 , px_asset_fin_rec.prorate_date
10098 , px_asset_fin_rec.cost_change_flag
10099 , px_asset_fin_rec.adjustment_required_status
10100 , px_asset_fin_rec.capitalize_flag
10101 , px_asset_fin_rec.retirement_pending_flag
10102 , px_asset_fin_rec.depreciate_flag
10103 , px_asset_fin_rec.itc_amount_id
10104 , px_asset_fin_rec.itc_amount
10105 , px_asset_fin_rec.retirement_id
10106 , px_asset_fin_rec.tax_request_id
10110 , px_asset_fin_rec.bonus_rule
10107 , px_asset_fin_rec.itc_basis
10108 , px_asset_fin_rec.basic_rate
10109 , px_asset_fin_rec.adjusted_rate
10111 , px_asset_fin_rec.ceiling_name
10112 , px_asset_fin_rec.recoverable_cost
10113 , px_asset_fin_rec.adjusted_capacity
10114 , px_asset_fin_rec.fully_rsvd_revals_counter
10115 , px_asset_fin_rec.idled_flag
10116 , px_asset_fin_rec.period_counter_capitalized
10117 , px_asset_fin_rec.period_counter_fully_reserved
10118 , px_asset_fin_rec.period_counter_fully_retired
10119 , px_asset_fin_rec.production_capacity
10120 , px_asset_fin_rec.reval_amortization_basis
10121 , px_asset_fin_rec.reval_ceiling
10122 , px_asset_fin_rec.unit_of_measure
10123 , px_asset_fin_rec.unrevalued_cost
10124 , px_asset_fin_rec.annual_deprn_rounding_flag
10125 , px_asset_fin_rec.percent_salvage_value
10126 , px_asset_fin_rec.allowed_deprn_limit
10127 , px_asset_fin_rec.allowed_deprn_limit_amount
10128 , px_asset_fin_rec.period_counter_life_complete
10129 , px_asset_fin_rec.adjusted_recoverable_cost
10130 , px_asset_fin_rec.annual_rounding_flag
10131 , px_asset_fin_rec.eofy_adj_cost
10132 , px_asset_fin_rec.eofy_formula_factor
10133 , px_asset_fin_rec.short_fiscal_year_flag
10134 , px_asset_fin_rec.conversion_date
10135 , px_asset_fin_rec.orig_deprn_start_date
10136 , px_asset_fin_rec.remaining_life1
10137 , px_asset_fin_rec.remaining_life2
10138 , px_asset_fin_rec.group_asset_id
10139 , px_asset_fin_rec.old_adjusted_cost
10140 , px_asset_fin_rec.formula_factor
10141 , px_asset_fin_rec.salvage_type
10142 , px_asset_fin_rec.deprn_limit_type
10143 , px_asset_fin_rec.over_depreciate_option
10144 , px_asset_fin_rec.super_group_id
10145 , px_asset_fin_rec.reduction_rate
10146 , px_asset_fin_rec.reduce_addition_flag
10147 , px_asset_fin_rec.reduce_adjustment_flag
10148 , px_asset_fin_rec.reduce_retirement_flag
10149 , px_asset_fin_rec.recognize_gain_loss
10150 , px_asset_fin_rec.recapture_reserve_flag
10151 , px_asset_fin_rec.limit_proceeds_flag
10152 , px_asset_fin_rec.terminal_gain_loss
10153 , px_asset_fin_rec.tracking_method
10154 , px_asset_fin_rec.exclude_fully_rsv_flag
10155 , px_asset_fin_rec.excess_allocation_option
10156 , px_asset_fin_rec.depreciation_option
10157 , px_asset_fin_rec.member_rollup_flag
10158 , px_asset_fin_rec.ytd_proceeds
10159 , px_asset_fin_rec.ltd_proceeds
10160 , px_asset_fin_rec.allocate_to_fully_rsv_flag
10161 , px_asset_fin_rec.allocate_to_fully_ret_flag
10162 , px_asset_fin_rec.cip_cost
10163 , px_asset_fin_rec.terminal_gain_loss_amount
10164 , px_asset_fin_rec.ltd_cost_of_removal
10165 , px_asset_fin_rec.prior_eofy_reserve
10166 , px_asset_fin_rec.eofy_reserve
10167 , px_asset_fin_rec.eop_adj_cost
10168 , px_asset_fin_rec.eop_formula_factor
10169 , px_asset_fin_rec.global_attribute1
10170 , px_asset_fin_rec.global_attribute2
10171 , px_asset_fin_rec.global_attribute3
10172 , px_asset_fin_rec.global_attribute4
10173 , px_asset_fin_rec.global_attribute5
10174 , px_asset_fin_rec.global_attribute6
10175 , px_asset_fin_rec.global_attribute7
10176 , px_asset_fin_rec.global_attribute8
10177 , px_asset_fin_rec.global_attribute9
10178 , px_asset_fin_rec.global_attribute10
10179 , px_asset_fin_rec.global_attribute11
10180 , px_asset_fin_rec.global_attribute12
10181 , px_asset_fin_rec.global_attribute13
10182 , px_asset_fin_rec.global_attribute14
10183 , px_asset_fin_rec.global_attribute15
10184 , px_asset_fin_rec.global_attribute16
10185 , px_asset_fin_rec.global_attribute17
10186 , px_asset_fin_rec.global_attribute18
10187 , px_asset_fin_rec.global_attribute19
10188 , px_asset_fin_rec.global_attribute20
10189 , px_asset_fin_rec.global_attribute_category;
10190 CLOSE c_get_init_mcbk;
10191 else
10192 OPEN c_get_init_mcbk_winit;
10193 FETCH c_get_init_mcbk_winit INTO px_asset_fin_rec.date_placed_in_service
10194 , px_asset_fin_rec.deprn_start_date
10195 , px_asset_fin_rec.deprn_method_code
10196 , px_asset_fin_rec.life_in_months
10197 , px_asset_fin_rec.rate_adjustment_factor
10198 , px_asset_fin_rec.adjusted_cost
10199 , px_asset_fin_rec.cost
10200 , px_asset_fin_rec.original_cost
10201 , px_asset_fin_rec.salvage_value
10202 , px_asset_fin_rec.prorate_convention_code
10203 , px_asset_fin_rec.prorate_date
10204 , px_asset_fin_rec.cost_change_flag
10205 , px_asset_fin_rec.adjustment_required_status
10206 , px_asset_fin_rec.capitalize_flag
10207 , px_asset_fin_rec.retirement_pending_flag
10208 , px_asset_fin_rec.depreciate_flag
10209 , px_asset_fin_rec.itc_amount_id
10210 , px_asset_fin_rec.itc_amount
10211 , px_asset_fin_rec.retirement_id
10212 , px_asset_fin_rec.tax_request_id
10213 , px_asset_fin_rec.itc_basis
10214 , px_asset_fin_rec.basic_rate
10215 , px_asset_fin_rec.adjusted_rate
10216 , px_asset_fin_rec.bonus_rule
10217 , px_asset_fin_rec.ceiling_name
10218 , px_asset_fin_rec.recoverable_cost
10219 , px_asset_fin_rec.adjusted_capacity
10220 , px_asset_fin_rec.fully_rsvd_revals_counter
10221 , px_asset_fin_rec.idled_flag
10222 , px_asset_fin_rec.period_counter_capitalized
10226 , px_asset_fin_rec.reval_amortization_basis
10223 , px_asset_fin_rec.period_counter_fully_reserved
10224 , px_asset_fin_rec.period_counter_fully_retired
10225 , px_asset_fin_rec.production_capacity
10227 , px_asset_fin_rec.reval_ceiling
10228 , px_asset_fin_rec.unit_of_measure
10229 , px_asset_fin_rec.unrevalued_cost
10230 , px_asset_fin_rec.annual_deprn_rounding_flag
10231 , px_asset_fin_rec.percent_salvage_value
10232 , px_asset_fin_rec.allowed_deprn_limit
10233 , px_asset_fin_rec.allowed_deprn_limit_amount
10234 , px_asset_fin_rec.period_counter_life_complete
10235 , px_asset_fin_rec.adjusted_recoverable_cost
10236 , px_asset_fin_rec.annual_rounding_flag
10237 , px_asset_fin_rec.eofy_adj_cost
10238 , px_asset_fin_rec.eofy_formula_factor
10239 , px_asset_fin_rec.short_fiscal_year_flag
10240 , px_asset_fin_rec.conversion_date
10241 , px_asset_fin_rec.orig_deprn_start_date
10242 , px_asset_fin_rec.remaining_life1
10243 , px_asset_fin_rec.remaining_life2
10244 , px_asset_fin_rec.group_asset_id
10245 , px_asset_fin_rec.old_adjusted_cost
10246 , px_asset_fin_rec.formula_factor
10247 , px_asset_fin_rec.salvage_type
10248 , px_asset_fin_rec.deprn_limit_type
10249 , px_asset_fin_rec.over_depreciate_option
10250 , px_asset_fin_rec.super_group_id
10251 , px_asset_fin_rec.reduction_rate
10252 , px_asset_fin_rec.reduce_addition_flag
10253 , px_asset_fin_rec.reduce_adjustment_flag
10254 , px_asset_fin_rec.reduce_retirement_flag
10255 , px_asset_fin_rec.recognize_gain_loss
10256 , px_asset_fin_rec.recapture_reserve_flag
10257 , px_asset_fin_rec.limit_proceeds_flag
10258 , px_asset_fin_rec.terminal_gain_loss
10259 , px_asset_fin_rec.tracking_method
10260 , px_asset_fin_rec.exclude_fully_rsv_flag
10261 , px_asset_fin_rec.excess_allocation_option
10262 , px_asset_fin_rec.depreciation_option
10263 , px_asset_fin_rec.member_rollup_flag
10264 , px_asset_fin_rec.ytd_proceeds
10265 , px_asset_fin_rec.ltd_proceeds
10266 , px_asset_fin_rec.allocate_to_fully_rsv_flag
10267 , px_asset_fin_rec.allocate_to_fully_ret_flag
10268 , px_asset_fin_rec.cip_cost
10269 , px_asset_fin_rec.terminal_gain_loss_amount
10270 , px_asset_fin_rec.ltd_cost_of_removal
10271 , px_asset_fin_rec.prior_eofy_reserve
10272 , px_asset_fin_rec.eofy_reserve
10273 , px_asset_fin_rec.eop_adj_cost
10274 , px_asset_fin_rec.eop_formula_factor
10275 , px_asset_fin_rec.global_attribute1
10276 , px_asset_fin_rec.global_attribute2
10277 , px_asset_fin_rec.global_attribute3
10278 , px_asset_fin_rec.global_attribute4
10279 , px_asset_fin_rec.global_attribute5
10280 , px_asset_fin_rec.global_attribute6
10281 , px_asset_fin_rec.global_attribute7
10282 , px_asset_fin_rec.global_attribute8
10283 , px_asset_fin_rec.global_attribute9
10284 , px_asset_fin_rec.global_attribute10
10285 , px_asset_fin_rec.global_attribute11
10286 , px_asset_fin_rec.global_attribute12
10287 , px_asset_fin_rec.global_attribute13
10288 , px_asset_fin_rec.global_attribute14
10289 , px_asset_fin_rec.global_attribute15
10290 , px_asset_fin_rec.global_attribute16
10291 , px_asset_fin_rec.global_attribute17
10292 , px_asset_fin_rec.global_attribute18
10293 , px_asset_fin_rec.global_attribute19
10294 , px_asset_fin_rec.global_attribute20
10295 , px_asset_fin_rec.global_attribute_category;
10296 CLOSE c_get_init_mcbk_winit;
10297
10298 end if;
10299
10300 if (p_log_level_rec.statement_level) then
10301 fa_debug_pkg.add(l_calling_fn, 'Found initial fin_rec from db',
10302 px_asset_fin_rec.cost, p_log_level_rec => p_log_level_rec);
10303 end if;
10304
10305 /*
10306 if p_trans_rec.transaction_type_code in
10310
10307 (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET) and
10308 not (p_use_fin_rec_adj) then
10309 x_asset_fin_rec_new := px_asset_fin_rec;
10311 --tk_util.DumpFinRec(px_asset_fin_rec, 'GO2');
10312 --tk_util.DumpFinRec(x_asset_fin_rec_new, 'GN');
10313
10314 if (p_log_level_rec.statement_level) then
10315 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
10316 end if;
10317
10318 return TRUE;
10319 end if;
10320 */
10321
10322 -- els -- BUG# 3947146
10323
10324 if not (p_process_this_trx) then
10325 x_asset_fin_rec_new := px_asset_fin_rec;
10326 if (p_log_level_rec.statement_level) then
10327 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
10328 end if;
10329
10330 return TRUE;
10331
10332 end if;
10333
10334 end if;
10335
10336 if (px_asset_fin_rec.deprn_method_code is null) then
10337 OPEN c_get_mcbk2(l_asset_id, l_transaction_header_id);
10338 FETCH c_get_mcbk2 INTO l_asset_fin_rec_adj.date_placed_in_service
10339 , l_asset_fin_rec_adj.deprn_start_date
10340 , l_asset_fin_rec_adj.deprn_method_code
10341 , l_asset_fin_rec_adj.life_in_months
10342 , l_asset_fin_rec_adj.rate_adjustment_factor
10343 , l_asset_fin_rec_adj.adjusted_cost
10344 , l_asset_fin_rec_adj.cost
10345 , l_asset_fin_rec_adj.original_cost
10346 , l_asset_fin_rec_adj.salvage_value
10347 , l_asset_fin_rec_adj.prorate_convention_code
10348 , l_asset_fin_rec_adj.prorate_date
10349 , l_asset_fin_rec_adj.cost_change_flag
10350 , l_asset_fin_rec_adj.adjustment_required_status
10351 , l_asset_fin_rec_adj.capitalize_flag
10352 , l_asset_fin_rec_adj.retirement_pending_flag
10353 , l_asset_fin_rec_adj.depreciate_flag
10354 , l_asset_fin_rec_adj.itc_amount_id
10355 , l_asset_fin_rec_adj.itc_amount
10356 , l_asset_fin_rec_adj.retirement_id
10357 , l_asset_fin_rec_adj.tax_request_id
10358 , l_asset_fin_rec_adj.itc_basis
10359 , l_asset_fin_rec_adj.basic_rate
10360 , l_asset_fin_rec_adj.adjusted_rate
10361 , l_asset_fin_rec_adj.bonus_rule
10362 , l_asset_fin_rec_adj.ceiling_name
10363 , l_asset_fin_rec_adj.recoverable_cost
10364 , l_asset_fin_rec_adj.adjusted_capacity
10365 , l_asset_fin_rec_adj.fully_rsvd_revals_counter
10366 , l_asset_fin_rec_adj.idled_flag
10367 , l_asset_fin_rec_adj.period_counter_capitalized
10368 , l_asset_fin_rec_adj.period_counter_fully_reserved
10369 , l_asset_fin_rec_adj.period_counter_fully_retired
10370 , l_asset_fin_rec_adj.production_capacity
10371 , l_asset_fin_rec_adj.reval_amortization_basis
10372 , l_asset_fin_rec_adj.reval_ceiling
10373 , l_asset_fin_rec_adj.unit_of_measure
10374 , l_asset_fin_rec_adj.unrevalued_cost
10375 , l_asset_fin_rec_adj.annual_deprn_rounding_flag
10376 , l_asset_fin_rec_adj.percent_salvage_value
10377 , l_asset_fin_rec_adj.allowed_deprn_limit
10378 , l_asset_fin_rec_adj.allowed_deprn_limit_amount
10379 , l_asset_fin_rec_adj.period_counter_life_complete
10380 , l_asset_fin_rec_adj.adjusted_recoverable_cost
10381 , l_asset_fin_rec_adj.annual_rounding_flag
10382 , l_asset_fin_rec_adj.eofy_adj_cost
10383 , l_asset_fin_rec_adj.eofy_formula_factor
10384 , l_asset_fin_rec_adj.short_fiscal_year_flag
10385 , l_asset_fin_rec_adj.conversion_date
10386 , l_asset_fin_rec_adj.orig_deprn_start_date
10387 , l_asset_fin_rec_adj.remaining_life1
10388 , l_asset_fin_rec_adj.remaining_life2
10389 , l_asset_fin_rec_adj.group_asset_id
10390 , l_asset_fin_rec_adj.old_adjusted_cost
10391 , l_asset_fin_rec_adj.formula_factor
10392 , l_asset_fin_rec_adj.salvage_type
10393 , l_asset_fin_rec_adj.deprn_limit_type
10394 , l_asset_fin_rec_adj.over_depreciate_option
10395 , l_asset_fin_rec_adj.super_group_id
10396 , l_asset_fin_rec_adj.reduction_rate
10397 , l_asset_fin_rec_adj.reduce_addition_flag
10398 , l_asset_fin_rec_adj.reduce_adjustment_flag
10399 , l_asset_fin_rec_adj.reduce_retirement_flag
10400 , l_asset_fin_rec_adj.recognize_gain_loss
10401 , l_asset_fin_rec_adj.recapture_reserve_flag
10402 , l_asset_fin_rec_adj.limit_proceeds_flag
10403 , l_asset_fin_rec_adj.terminal_gain_loss
10404 , l_asset_fin_rec_adj.tracking_method
10405 , l_asset_fin_rec_adj.exclude_fully_rsv_flag
10406 , l_asset_fin_rec_adj.excess_allocation_option
10407 , l_asset_fin_rec_adj.depreciation_option
10408 , l_asset_fin_rec_adj.member_rollup_flag
10409 , l_asset_fin_rec_adj.ytd_proceeds
10410 , l_asset_fin_rec_adj.ltd_proceeds
10411 , l_asset_fin_rec_adj.allocate_to_fully_rsv_flag
10412 , l_asset_fin_rec_adj.allocate_to_fully_ret_flag
10413 , l_asset_fin_rec_adj.cip_cost
10414 , l_asset_fin_rec_adj.terminal_gain_loss_amount
10415 , l_asset_fin_rec_adj.ltd_cost_of_removal
10416 , l_asset_fin_rec_adj.prior_eofy_reserve
10417 , l_asset_fin_rec_adj.eofy_reserve
10418 , l_asset_fin_rec_adj.eop_adj_cost
10419 , l_asset_fin_rec_adj.eop_formula_factor
10420 , l_asset_fin_rec_adj.global_attribute1
10421 , l_asset_fin_rec_adj.global_attribute2
10422 , l_asset_fin_rec_adj.global_attribute3
10423 , l_asset_fin_rec_adj.global_attribute4
10424 , l_asset_fin_rec_adj.global_attribute5
10425 , l_asset_fin_rec_adj.global_attribute6
10426 , l_asset_fin_rec_adj.global_attribute7
10427 , l_asset_fin_rec_adj.global_attribute8
10428 , l_asset_fin_rec_adj.global_attribute9
10429 , l_asset_fin_rec_adj.global_attribute10
10430 , l_asset_fin_rec_adj.global_attribute11
10431 , l_asset_fin_rec_adj.global_attribute12
10432 , l_asset_fin_rec_adj.global_attribute13
10433 , l_asset_fin_rec_adj.global_attribute14
10434 , l_asset_fin_rec_adj.global_attribute15
10435 , l_asset_fin_rec_adj.global_attribute16
10436 , l_asset_fin_rec_adj.global_attribute17
10437 , l_asset_fin_rec_adj.global_attribute18
10438 , l_asset_fin_rec_adj.global_attribute19
10439 , l_asset_fin_rec_adj.global_attribute20
10440 , l_asset_fin_rec_adj.global_attribute_category;
10441 l_adj_found := c_get_mcbk2%FOUND;
10442 CLOSE c_get_mcbk2;
10443
10444 else
10445 OPEN c_get_mcbk(l_asset_id, l_transaction_header_id);
10446 FETCH c_get_mcbk INTO l_asset_fin_rec_adj.date_placed_in_service
10447 , l_asset_fin_rec_adj.deprn_start_date
10448 , l_asset_fin_rec_adj.deprn_method_code
10449 , l_asset_fin_rec_adj.life_in_months
10450 , l_asset_fin_rec_adj.rate_adjustment_factor
10451 , l_asset_fin_rec_adj.adjusted_cost
10452 , l_asset_fin_rec_adj.cost
10453 , l_asset_fin_rec_adj.original_cost
10454 , l_asset_fin_rec_adj.salvage_value
10455 , l_asset_fin_rec_adj.prorate_convention_code
10456 , l_asset_fin_rec_adj.prorate_date
10457 , l_asset_fin_rec_adj.cost_change_flag
10458 , l_asset_fin_rec_adj.adjustment_required_status
10459 , l_asset_fin_rec_adj.capitalize_flag
10460 , l_asset_fin_rec_adj.retirement_pending_flag
10461 , l_asset_fin_rec_adj.depreciate_flag
10462 , l_asset_fin_rec_adj.itc_amount_id
10463 , l_asset_fin_rec_adj.itc_amount
10464 , l_asset_fin_rec_adj.retirement_id
10465 , l_asset_fin_rec_adj.tax_request_id
10466 , l_asset_fin_rec_adj.itc_basis
10467 , l_asset_fin_rec_adj.basic_rate
10468 , l_asset_fin_rec_adj.adjusted_rate
10469 , l_asset_fin_rec_adj.bonus_rule
10470 , l_asset_fin_rec_adj.ceiling_name
10471 , l_asset_fin_rec_adj.recoverable_cost
10472 , l_asset_fin_rec_adj.adjusted_capacity
10473 , l_asset_fin_rec_adj.fully_rsvd_revals_counter
10474 , l_asset_fin_rec_adj.idled_flag
10475 , l_asset_fin_rec_adj.period_counter_capitalized
10476 , l_asset_fin_rec_adj.period_counter_fully_reserved
10477 , l_asset_fin_rec_adj.period_counter_fully_retired
10478 , l_asset_fin_rec_adj.production_capacity
10479 , l_asset_fin_rec_adj.reval_amortization_basis
10483 , l_asset_fin_rec_adj.annual_deprn_rounding_flag
10480 , l_asset_fin_rec_adj.reval_ceiling
10481 , l_asset_fin_rec_adj.unit_of_measure
10482 , l_asset_fin_rec_adj.unrevalued_cost
10484 , l_asset_fin_rec_adj.percent_salvage_value
10485 , l_asset_fin_rec_adj.allowed_deprn_limit
10486 , l_asset_fin_rec_adj.allowed_deprn_limit_amount
10487 , l_asset_fin_rec_adj.period_counter_life_complete
10488 , l_asset_fin_rec_adj.adjusted_recoverable_cost
10489 , l_asset_fin_rec_adj.annual_rounding_flag
10490 , l_asset_fin_rec_adj.eofy_adj_cost
10491 , l_asset_fin_rec_adj.eofy_formula_factor
10492 , l_asset_fin_rec_adj.short_fiscal_year_flag
10493 , l_asset_fin_rec_adj.conversion_date
10494 , l_asset_fin_rec_adj.orig_deprn_start_date
10495 , l_asset_fin_rec_adj.remaining_life1
10496 , l_asset_fin_rec_adj.remaining_life2
10497 , l_asset_fin_rec_adj.group_asset_id
10498 , l_asset_fin_rec_adj.old_adjusted_cost
10499 , l_asset_fin_rec_adj.formula_factor
10500 , l_asset_fin_rec_adj.salvage_type
10501 , l_asset_fin_rec_adj.deprn_limit_type
10502 , l_asset_fin_rec_adj.over_depreciate_option
10503 , l_asset_fin_rec_adj.super_group_id
10504 , l_asset_fin_rec_adj.reduction_rate
10505 , l_asset_fin_rec_adj.reduce_addition_flag
10506 , l_asset_fin_rec_adj.reduce_adjustment_flag
10507 , l_asset_fin_rec_adj.reduce_retirement_flag
10508 , l_asset_fin_rec_adj.recognize_gain_loss
10509 , l_asset_fin_rec_adj.recapture_reserve_flag
10510 , l_asset_fin_rec_adj.limit_proceeds_flag
10511 , l_asset_fin_rec_adj.terminal_gain_loss
10512 , l_asset_fin_rec_adj.tracking_method
10513 , l_asset_fin_rec_adj.exclude_fully_rsv_flag
10514 , l_asset_fin_rec_adj.excess_allocation_option
10515 , l_asset_fin_rec_adj.depreciation_option
10516 , l_asset_fin_rec_adj.member_rollup_flag
10517 , l_asset_fin_rec_adj.ytd_proceeds
10518 , l_asset_fin_rec_adj.ltd_proceeds
10519 , l_asset_fin_rec_adj.allocate_to_fully_rsv_flag
10520 , l_asset_fin_rec_adj.allocate_to_fully_ret_flag
10521 , l_asset_fin_rec_adj.cip_cost
10522 , l_asset_fin_rec_adj.terminal_gain_loss_amount
10523 , l_asset_fin_rec_adj.ltd_cost_of_removal
10524 , l_asset_fin_rec_adj.prior_eofy_reserve
10525 , l_asset_fin_rec_adj.eofy_reserve
10526 , l_asset_fin_rec_adj.eop_adj_cost
10527 , l_asset_fin_rec_adj.eop_formula_factor
10528 , l_asset_fin_rec_adj.global_attribute1
10529 , l_asset_fin_rec_adj.global_attribute2
10530 , l_asset_fin_rec_adj.global_attribute3
10531 , l_asset_fin_rec_adj.global_attribute4
10532 , l_asset_fin_rec_adj.global_attribute5
10533 , l_asset_fin_rec_adj.global_attribute6
10534 , l_asset_fin_rec_adj.global_attribute7
10535 , l_asset_fin_rec_adj.global_attribute8
10536 , l_asset_fin_rec_adj.global_attribute9
10537 , l_asset_fin_rec_adj.global_attribute10
10538 , l_asset_fin_rec_adj.global_attribute11
10539 , l_asset_fin_rec_adj.global_attribute12
10540 , l_asset_fin_rec_adj.global_attribute13
10541 , l_asset_fin_rec_adj.global_attribute14
10542 , l_asset_fin_rec_adj.global_attribute15
10543 , l_asset_fin_rec_adj.global_attribute16
10544 , l_asset_fin_rec_adj.global_attribute17
10545 , l_asset_fin_rec_adj.global_attribute18
10546 , l_asset_fin_rec_adj.global_attribute19
10547 , l_asset_fin_rec_adj.global_attribute20
10548 , l_asset_fin_rec_adj.global_attribute_category;
10549 l_adj_found := c_get_mcbk%FOUND;
10550 CLOSE c_get_mcbk;
10551
10552 end if; -- (px_asset_fin_rec.deprn_method_code is null)
10553
10554 if (p_log_level_rec.statement_level) then
10555 fa_debug_pkg.add(l_calling_fn, 'Got bk to find delta from db',
10556 l_asset_fin_rec_adj.cost, p_log_level_rec => p_log_level_rec);
10557 end if;
10558
10559 else
10560 if (px_asset_fin_rec.date_placed_in_service is null) then
10561
10562 if p_init_transaction_header_id is null then
10563 OPEN c_get_init_bk;
10564 FETCH c_get_init_bk INTO px_asset_fin_rec.date_placed_in_service
10565 , px_asset_fin_rec.deprn_start_date
10566 , px_asset_fin_rec.deprn_method_code
10567 , px_asset_fin_rec.life_in_months
10568 , px_asset_fin_rec.rate_adjustment_factor
10569 , px_asset_fin_rec.adjusted_cost
10570 , px_asset_fin_rec.cost
10571 , px_asset_fin_rec.original_cost
10572 , px_asset_fin_rec.salvage_value
10573 , px_asset_fin_rec.prorate_convention_code
10574 , px_asset_fin_rec.prorate_date
10575 , px_asset_fin_rec.cost_change_flag
10576 , px_asset_fin_rec.adjustment_required_status
10577 , px_asset_fin_rec.capitalize_flag
10578 , px_asset_fin_rec.retirement_pending_flag
10579 , px_asset_fin_rec.depreciate_flag
10580 , px_asset_fin_rec.itc_amount_id
10581 , px_asset_fin_rec.itc_amount
10582 , px_asset_fin_rec.retirement_id
10583 , px_asset_fin_rec.tax_request_id
10584 , px_asset_fin_rec.itc_basis
10585 , px_asset_fin_rec.basic_rate
10586 , px_asset_fin_rec.adjusted_rate
10587 , px_asset_fin_rec.bonus_rule
10588 , px_asset_fin_rec.ceiling_name
10589 , px_asset_fin_rec.recoverable_cost
10590 , px_asset_fin_rec.adjusted_capacity
10591 , px_asset_fin_rec.fully_rsvd_revals_counter
10592 , px_asset_fin_rec.idled_flag
10593 , px_asset_fin_rec.period_counter_capitalized
10594 , px_asset_fin_rec.period_counter_fully_reserved
10595 , px_asset_fin_rec.period_counter_fully_retired
10596 , px_asset_fin_rec.production_capacity
10597 , px_asset_fin_rec.reval_amortization_basis
10598 , px_asset_fin_rec.reval_ceiling
10599 , px_asset_fin_rec.unit_of_measure
10600 , px_asset_fin_rec.unrevalued_cost
10601 , px_asset_fin_rec.annual_deprn_rounding_flag
10602 , px_asset_fin_rec.percent_salvage_value
10603 , px_asset_fin_rec.allowed_deprn_limit
10604 , px_asset_fin_rec.allowed_deprn_limit_amount
10605 , px_asset_fin_rec.period_counter_life_complete
10606 , px_asset_fin_rec.adjusted_recoverable_cost
10607 , px_asset_fin_rec.annual_rounding_flag
10608 , px_asset_fin_rec.eofy_adj_cost
10609 , px_asset_fin_rec.eofy_formula_factor
10610 , px_asset_fin_rec.short_fiscal_year_flag
10611 , px_asset_fin_rec.conversion_date
10612 , px_asset_fin_rec.orig_deprn_start_date
10613 , px_asset_fin_rec.remaining_life1
10614 , px_asset_fin_rec.remaining_life2
10615 , px_asset_fin_rec.group_asset_id
10616 , px_asset_fin_rec.old_adjusted_cost
10617 , px_asset_fin_rec.formula_factor
10618 , px_asset_fin_rec.salvage_type
10619 , px_asset_fin_rec.deprn_limit_type
10620 , px_asset_fin_rec.over_depreciate_option
10621 , px_asset_fin_rec.super_group_id
10622 , px_asset_fin_rec.reduction_rate
10623 , px_asset_fin_rec.reduce_addition_flag
10624 , px_asset_fin_rec.reduce_adjustment_flag
10625 , px_asset_fin_rec.reduce_retirement_flag
10626 , px_asset_fin_rec.recognize_gain_loss
10627 , px_asset_fin_rec.recapture_reserve_flag
10628 , px_asset_fin_rec.limit_proceeds_flag
10629 , px_asset_fin_rec.terminal_gain_loss
10630 , px_asset_fin_rec.tracking_method
10631 , px_asset_fin_rec.exclude_fully_rsv_flag
10632 , px_asset_fin_rec.excess_allocation_option
10633 , px_asset_fin_rec.depreciation_option
10634 , px_asset_fin_rec.member_rollup_flag
10635 , px_asset_fin_rec.ytd_proceeds
10636 , px_asset_fin_rec.ltd_proceeds
10637 , px_asset_fin_rec.allocate_to_fully_rsv_flag
10638 , px_asset_fin_rec.allocate_to_fully_ret_flag
10639 , px_asset_fin_rec.cip_cost
10640 , px_asset_fin_rec.terminal_gain_loss_amount
10641 , px_asset_fin_rec.ltd_cost_of_removal
10642 , px_asset_fin_rec.prior_eofy_reserve
10643 , px_asset_fin_rec.eofy_reserve
10644 , px_asset_fin_rec.eop_adj_cost
10645 , px_asset_fin_rec.eop_formula_factor
10649 , px_asset_fin_rec.global_attribute4
10646 , px_asset_fin_rec.global_attribute1
10647 , px_asset_fin_rec.global_attribute2
10648 , px_asset_fin_rec.global_attribute3
10650 , px_asset_fin_rec.global_attribute5
10651 , px_asset_fin_rec.global_attribute6
10652 , px_asset_fin_rec.global_attribute7
10653 , px_asset_fin_rec.global_attribute8
10654 , px_asset_fin_rec.global_attribute9
10655 , px_asset_fin_rec.global_attribute10
10656 , px_asset_fin_rec.global_attribute11
10657 , px_asset_fin_rec.global_attribute12
10658 , px_asset_fin_rec.global_attribute13
10659 , px_asset_fin_rec.global_attribute14
10660 , px_asset_fin_rec.global_attribute15
10661 , px_asset_fin_rec.global_attribute16
10662 , px_asset_fin_rec.global_attribute17
10663 , px_asset_fin_rec.global_attribute18
10664 , px_asset_fin_rec.global_attribute19
10665 , px_asset_fin_rec.global_attribute20
10666 , px_asset_fin_rec.global_attribute_category
10667 , px_asset_fin_rec.nbv_at_switch
10668 , px_asset_fin_rec.prior_deprn_limit_type
10669 , px_asset_fin_rec.prior_deprn_limit_amount
10670 , px_asset_fin_rec.prior_deprn_limit
10671 , px_asset_fin_rec.prior_deprn_method
10672 , px_asset_fin_rec.prior_life_in_months
10673 , px_asset_fin_rec.prior_basic_rate
10674 , px_asset_fin_rec.prior_adjusted_rate ;
10675 CLOSE c_get_init_bk;
10676 else
10677 OPEN c_get_init_bk_winit;
10678 FETCH c_get_init_bk_winit INTO px_asset_fin_rec.date_placed_in_service
10679 , px_asset_fin_rec.deprn_start_date
10680 , px_asset_fin_rec.deprn_method_code
10681 , px_asset_fin_rec.life_in_months
10682 , px_asset_fin_rec.rate_adjustment_factor
10683 , px_asset_fin_rec.adjusted_cost
10684 , px_asset_fin_rec.cost
10685 , px_asset_fin_rec.original_cost
10686 , px_asset_fin_rec.salvage_value
10687 , px_asset_fin_rec.prorate_convention_code
10688 , px_asset_fin_rec.prorate_date
10689 , px_asset_fin_rec.cost_change_flag
10690 , px_asset_fin_rec.adjustment_required_status
10691 , px_asset_fin_rec.capitalize_flag
10692 , px_asset_fin_rec.retirement_pending_flag
10693 , px_asset_fin_rec.depreciate_flag
10694 , px_asset_fin_rec.itc_amount_id
10695 , px_asset_fin_rec.itc_amount
10696 , px_asset_fin_rec.retirement_id
10697 , px_asset_fin_rec.tax_request_id
10698 , px_asset_fin_rec.itc_basis
10699 , px_asset_fin_rec.basic_rate
10700 , px_asset_fin_rec.adjusted_rate
10701 , px_asset_fin_rec.bonus_rule
10702 , px_asset_fin_rec.ceiling_name
10703 , px_asset_fin_rec.recoverable_cost
10704 , px_asset_fin_rec.adjusted_capacity
10705 , px_asset_fin_rec.fully_rsvd_revals_counter
10706 , px_asset_fin_rec.idled_flag
10707 , px_asset_fin_rec.period_counter_capitalized
10708 , px_asset_fin_rec.period_counter_fully_reserved
10709 , px_asset_fin_rec.period_counter_fully_retired
10710 , px_asset_fin_rec.production_capacity
10711 , px_asset_fin_rec.reval_amortization_basis
10712 , px_asset_fin_rec.reval_ceiling
10713 , px_asset_fin_rec.unit_of_measure
10714 , px_asset_fin_rec.unrevalued_cost
10715 , px_asset_fin_rec.annual_deprn_rounding_flag
10716 , px_asset_fin_rec.percent_salvage_value
10717 , px_asset_fin_rec.allowed_deprn_limit
10718 , px_asset_fin_rec.allowed_deprn_limit_amount
10719 , px_asset_fin_rec.period_counter_life_complete
10720 , px_asset_fin_rec.adjusted_recoverable_cost
10721 , px_asset_fin_rec.annual_rounding_flag
10722 , px_asset_fin_rec.eofy_adj_cost
10723 , px_asset_fin_rec.eofy_formula_factor
10724 , px_asset_fin_rec.short_fiscal_year_flag
10725 , px_asset_fin_rec.conversion_date
10726 , px_asset_fin_rec.orig_deprn_start_date
10727 , px_asset_fin_rec.remaining_life1
10728 , px_asset_fin_rec.remaining_life2
10729 , px_asset_fin_rec.group_asset_id
10730 , px_asset_fin_rec.old_adjusted_cost
10731 , px_asset_fin_rec.formula_factor
10732 , px_asset_fin_rec.salvage_type
10733 , px_asset_fin_rec.deprn_limit_type
10734 , px_asset_fin_rec.over_depreciate_option
10735 , px_asset_fin_rec.super_group_id
10736 , px_asset_fin_rec.reduction_rate
10737 , px_asset_fin_rec.reduce_addition_flag
10738 , px_asset_fin_rec.reduce_adjustment_flag
10739 , px_asset_fin_rec.reduce_retirement_flag
10740 , px_asset_fin_rec.recognize_gain_loss
10741 , px_asset_fin_rec.recapture_reserve_flag
10742 , px_asset_fin_rec.limit_proceeds_flag
10743 , px_asset_fin_rec.terminal_gain_loss
10744 , px_asset_fin_rec.tracking_method
10745 , px_asset_fin_rec.exclude_fully_rsv_flag
10746 , px_asset_fin_rec.excess_allocation_option
10747 , px_asset_fin_rec.depreciation_option
10748 , px_asset_fin_rec.member_rollup_flag
10749 , px_asset_fin_rec.ytd_proceeds
10750 , px_asset_fin_rec.ltd_proceeds
10751 , px_asset_fin_rec.allocate_to_fully_rsv_flag
10752 , px_asset_fin_rec.allocate_to_fully_ret_flag
10753 , px_asset_fin_rec.cip_cost
10754 , px_asset_fin_rec.terminal_gain_loss_amount
10755 , px_asset_fin_rec.ltd_cost_of_removal
10756 , px_asset_fin_rec.prior_eofy_reserve
10757 , px_asset_fin_rec.eofy_reserve
10758 , px_asset_fin_rec.eop_adj_cost
10759 , px_asset_fin_rec.eop_formula_factor
10760 , px_asset_fin_rec.global_attribute1
10761 , px_asset_fin_rec.global_attribute2
10762 , px_asset_fin_rec.global_attribute3
10763 , px_asset_fin_rec.global_attribute4
10764 , px_asset_fin_rec.global_attribute5
10765 , px_asset_fin_rec.global_attribute6
10766 , px_asset_fin_rec.global_attribute7
10767 , px_asset_fin_rec.global_attribute8
10768 , px_asset_fin_rec.global_attribute9
10769 , px_asset_fin_rec.global_attribute10
10770 , px_asset_fin_rec.global_attribute11
10771 , px_asset_fin_rec.global_attribute12
10772 , px_asset_fin_rec.global_attribute13
10773 , px_asset_fin_rec.global_attribute14
10774 , px_asset_fin_rec.global_attribute15
10775 , px_asset_fin_rec.global_attribute16
10776 , px_asset_fin_rec.global_attribute17
10777 , px_asset_fin_rec.global_attribute18
10778 , px_asset_fin_rec.global_attribute19
10779 , px_asset_fin_rec.global_attribute20
10780 , px_asset_fin_rec.global_attribute_category
10781 , px_asset_fin_rec.nbv_at_switch
10782 , px_asset_fin_rec.prior_deprn_limit_type
10783 , px_asset_fin_rec.prior_deprn_limit_amount
10784 , px_asset_fin_rec.prior_deprn_limit
10785 , px_asset_fin_rec.prior_deprn_method
10786 , px_asset_fin_rec.prior_life_in_months
10787 , px_asset_fin_rec.prior_basic_rate
10788 , px_asset_fin_rec.prior_adjusted_rate ;
10789 CLOSE c_get_init_bk_winit;
10790
10791 end if;
10792
10793 if (p_log_level_rec.statement_level) then
10794 fa_debug_pkg.add(l_calling_fn, 'Found initial fin_rec from db',
10795 px_asset_fin_rec.cost, p_log_level_rec => p_log_level_rec);
10796 end if;
10797 /*
10798 if p_trans_rec.transaction_type_code in
10799 (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET) and
10800 not (p_use_fin_rec_adj) then
10801
10802 x_asset_fin_rec_new := px_asset_fin_rec;
10803
10804 --tk_util.DumpFinRec(px_asset_fin_rec, 'GO2');
10805 --tk_util.DumpFinRec(x_asset_fin_rec_new, 'GN');
10806
10807 if (p_log_level_rec.statement_level) then
10808 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
10809 end if;
10810
10811 return TRUE;
10812
10813 els*/
10814
10815 if not (p_process_this_trx) then
10816 x_asset_fin_rec_new := px_asset_fin_rec;
10817 if (p_log_level_rec.statement_level) then
10818 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
10819 end if;
10820
10821 return TRUE;
10822 end if;
10823
10824 end if;
10825
10829 , l_asset_fin_rec_adj.deprn_start_date
10826 if (px_asset_fin_rec.deprn_method_code is null) then
10827 OPEN c_get_bk2(l_asset_id, l_transaction_header_id);
10828 FETCH c_get_bk2 INTO l_asset_fin_rec_adj.date_placed_in_service
10830 , l_asset_fin_rec_adj.deprn_method_code
10831 , l_asset_fin_rec_adj.life_in_months
10832 , l_asset_fin_rec_adj.rate_adjustment_factor
10833 , l_asset_fin_rec_adj.adjusted_cost
10834 , l_asset_fin_rec_adj.cost
10835 , l_asset_fin_rec_adj.original_cost
10836 , l_asset_fin_rec_adj.salvage_value
10837 , l_asset_fin_rec_adj.prorate_convention_code
10838 , l_asset_fin_rec_adj.prorate_date
10839 , l_asset_fin_rec_adj.cost_change_flag
10840 , l_asset_fin_rec_adj.adjustment_required_status
10841 , l_asset_fin_rec_adj.capitalize_flag
10842 , l_asset_fin_rec_adj.retirement_pending_flag
10843 , l_asset_fin_rec_adj.depreciate_flag
10844 , l_asset_fin_rec_adj.itc_amount_id
10845 , l_asset_fin_rec_adj.itc_amount
10846 , l_asset_fin_rec_adj.retirement_id
10847 , l_asset_fin_rec_adj.tax_request_id
10848 , l_asset_fin_rec_adj.itc_basis
10849 , l_asset_fin_rec_adj.basic_rate
10850 , l_asset_fin_rec_adj.adjusted_rate
10851 , l_asset_fin_rec_adj.bonus_rule
10852 , l_asset_fin_rec_adj.ceiling_name
10853 , l_asset_fin_rec_adj.recoverable_cost
10854 , l_asset_fin_rec_adj.adjusted_capacity
10855 , l_asset_fin_rec_adj.fully_rsvd_revals_counter
10856 , l_asset_fin_rec_adj.idled_flag
10857 , l_asset_fin_rec_adj.period_counter_capitalized
10858 , l_asset_fin_rec_adj.period_counter_fully_reserved
10859 , l_asset_fin_rec_adj.period_counter_fully_retired
10860 , l_asset_fin_rec_adj.production_capacity
10861 , l_asset_fin_rec_adj.reval_amortization_basis
10862 , l_asset_fin_rec_adj.reval_ceiling
10863 , l_asset_fin_rec_adj.unit_of_measure
10864 , l_asset_fin_rec_adj.unrevalued_cost
10865 , l_asset_fin_rec_adj.annual_deprn_rounding_flag
10866 , l_asset_fin_rec_adj.percent_salvage_value
10867 , l_asset_fin_rec_adj.allowed_deprn_limit
10868 , l_asset_fin_rec_adj.allowed_deprn_limit_amount
10869 , l_asset_fin_rec_adj.period_counter_life_complete
10870 , l_asset_fin_rec_adj.adjusted_recoverable_cost
10871 , l_asset_fin_rec_adj.annual_rounding_flag
10872 , l_asset_fin_rec_adj.eofy_adj_cost
10873 , l_asset_fin_rec_adj.eofy_formula_factor
10874 , l_asset_fin_rec_adj.short_fiscal_year_flag
10875 , l_asset_fin_rec_adj.conversion_date
10876 , l_asset_fin_rec_adj.orig_deprn_start_date
10877 , l_asset_fin_rec_adj.remaining_life1
10878 , l_asset_fin_rec_adj.remaining_life2
10879 , l_asset_fin_rec_adj.group_asset_id
10880 , l_asset_fin_rec_adj.old_adjusted_cost
10881 , l_asset_fin_rec_adj.formula_factor
10882 , l_asset_fin_rec_adj.salvage_type
10883 , l_asset_fin_rec_adj.deprn_limit_type
10884 , l_asset_fin_rec_adj.over_depreciate_option
10885 , l_asset_fin_rec_adj.super_group_id
10886 , l_asset_fin_rec_adj.reduction_rate
10887 , l_asset_fin_rec_adj.reduce_addition_flag
10888 , l_asset_fin_rec_adj.reduce_adjustment_flag
10889 , l_asset_fin_rec_adj.reduce_retirement_flag
10890 , l_asset_fin_rec_adj.recognize_gain_loss
10891 , l_asset_fin_rec_adj.recapture_reserve_flag
10892 , l_asset_fin_rec_adj.limit_proceeds_flag
10893 , l_asset_fin_rec_adj.terminal_gain_loss
10894 , l_asset_fin_rec_adj.tracking_method
10895 , l_asset_fin_rec_adj.exclude_fully_rsv_flag
10896 , l_asset_fin_rec_adj.excess_allocation_option
10897 , l_asset_fin_rec_adj.depreciation_option
10898 , l_asset_fin_rec_adj.member_rollup_flag
10899 , l_asset_fin_rec_adj.ytd_proceeds
10900 , l_asset_fin_rec_adj.ltd_proceeds
10901 , l_asset_fin_rec_adj.allocate_to_fully_rsv_flag
10902 , l_asset_fin_rec_adj.allocate_to_fully_ret_flag
10903 , l_asset_fin_rec_adj.cip_cost
10904 , l_asset_fin_rec_adj.terminal_gain_loss_amount
10905 , l_asset_fin_rec_adj.ltd_cost_of_removal
10906 , l_asset_fin_rec_adj.prior_eofy_reserve
10907 , l_asset_fin_rec_adj.eofy_reserve
10908 , l_asset_fin_rec_adj.eop_adj_cost
10909 , l_asset_fin_rec_adj.eop_formula_factor
10910 , l_asset_fin_rec_adj.global_attribute1
10911 , l_asset_fin_rec_adj.global_attribute2
10912 , l_asset_fin_rec_adj.global_attribute3
10913 , l_asset_fin_rec_adj.global_attribute4
10914 , l_asset_fin_rec_adj.global_attribute5
10915 , l_asset_fin_rec_adj.global_attribute6
10919 , l_asset_fin_rec_adj.global_attribute10
10916 , l_asset_fin_rec_adj.global_attribute7
10917 , l_asset_fin_rec_adj.global_attribute8
10918 , l_asset_fin_rec_adj.global_attribute9
10920 , l_asset_fin_rec_adj.global_attribute11
10921 , l_asset_fin_rec_adj.global_attribute12
10922 , l_asset_fin_rec_adj.global_attribute13
10923 , l_asset_fin_rec_adj.global_attribute14
10924 , l_asset_fin_rec_adj.global_attribute15
10925 , l_asset_fin_rec_adj.global_attribute16
10926 , l_asset_fin_rec_adj.global_attribute17
10927 , l_asset_fin_rec_adj.global_attribute18
10928 , l_asset_fin_rec_adj.global_attribute19
10929 , l_asset_fin_rec_adj.global_attribute20
10930 , l_asset_fin_rec_adj.global_attribute_category
10931 , l_asset_fin_rec_adj.nbv_at_switch
10932 , l_asset_fin_rec_adj.prior_deprn_limit_type
10933 , l_asset_fin_rec_adj.prior_deprn_limit_amount
10934 , l_asset_fin_rec_adj.prior_deprn_limit
10935 , l_asset_fin_rec_adj.prior_deprn_method
10936 , l_asset_fin_rec_adj.prior_life_in_months
10937 , l_asset_fin_rec_adj.prior_basic_rate
10938 , l_asset_fin_rec_adj.prior_adjusted_rate ;
10939 l_adj_found := c_get_bk2%FOUND;
10940 CLOSE c_get_bk2;
10941
10942 --tk_util.DumpFinRec(l_asset_fin_rec_adj, 'GO2.5');
10943 else
10944 OPEN c_get_bk(l_asset_id, l_transaction_header_id);
10945 FETCH c_get_bk INTO l_asset_fin_rec_adj.date_placed_in_service
10946 , l_asset_fin_rec_adj.deprn_start_date
10947 , l_asset_fin_rec_adj.deprn_method_code
10948 , l_asset_fin_rec_adj.life_in_months
10949 , l_asset_fin_rec_adj.rate_adjustment_factor
10950 , l_asset_fin_rec_adj.adjusted_cost
10951 , l_asset_fin_rec_adj.cost
10952 , l_asset_fin_rec_adj.original_cost
10953 , l_asset_fin_rec_adj.salvage_value
10954 , l_asset_fin_rec_adj.prorate_convention_code
10955 , l_asset_fin_rec_adj.prorate_date
10956 , l_asset_fin_rec_adj.cost_change_flag
10957 , l_asset_fin_rec_adj.adjustment_required_status
10958 , l_asset_fin_rec_adj.capitalize_flag
10959 , l_asset_fin_rec_adj.retirement_pending_flag
10960 , l_asset_fin_rec_adj.depreciate_flag
10961 , l_asset_fin_rec_adj.itc_amount_id
10965 , l_asset_fin_rec_adj.itc_basis
10962 , l_asset_fin_rec_adj.itc_amount
10963 , l_asset_fin_rec_adj.retirement_id
10964 , l_asset_fin_rec_adj.tax_request_id
10966 , l_asset_fin_rec_adj.basic_rate
10967 , l_asset_fin_rec_adj.adjusted_rate
10968 , l_asset_fin_rec_adj.bonus_rule
10969 , l_asset_fin_rec_adj.ceiling_name
10970 , l_asset_fin_rec_adj.recoverable_cost
10971 , l_asset_fin_rec_adj.adjusted_capacity
10972 , l_asset_fin_rec_adj.fully_rsvd_revals_counter
10973 , l_asset_fin_rec_adj.idled_flag
10974 , l_asset_fin_rec_adj.period_counter_capitalized
10975 , l_asset_fin_rec_adj.period_counter_fully_reserved
10976 , l_asset_fin_rec_adj.period_counter_fully_retired
10977 , l_asset_fin_rec_adj.production_capacity
10978 , l_asset_fin_rec_adj.reval_amortization_basis
10979 , l_asset_fin_rec_adj.reval_ceiling
10980 , l_asset_fin_rec_adj.unit_of_measure
10981 , l_asset_fin_rec_adj.unrevalued_cost
10982 , l_asset_fin_rec_adj.annual_deprn_rounding_flag
10983 , l_asset_fin_rec_adj.percent_salvage_value
10984 , l_asset_fin_rec_adj.allowed_deprn_limit
10985 , l_asset_fin_rec_adj.allowed_deprn_limit_amount
10986 , l_asset_fin_rec_adj.period_counter_life_complete
10987 , l_asset_fin_rec_adj.adjusted_recoverable_cost
10988 , l_asset_fin_rec_adj.annual_rounding_flag
10989 , l_asset_fin_rec_adj.eofy_adj_cost
10990 , l_asset_fin_rec_adj.eofy_formula_factor
10991 , l_asset_fin_rec_adj.short_fiscal_year_flag
10992 , l_asset_fin_rec_adj.conversion_date
10993 , l_asset_fin_rec_adj.orig_deprn_start_date
10994 , l_asset_fin_rec_adj.remaining_life1
10995 , l_asset_fin_rec_adj.remaining_life2
10996 , l_asset_fin_rec_adj.group_asset_id
10997 , l_asset_fin_rec_adj.old_adjusted_cost
10998 , l_asset_fin_rec_adj.formula_factor
10999 , l_asset_fin_rec_adj.salvage_type
11000 , l_asset_fin_rec_adj.deprn_limit_type
11001 , l_asset_fin_rec_adj.over_depreciate_option
11002 , l_asset_fin_rec_adj.super_group_id
11003 , l_asset_fin_rec_adj.reduction_rate
11004 , l_asset_fin_rec_adj.reduce_addition_flag
11005 , l_asset_fin_rec_adj.reduce_adjustment_flag
11006 , l_asset_fin_rec_adj.reduce_retirement_flag
11007 , l_asset_fin_rec_adj.recognize_gain_loss
11008 , l_asset_fin_rec_adj.recapture_reserve_flag
11009 , l_asset_fin_rec_adj.limit_proceeds_flag
11010 , l_asset_fin_rec_adj.terminal_gain_loss
11011 , l_asset_fin_rec_adj.tracking_method
11012 , l_asset_fin_rec_adj.exclude_fully_rsv_flag
11013 , l_asset_fin_rec_adj.excess_allocation_option
11014 , l_asset_fin_rec_adj.depreciation_option
11015 , l_asset_fin_rec_adj.member_rollup_flag
11016 , l_asset_fin_rec_adj.ytd_proceeds
11017 , l_asset_fin_rec_adj.ltd_proceeds
11018 , l_asset_fin_rec_adj.allocate_to_fully_rsv_flag
11019 , l_asset_fin_rec_adj.allocate_to_fully_ret_flag
11020 , l_asset_fin_rec_adj.cip_cost
11021 , l_asset_fin_rec_adj.terminal_gain_loss_amount
11022 , l_asset_fin_rec_adj.ltd_cost_of_removal
11023 , l_asset_fin_rec_adj.prior_eofy_reserve
11024 , l_asset_fin_rec_adj.eofy_reserve
11025 , l_asset_fin_rec_adj.eop_adj_cost
11026 , l_asset_fin_rec_adj.eop_formula_factor
11027 , l_asset_fin_rec_adj.global_attribute1
11028 , l_asset_fin_rec_adj.global_attribute2
11029 , l_asset_fin_rec_adj.global_attribute3
11030 , l_asset_fin_rec_adj.global_attribute4
11031 , l_asset_fin_rec_adj.global_attribute5
11032 , l_asset_fin_rec_adj.global_attribute6
11033 , l_asset_fin_rec_adj.global_attribute7
11034 , l_asset_fin_rec_adj.global_attribute8
11035 , l_asset_fin_rec_adj.global_attribute9
11036 , l_asset_fin_rec_adj.global_attribute10
11037 , l_asset_fin_rec_adj.global_attribute11
11038 , l_asset_fin_rec_adj.global_attribute12
11039 , l_asset_fin_rec_adj.global_attribute13
11043 , l_asset_fin_rec_adj.global_attribute17
11040 , l_asset_fin_rec_adj.global_attribute14
11041 , l_asset_fin_rec_adj.global_attribute15
11042 , l_asset_fin_rec_adj.global_attribute16
11044 , l_asset_fin_rec_adj.global_attribute18
11045 , l_asset_fin_rec_adj.global_attribute19
11046 , l_asset_fin_rec_adj.global_attribute20
11047 , l_asset_fin_rec_adj.global_attribute_category
11048 , l_asset_fin_rec_adj.nbv_at_switch
11049 , l_asset_fin_rec_adj.prior_deprn_limit_type
11050 , l_asset_fin_rec_adj.prior_deprn_limit_amount
11051 , l_asset_fin_rec_adj.prior_deprn_limit
11052 , l_asset_fin_rec_adj.prior_deprn_method
11053 , l_asset_fin_rec_adj.prior_life_in_months
11054 , l_asset_fin_rec_adj.prior_basic_rate
11055 , l_asset_fin_rec_adj.prior_adjusted_rate ;
11056 l_adj_found := c_get_bk%FOUND;
11057 CLOSE c_get_bk;
11058 end if; -- (px_asset_fin_rec.deprn_method_code is null)
11059
11060 if (p_log_level_rec.statement_level) then
11061 fa_debug_pkg.add(l_calling_fn, 'Got bk to find delta from db',
11062 l_asset_fin_rec_adj.cost, p_log_level_rec => p_log_level_rec);
11063 end if;
11064
11065
11066 end if; -- (nvl(p_mrc_sob_type_code, 'P') = 'R')
11067
11068 --tk_util.DumpFinRec(px_asset_fin_rec, 'GO2');
11069
11070 l_reclass_trx := (nvl(px_asset_fin_rec.group_asset_id, 0) <>
11071 nvl(l_asset_fin_rec_adj.group_asset_id, px_asset_fin_rec.group_asset_id)); -- bug# 5383699
11072
11073 if (p_log_level_rec.statement_level) then
11074 fa_debug_pkg.add(l_calling_fn, 'p_use_fin_rec_adj', p_use_fin_rec_adj, p_log_level_rec => p_log_level_rec);
11075 end if;
11076
11077 /* For bug 12739028 starts */
11078 if (g_deprn_ch_trx_id is null) then
11079 g_deprn_ch_trx_id := p_trans_rec.transaction_header_id;
11080 end if;
11081 -- Bug 14117544 if method change trx is an expensed trasaction then
11082 -- we need to change method for it.so added a new condition in below if
11083
11084 if (l_adj_found) and (px_asset_fin_rec.deprn_method_code is not null) then
11085 if (g_deprn_ch_trx_id < p_trans_rec.transaction_header_id and
11086 l_asset_fin_rec_adj.deprn_method_code is not null) OR (p_trans_rec.transaction_subtype = 'EXPENSED')then
11087
11088 g_deprn_ch_trx_id := p_trans_rec.transaction_header_id;
11089 l_adj_deprn_method := l_asset_fin_rec_adj.deprn_method_code;
11090 l_adj_basic_rate := l_asset_fin_rec_adj.basic_rate;
11091 l_adj_adjusted_rate := l_asset_fin_rec_adj.adjusted_rate;
11092 l_adj_life := l_asset_fin_rec_adj.life_in_months;
11093 l_adj_production_capacity := l_asset_fin_rec_adj.production_capacity;
11094 l_adj_apply_new_method := TRUE;
11095 end if;
11096 elsif (p_use_fin_rec_adj and p_asset_fin_rec_adj.deprn_method_code is not null) then
11097 g_deprn_ch_trx_id := p_trans_rec.transaction_header_id;
11098 end if;
11099
11100 if (p_log_level_rec.statement_level) then
11101 fa_debug_pkg.add(l_calling_fn, 'g_deprn_ch_trx_id', g_deprn_ch_trx_id, p_log_level_rec => p_log_level_rec);
11102 end if;
11103
11104 /* For bug 12739028 ends */
11105
11106 if ((not(p_use_fin_rec_adj)) and
11107 (p_use_new_deprn_rule)) or
11108 (l_is_member_trx_for_group) then
11109 --
11110 -- Process transaction from db but use current rules in the case this transaction
11111 -- happened after current transaction
11112 --
11113 l_tmp_cost := l_asset_fin_rec_adj.cost;
11114 l_tmp_percent_salvage_value := l_asset_fin_rec_adj.percent_salvage_value;
11115 l_tmp_salvage_value := l_asset_fin_rec_adj.salvage_value;
11116 l_tmp_allowed_deprn_limit := l_asset_fin_rec_adj.allowed_deprn_limit;
11117 l_tmp_allowed_deprn_limit_amt := l_asset_fin_rec_adj.allowed_deprn_limit_amount;
11118 l_tmp_production_capacity := l_asset_fin_rec_adj.production_capacity;
11119 l_tmp_fully_rsv_revals_counter := l_asset_fin_rec_adj.fully_rsvd_revals_counter;
11120 l_tmp_reval_amortization_basis := l_asset_fin_rec_adj.reval_amortization_basis;
11121 l_tmp_reval_ceiling := l_asset_fin_rec_adj.reval_ceiling;
11122 l_tmp_unrevalued_cost := l_asset_fin_rec_adj.unrevalued_cost;
11123 l_tmp_eofy_reserve := l_asset_fin_rec_adj.eofy_reserve;
11124
11125 l_asset_fin_rec_adj := p_asset_fin_rec_new;
11126
11127 l_asset_fin_rec_adj.cost := l_tmp_cost;
11128 l_asset_fin_rec_adj.percent_salvage_value := l_tmp_percent_salvage_value;
11129 l_asset_fin_rec_adj.salvage_value := l_tmp_salvage_value;
11130 -- Bug 6863138 Considering deprn_limit as non delta amounts
11131 /* Bug 8356539..commenting the below code. as now we'll pass 'TRUE'
11132 for p_called_from_faxama in call to FA_ASSET_CALC_PVT.calc_deprn_limit_adj_rec_cost*/
11133 /* -- Bug 7283130
11134 if (l_asset_fin_rec_adj.deprn_limit_type = 'AMT' ) then
11135 l_asset_fin_rec_adj.allowed_deprn_limit := Null;
11136 if p_trans_rec.calling_interface <>'FAXASSET' then
11137 l_asset_fin_rec_adj.allowed_deprn_limit_amount :=
11138 l_tmp_allowed_deprn_limit_amt;
11139 end if;
11140 else
11141 l_asset_fin_rec_adj.allowed_deprn_limit := l_tmp_allowed_deprn_limit;
11142 end if;
11143 --Bug 7283130 ends
11144 */
11145 l_asset_fin_rec_adj.production_capacity :=l_tmp_production_capacity;
11146 l_asset_fin_rec_adj.fully_rsvd_revals_counter := l_tmp_fully_rsv_revals_counter;
11147 l_asset_fin_rec_adj.reval_amortization_basis := l_tmp_reval_amortization_basis;
11148 l_asset_fin_rec_adj.reval_ceiling := l_tmp_reval_ceiling;
11149 l_asset_fin_rec_adj.unrevalued_cost := l_tmp_unrevalued_cost;
11150 l_asset_fin_rec_adj.eofy_reserve := l_tmp_eofy_reserve;
11151
11152 if (p_log_level_rec.statement_level) then
11153 fa_debug_pkg.add(l_calling_fn, 'Need to use latest values except amounts',
11154 l_asset_fin_rec_adj.cost, p_log_level_rec => p_log_level_rec);
11155 end if;
11156
11157 if (l_adj_apply_new_method) then
11158 l_asset_fin_rec_adj.deprn_method_code := l_adj_deprn_method;
11159 l_asset_fin_rec_adj.basic_rate := l_adj_basic_rate ;
11160 l_asset_fin_rec_adj.adjusted_rate := l_adj_adjusted_rate;
11161 l_asset_fin_rec_adj.life_in_months := l_adj_life;
11162 l_asset_fin_rec_adj.production_capacity := l_adj_production_capacity;
11163 elsif px_asset_fin_rec.deprn_method_code is not null then
11164 l_asset_fin_rec_adj.deprn_method_code := px_asset_fin_rec.deprn_method_code;
11165 l_asset_fin_rec_adj.basic_rate := px_asset_fin_rec.basic_rate;
11166 l_asset_fin_rec_adj.adjusted_rate := px_asset_fin_rec.adjusted_rate;
11167 l_asset_fin_rec_adj.life_in_months := px_asset_fin_rec.life_in_months;
11168 l_asset_fin_rec_adj.production_capacity := px_asset_fin_rec.production_capacity;
11169 end if;
11170
11171 elsif ((p_use_fin_rec_adj) or
11172 (l_asset_fin_rec_adj.date_placed_in_service is null)) and
11173 ((not (l_adj_found)) or (l_reclass_trx)) then
11174 --
11175 -- Process current transaction
11176 --
11177 l_asset_fin_rec_adj := p_asset_fin_rec_adj;
11178
11179 -- Bug# 7046389
11180 -- Call below module only if calling form application.
11181 -- This will not be executed if called from adjustment API.
11182
11183 --bug 8356539 commenting below if condition
11184
11185 --if (p_trans_rec.calling_interface = 'FAXASSET') then
11186
11187 -- Bug 6863138 Need to get the new value of deprn_limit in
11188 -- in l_asset_fin_rec_adj
11189 if l_asset_fin_rec_adj.deprn_limit_type is not null then
11190
11191 SELECT bk1.deprn_limit_type, nvl(bk1.allowed_deprn_limit_amount,0), nvl(bk1.allowed_deprn_limit,0)
11192 INTO l_tmp_deprn_limit_type, l_tmp_allowed_deprn_limit_amt, l_tmp_allowed_deprn_limit
11193 FROM fa_books bk1
11194 WHERE bk1.asset_id = p_asset_hdr_rec.asset_id
11195 and bk1.book_type_code = p_asset_hdr_rec.book_type_code
11196 and bk1.transaction_header_id_out is null;
11197
11198 -- Bug#7046389
11199 if nvl(l_tmp_deprn_limit_type,'NONE') = l_asset_fin_rec_adj.deprn_limit_type then
11200 l_asset_fin_rec_adj.allowed_deprn_limit_amount :=
11201 nvl(l_asset_fin_rec_adj.allowed_deprn_limit_amount,0) + l_tmp_allowed_deprn_limit_amt;
11202 if l_asset_fin_rec_adj.deprn_limit_type = 'PCT' then
11203 l_asset_fin_rec_adj.allowed_deprn_limit :=
11204 nvl(l_asset_fin_rec_adj.allowed_deprn_limit,0) + l_tmp_allowed_deprn_limit;
11205 /* Bug 8356539..recalculate the deprn limit amount in case the type is 'PCT'
11206 and adjustment is done through API*/
11207 if p_trans_rec.calling_interface <> 'FAXASSET' then
11208 l_asset_fin_rec_adj.allowed_deprn_limit_amount :=
11209 (1-l_asset_fin_rec_adj.allowed_deprn_limit) * (px_asset_fin_rec.cost+l_asset_fin_rec_adj.cost);
11210 end if;
11211 end if;
11212 end if;
11213 end if;
11214 -- end if; /* End if for p_trans_rec.calling_interface = 'FAXASSET' */ --8356539
11215
11216 if (p_log_level_rec.statement_level) then
11217 fa_debug_pkg.add(l_calling_fn, 'This is the transaction user entered',
11218 l_asset_fin_rec_adj.cost, p_log_level_rec => p_log_level_rec);
11219 fa_debug_pkg.add(l_calling_fn, 'After if allowed_deprn_limit_amount',
11220 l_asset_fin_rec_adj.allowed_deprn_limit_amount, p_log_level_rec => p_log_level_rec);
11221 fa_debug_pkg.add(l_calling_fn, 'After if allowed_deprn_limit',
11222 l_asset_fin_rec_adj.allowed_deprn_limit, p_log_level_rec => p_log_level_rec);
11223 end if;
11224
11225 else
11226 /*Added for bug 9756248.. need to recalculate Deprn limit correctly as we use adj rec for same*/
11230 INTO l_tmp_deprn_limit_type, l_tmp_allowed_deprn_limit_amt, l_tmp_allowed_deprn_limit
11227 if l_asset_fin_rec_adj.deprn_limit_type is not null then
11228
11229 SELECT bk1.deprn_limit_type, nvl(bk1.allowed_deprn_limit_amount,0), nvl(bk1.allowed_deprn_limit,0)
11231 FROM fa_books bk1
11232 WHERE bk1.asset_id = p_asset_hdr_rec.asset_id
11233 and bk1.book_type_code = p_asset_hdr_rec.book_type_code
11234 and bk1.transaction_header_id_out is null;
11235
11236 -- Bug#7046389
11237 if nvl(l_tmp_deprn_limit_type,'NONE') = l_asset_fin_rec_adj.deprn_limit_type then
11238 -- bug 13859781
11239 l_asset_fin_rec_adj.allowed_deprn_limit_amount := l_tmp_allowed_deprn_limit_amt;
11240 if l_asset_fin_rec_adj.deprn_limit_type = 'PCT' then
11241 -- bug 13859781
11242 l_asset_fin_rec_adj.allowed_deprn_limit := l_tmp_allowed_deprn_limit;
11243 /* Bug 8356539..recalculate the deprn limit amount in case the type is 'PCT'
11244 and adjustment is done through API*/
11245 if p_trans_rec.calling_interface <> 'FAXASSET' then
11246 l_asset_fin_rec_adj.allowed_deprn_limit_amount :=
11247 (1-l_asset_fin_rec_adj.allowed_deprn_limit) * (px_asset_fin_rec.cost+l_asset_fin_rec_adj.cost);
11248 end if;
11249 end if;
11250 end if;
11251 end if;
11252 -- Process transaction from db. Current transaction has date later than this.
11253 if (p_log_level_rec.statement_level) then
11254 fa_debug_pkg.add(l_calling_fn, 'Delta comes from db', l_asset_fin_rec_adj.cost, p_log_level_rec => p_log_level_rec);
11255 end if;
11256 end if;
11257
11258 --tk_util.DumpFinRec(l_asset_fin_rec_adj, 'GA');
11259
11260 if (instrb(p_trans_rec.transaction_type_code, 'ADDITION') <> 0) and
11261 (px_asset_fin_rec.date_placed_in_service is not null) then
11262 x_asset_fin_rec_new := px_asset_fin_rec;
11263 else
11264 x_asset_fin_rec_new := l_asset_fin_rec_adj;
11265 end if;
11266 -- 7184690 below lines are commented out
11267 -- These lines were introduced by bug#7109525
11268 --if p_trans_rec.transaction_type_code in ('PARTIAL RETIREMENT','FULL RETIREMENT') THEN
11269 -- x_asset_fin_rec_new.cost := 0;
11270 -- l_asset_fin_rec_adj.cost := 0;
11271 --end if;
11272 if (p_log_level_rec.statement_level) then
11273 fa_debug_pkg.add(l_calling_fn, 'x_asset_fin_rec_new.cost', x_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
11274 fa_debug_pkg.add(l_calling_fn, 'p_trans_rec.transaction_type_code', p_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
11275 end if;
11276
11277 --
11278 -- Defaulting Values
11279 --
11280 x_asset_fin_rec_new.prorate_convention_code :=
11281 nvl(l_asset_fin_rec_adj.prorate_convention_code,
11282 nvl(px_asset_fin_rec.prorate_convention_code,
11283 fa_cache_pkg.fazccbd_record.prorate_convention_code));
11284
11285 x_asset_fin_rec_new.depreciate_flag :=
11286 nvl(l_asset_fin_rec_adj.depreciate_flag,
11287 nvl(px_asset_fin_rec.depreciate_flag,
11288 fa_cache_pkg.fazccbd_record.depreciate_flag));
11289
11290 FA_UTIL_PVT.load_char_value
11291 (p_char_old => px_asset_fin_rec.bonus_rule,
11292 p_char_adj => l_asset_fin_rec_adj.bonus_rule,
11293 x_char_new => x_asset_fin_rec_new.bonus_rule, p_log_level_rec => p_log_level_rec);
11294
11295 FA_UTIL_PVT.load_char_value
11296 (p_char_old => px_asset_fin_rec.ceiling_name,
11297 p_char_adj => l_asset_fin_rec_adj.ceiling_name,
11298 x_char_new => x_asset_fin_rec_new.ceiling_name, p_log_level_rec => p_log_level_rec);
11299
11300 -- This is for FLAT RATE EXTENSION deprn basis rule
11301 FA_UTIL_PVT.load_char_value
11302 (p_char_old => px_asset_fin_rec.exclude_fully_rsv_flag,
11303 p_char_adj => l_asset_fin_rec_adj.exclude_fully_rsv_flag,
11304 x_char_new => x_asset_fin_rec_new.exclude_fully_rsv_flag, p_log_level_rec => p_log_level_rec);
11305
11306 x_asset_fin_rec_new.recognize_gain_loss :=
11307 p_asset_fin_rec_new.recognize_gain_loss;
11308
11309 x_asset_fin_rec_new.recapture_reserve_flag :=
11310 p_asset_fin_rec_new.recapture_reserve_flag;
11311
11312 x_asset_fin_rec_new.limit_proceeds_flag :=
11313 p_asset_fin_rec_new.limit_proceeds_flag;
11314
11315 x_asset_fin_rec_new.terminal_gain_loss :=
11316 p_asset_fin_rec_new.terminal_gain_loss;
11317
11318 x_asset_fin_rec_new.exclude_proceeds_from_basis :=
11319 p_asset_fin_rec_new.exclude_proceeds_from_basis;
11320
11321 x_asset_fin_rec_new.retirement_deprn_option :=
11322 p_asset_fin_rec_new.retirement_deprn_option;
11323
11324 x_asset_fin_rec_new.tracking_method :=
11325 p_asset_fin_rec_new.tracking_method;
11326
11327 x_asset_fin_rec_new.allocate_to_fully_rsv_flag :=
11328 p_asset_fin_rec_new.allocate_to_fully_rsv_flag;
11329
11330 x_asset_fin_rec_new.allocate_to_fully_ret_flag :=
11331 p_asset_fin_rec_new.allocate_to_fully_ret_flag;
11332
11333 x_asset_fin_rec_new.excess_allocation_option :=
11334 p_asset_fin_rec_new.excess_allocation_option;
11335
11336 x_asset_fin_rec_new.depreciation_option :=
11337 p_asset_fin_rec_new.depreciation_option;
11338
11339 x_asset_fin_rec_new.member_rollup_flag :=
11343 p_asset_fin_rec_new.reduction_rate;
11340 p_asset_fin_rec_new.member_rollup_flag;
11341 /*bug#16426081*/
11342 x_asset_fin_rec_new.reduction_rate :=
11344
11345 if not FA_ASSET_CALC_PVT.calc_new_amounts(
11346 px_trans_rec => p_trans_rec,
11347 p_asset_hdr_rec => p_asset_hdr_rec,
11348 p_asset_desc_rec => l_asset_desc_rec,
11349 p_asset_type_rec => p_asset_type_rec,
11350 p_asset_cat_rec => l_asset_cat_rec,
11351 p_asset_fin_rec_old => px_asset_fin_rec,
11352 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11353 px_asset_fin_rec_new => x_asset_fin_rec_new,
11354 p_asset_deprn_rec_old => l_asset_deprn_rec,
11355 p_asset_deprn_rec_adj => l_asset_deprn_rec,
11356 px_asset_deprn_rec_new => l_asset_deprn_rec,
11357 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
11358
11359 if (p_log_level_rec.statement_level) then
11360 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11361 'FA_ASSET_CALC_PVT.calc_new_amounts', p_log_level_rec => p_log_level_rec);
11362 end if;
11363
11364 raise calc_failed;
11365 end if;
11366
11367 x_asset_fin_rec_new.eofy_reserve := nvl(l_asset_fin_rec_adj.eofy_reserve, 0) +
11368 nvl(px_asset_fin_rec.eofy_reserve, 0);
11369
11370 if not FA_UTILS_PKG.faxrnd(x_asset_fin_rec_new.eofy_reserve,
11371 p_asset_hdr_rec.book_type_code,
11372 p_asset_hdr_rec.set_of_books_id,
11373 p_log_level_rec => p_log_level_rec) then
11374 raise calc_failed;
11375 end if;
11376
11377 if not FA_ASSET_CALC_PVT.calc_prorate_date
11378 (p_asset_hdr_rec => p_asset_hdr_rec,
11379 p_asset_type_rec => p_asset_type_rec,
11380 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11381 px_asset_fin_rec_new => x_asset_fin_rec_new,
11382 p_period_rec => l_period_rec, p_log_level_rec => p_log_level_rec) then
11383
11384 if (p_log_level_rec.statement_level) then
11385 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11386 'FA_ASSET_CALC_PVT.calc_prorate_date', p_log_level_rec => p_log_level_rec);
11387 end if;
11388
11389 raise calc_failed;
11390 end if;
11391
11392 if not FA_ASSET_CALC_PVT.calc_deprn_info
11393 (p_trans_rec => p_trans_rec,
11394 p_asset_hdr_rec => p_asset_hdr_rec,
11395 p_asset_desc_rec => l_asset_desc_rec,
11396 p_asset_cat_rec => l_asset_cat_rec,
11397 p_asset_type_rec => p_asset_type_rec,
11398 p_asset_fin_rec_old => px_asset_fin_rec,
11399 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11400 px_asset_fin_rec_new => x_asset_fin_rec_new,
11401 p_asset_deprn_rec_adj => l_asset_deprn_rec,
11402 p_asset_deprn_rec_new => l_asset_deprn_rec,
11403 p_period_rec => l_period_rec
11404 , p_log_level_rec => p_log_level_rec) then
11405
11406 if (p_log_level_rec.statement_level) then
11407 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11408 'FA_ASSET_CALC_PVT.calc_deprn_info', p_log_level_rec => p_log_level_rec);
11409 end if;
11410
11411 raise calc_failed;
11412 end if;
11413
11414 if not FA_ASSET_CALC_PVT.calc_deprn_start_date(
11415 p_asset_hdr_rec => p_asset_hdr_rec,
11416 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11417 px_asset_fin_rec_new => x_asset_fin_rec_new, p_log_level_rec => p_log_level_rec) then
11418
11419 if (p_log_level_rec.statement_level) then
11420 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11421 'FA_ASSET_CALC_PVT.calc_deprn_start_date', p_log_level_rec => p_log_level_rec);
11422 end if;
11423
11424 raise calc_failed;
11425 end if;
11426
11427 if not FA_ASSET_CALC_PVT.calc_salvage_value(
11428 p_trans_rec => p_trans_rec,
11429 p_asset_hdr_rec => p_asset_hdr_rec,
11430 p_asset_type_rec => p_asset_type_rec,
11431 p_asset_fin_rec_old => px_asset_fin_rec,
11432 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11433 px_asset_fin_rec_new => x_asset_fin_rec_new,
11434 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
11435
11436 if (p_log_level_rec.statement_level) then
11437 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11438 'FA_ASSET_CALC_PVT.calc_salvage_value', p_log_level_rec => p_log_level_rec);
11439 end if;
11440
11441 raise calc_failed;
11442 end if;
11443
11444 if not FA_ASSET_CALC_PVT.calc_rec_cost
11445 (p_asset_hdr_rec => p_asset_hdr_rec,
11446 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11447 px_asset_fin_rec_new => x_asset_fin_rec_new, p_log_level_rec => p_log_level_rec) then
11448
11449 if (p_log_level_rec.statement_level) then
11450 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11451 'FA_ASSET_CALC_PVT.calc_rec_cost', p_log_level_rec => p_log_level_rec);
11452 end if;
11453
11454 raise calc_failed;
11455 end if;
11456
11457 if not FA_ASSET_CALC_PVT.calc_deprn_limit_adj_rec_cost
11458 (p_asset_hdr_rec => p_asset_hdr_rec,
11459 p_asset_type_rec => p_asset_type_rec,
11460 p_asset_fin_rec_old => px_asset_fin_rec,
11461 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11462 px_asset_fin_rec_new => x_asset_fin_rec_new,
11463 /*bug 9006343 need to pass p_called_from_faxama as FALSE for trx in which extended deprn is availed*/
11464 p_called_from_faxama => (nvl(p_trans_rec.transaction_key,'XX') <> 'ES'),
11465 /* Commented for bug# 7046389 */
11466 --p_called_from_faxama => TRUE,-- 8356539 -- Bug 6604235
11467 --p_called_from_faxama => (p_trans_rec.calling_interface = 'FAXASSET'),-- bug 8356539
11468 p_mrc_sob_type_code => p_mrc_sob_type_code,
11469 p_log_level_rec => p_log_level_rec) then
11470
11471 if (p_log_level_rec.statement_level) then
11472 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11473 'FA_ASSET_CALC_PVT.calc_deprn_limit_adj_rec_cost', p_log_level_rec => p_log_level_rec);
11474 end if;
11475
11476 raise calc_failed;
11477 end if;
11478 --tk_util.debug('adj_rec_cost: '|| to_char(x_asset_fin_rec_new.adjusted_recoverable_cost));
11479
11480
11481 if (fa_cache_pkg.fazcbc_record.book_class = 'TAX' and
11482 x_asset_fin_rec_new.itc_amount_id is not null) then
11483 if not FA_ASSET_CALC_PVT.calc_itc_info
11484 (p_asset_hdr_rec => p_asset_hdr_rec,
11485 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
11486 px_asset_fin_rec_new => x_asset_fin_rec_new, p_log_level_rec => p_log_level_rec) then
11487
11488 if (p_log_level_rec.statement_level) then
11489 fa_debug_pkg.add(l_calling_fn, 'Falied calling',
11490 'FA_ASSET_CALC_PVT.calc_itc_info', p_log_level_rec => p_log_level_rec);
11491 end if;
11492
11493 raise calc_failed;
11494 end if;
11495
11496 end if;
11497
11498 x_dpis_change := (px_asset_fin_rec.date_placed_in_service <> l_asset_fin_rec_adj.date_placed_in_service);
11499
11500 --tk_util.DumpFinRec(x_asset_fin_rec_new, 'GN');
11501
11502 if (p_log_level_rec.statement_level) then
11503 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
11504 end if;
11505
11506 return TRUE;
11507 EXCEPTION
11508 WHEN calc_failed THEN
11509 if (p_log_level_rec.statement_level) then
11510 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'calc_failed', p_log_level_rec => p_log_level_rec);
11511 end if;
11512
11513 if c_get_init_mcbk%ISOPEN then
11514 CLOSE c_get_init_mcbk;
11515 end if;
11516
11517 if c_get_init_bk%ISOPEN then
11518 CLOSE c_get_init_bk;
11519 end if;
11520
11521 if c_get_mcbk%ISOPEN then
11522 CLOSE c_get_mcbk;
11523 end if;
11524
11525 if c_get_bk%ISOPEN then
11526 CLOSE c_get_bk;
11527 end if;
11528
11529 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
11530 return false;
11531
11532 WHEN OTHERS THEN
11533 if (p_log_level_rec.statement_level) then
11534 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
11535 end if;
11536
11537 if c_get_init_mcbk%ISOPEN then
11538 CLOSE c_get_init_mcbk;
11539 end if;
11540
11541 if c_get_init_bk%ISOPEN then
11542 CLOSE c_get_init_bk;
11543 end if;
11544
11545 if c_get_mcbk%ISOPEN then
11546 CLOSE c_get_mcbk;
11547 end if;
11548
11549 if c_get_bk%ISOPEN then
11550 CLOSE c_get_bk;
11551 end if;
11552
11553 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
11554 return false;
11555
11556 END GetFinRec;
11557
11558 --+==============================================================================
11559 -- Function: Recalculate
11560 --
11561 -- This function calculate catch-up amounts due to backdated
11562 -- amortization transactions.
11563
11564 -- 1: Find transaction to start recalculation.
11565 -- 2: Get initial asset_fin_rec, and asset_deprn_rec. Values in these rec will
11566 -- be chagned as recalculation proceeds.
11567 -- 3: Process all transaction dated after transaction found at first step.
11568 -- xxx All trx except Revaluation, Tax Reserve Adjustment, Reinstatement,
11569 -- Unit Adjustment, Transfer, and Reclass.
11570 -- 3.1: Fetch one transaction
11571 -- 3.2: Call faxcde to get reserve for adjusted_cost, raf and formula_factor
11572 -- 3.3: Call Deprn Basis function to get new adjusted_cost, raf and formula_factor.
11573 -- 3.4: If there is no transaction in this period, call faxcde until next trx
11574 -- to process (If there is no next trx, depreciate until current period).
11575 -- NOTE: Retirement which has been reinstated will not be processed at all.
11576 -- 4: Return catch-up amount.
11577 --+==============================================================================
11578 FUNCTION Recalculate(
11579 p_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
11580 p_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type,
11581 p_asset_type_rec FA_API_TYPES.asset_type_rec_type,
11582 p_asset_desc_rec FA_API_TYPES.asset_desc_rec_type,
11583 p_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type,
11584 p_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type default null,
11585 p_period_rec FA_API_TYPES.period_rec_type,
11586 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
11587 p_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type,
11588 p_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type default null,
11589 x_deprn_expense OUT NOCOPY FA_DEPRN_SUMMARY.DEPRN_AMOUNT%TYPE,
11590 x_bonus_expense OUT NOCOPY FA_DEPRN_SUMMARY.BONUS_DEPRN_AMOUNT%TYPE,
11591 x_impairment_expense OUT NOCOPY FA_DEPRN_SUMMARY.IMPAIRMENT_AMOUNT%TYPE,
11592 p_running_mode IN NUMBER,
11593 p_used_by_revaluation IN NUMBER,
11594 p_reclassed_asset_id NUMBER,
11595 p_reclass_src_dest VARCHAR2,
11596 p_reclassed_asset_dpis DATE,
11597 p_source_transaction_type_code VARCHAR2,
11598 p_mrc_sob_type_code VARCHAR2,
11599 p_calling_fn VARCHAR2
11600 ,p_log_level_rec IN fa_api_types.log_level_rec_type default null
11601 ) RETURN BOOLEAN IS
11602
11603 l_calling_fn VARCHAR2(100) := 'FA_AMORT_CALC_PVT.Recalculate';
11604
11605 --Bug3696765
11606 l_process_addition BINARY_INTEGER := 1; -- 1: process (amort nbv) addition,
11607 -- 0: do not process (amort nbv) addition
11608
11609 l_depreciate_flag VARCHAR2(3); -- Bug 5726160
11610 l_entered_reserve NUMBER; -- Bug 5443855
11611 l_entered_ytd NUMBER;
11612
11613 -- Bug 8674466 :
11614 l_ret_prorate_pc NUMBER;
11615 l_future_ret_count NUMBER;
11616
11617 -- bug 12344343 fetched fiscal year also
11618 CURSOR c_get_deprn_period_date IS
11619 select dp.calendar_period_open_date
11620 ,dp.fiscal_year
11621 ,ds.ytd_deprn
11622 ,ds.deprn_reserve
11623 from fa_deprn_summary ds
11624 , fa_deprn_periods dp
11625 where dp.book_type_code = p_asset_hdr_rec.book_type_code
11626 and ds.book_type_code = p_asset_hdr_rec.book_type_code
11627 and ds.asset_id = p_asset_hdr_rec.asset_id
11628 and ds.deprn_source_code = 'BOOKS'
11629 and dp.period_counter = ds.period_counter + 1;
11630
11631 -- Bug 15933180
11632 -- this cursor will fetch the fiscal year
11633 -- for the prorate date.
11634 CURSOR c_get_dpis_period IS
11635 select fy.fiscal_year
11636 from fa_calendar_periods cp,
11637 fa_book_controls bc,
11638 fa_fiscal_year fy,
11639 fa_calendar_types ct,
11640 fa_books bk
11641 WHERE bk.book_type_code = p_asset_hdr_rec.book_type_code
11642 and bk.asset_id = p_asset_hdr_rec.asset_id
11643 and bk.transaction_header_id_out is null
11644 and bc.book_type_code = p_asset_hdr_rec.book_type_code
11645 and bc.deprn_calendar = ct.calendar_type
11646 and bc.fiscal_year_name = fy.fiscal_year_name
11647 and ct.fiscal_year_name = bc.fiscal_year_name
11648 and ct.calendar_type = cp.calendar_type
11649 and cp.start_date between fy.start_date and fy.end_date
11650 and bk.prorate_date between cp.start_date and cp.end_date;
11651
11652 -- Bug 8686315 : Added trx_type_code also
11653 CURSOR c_get_first_trx IS
11654 select th.transaction_header_id
11655 , nvl(th.amortization_start_date, th.transaction_date_entered)
11656 , th.date_effective
11657 , th.transaction_type_code
11658 from fa_transaction_headers th
11659 where th.asset_id = p_asset_hdr_rec.asset_id
11660 and th.book_type_code = p_asset_hdr_rec.book_type_code
11661 and th.transaction_header_id = (select min(th2.transaction_header_id)
11662 from fa_transaction_headers th2
11663 where th2.asset_id = p_asset_hdr_rec.asset_id
11664 and th2.book_type_code = p_asset_hdr_rec.book_type_code);
11665
11666 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11667 -- This is the cursor to find a transaction which has older
11668 -- transaction_date_entered but newer calendar_period_close_open_date
11669 -- than given transaction_date_entered.
11670 -- 1st select returns transaction like mention above.
11671 --
11672 -- 2nd select returns reinstatement transactioin for core asset as
11673 -- dated transaction back to retirement date so if given
11674 -- transaction_date_entered is between retirement and reinstatement,
11675 -- this program makes sure to start recalculate at least before
11676 -- the retirement.
11677 --
11678 -- 3rd select returns reinstatement transactioin of member for group
11679 -- as dated transaction back to retirement date so if given
11680 -- transaction_date_entered is between retirement and reinstatement,
11681 -- this program makes sure to start recalculate at least before
11682 -- the retirement.
11683 --
11684 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11685 -- Bug3797105: 1st part of following cursor was returning trx which
11686 -- has performed in the same period as the period that passed date
11687 -- falls in.
11688 -- Bug5332733: The second column in the select clause was returning null
11689 -- so, added else part to the decode clause.
11690
11691 CURSOR c_check_overlap (c_transaction_date_entered date,
11692 c_transaction_header_id number,
11693 c_date_effective date) IS
11694 select th.transaction_header_id transaction_header_id,
11695 decode(l_process_addition,
11696 1, decode( th.transaction_subtype,
11697 'EXPENSED', px_asset_fin_rec_new.date_placed_in_service,
11698 decode(th.transaction_type_code,
11699 'ADDITION', th.transaction_date_entered,
11700 'ADDITION/VOID', th.transaction_date_entered,
11701 nvl(th.amortization_start_date,th.transaction_date_entered)),
11702 nvl(th.amortization_start_date,th.transaction_date_entered),
11703 nvl(th.amortization_start_date,th.transaction_date_entered)
11704 ),
11708 th.transaction_type_code transaction_type_code
11705 nvl(th.amortization_start_date,th.transaction_date_entered)
11706 ) transaction_date_entered,
11707 th.date_effective date_effective,
11709 from fa_transaction_headers th
11710 , fa_deprn_periods dp
11711 where th.asset_id = p_asset_hdr_rec.asset_id
11712 and th.book_type_code = p_asset_hdr_rec.book_type_code
11713 and dp.book_type_code = p_asset_hdr_rec.book_type_code
11714 -- and th.date_effective between dp.period_open_date
11715 -- and nvl(dp.period_close_date, sysdate)
11716 and c_transaction_date_entered between dp.calendar_period_open_date
11717 and dp.calendar_period_close_date
11718 -- and (th.date_effective > nvl(dp.period_close_date, sysdate))
11719 -- Bug 6612507
11720 and ((th.date_effective > nvl(dp.period_close_date, sysdate)) or
11721 ((th.date_effective between dp.period_open_date and nvl(dp.period_close_date, sysdate)) and
11722 (nvl(th.transaction_subtype,'EXPENSED') ='AMORTIZED')))
11723 and ( nvl(th.amortization_start_date,
11724 decode(th.transaction_subtype,
11725 'EXPENSED', px_asset_fin_rec_new.date_placed_in_service,
11726 th.transaction_date_entered
11727 )
11728 ) <= c_transaction_date_entered
11729 and th.date_effective < c_date_effective)
11730 and c_transaction_date_entered <= dp.calendar_period_close_date
11731 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
11732 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
11733 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
11734 G_TRX_TYPE_TFR_VOID)
11735 union all
11736 select ret.transaction_header_id transaction_header_id,
11737 ret.transaction_date_entered transaction_date_entered,
11738 ret.date_effective date_effective,
11739 ret.transaction_type_code transaction_type_code
11740 from fa_transaction_headers ret,
11741 fa_transaction_headers rei,
11742 fa_retirements faret
11743 where ret.asset_id = p_asset_hdr_rec.asset_id
11744 and rei.asset_id = p_asset_hdr_rec.asset_id
11745 and ret.book_type_code = p_asset_hdr_rec.book_type_code
11746 and rei.book_type_code = p_asset_hdr_rec.book_type_code
11747 and ret.transaction_header_id = faret.transaction_header_id_in
11748 and rei.transaction_header_id = faret.transaction_header_id_out
11749 and c_transaction_date_entered between
11750 ret.transaction_date_entered and rei.transaction_date_entered
11751 and ret.date_effective < c_date_effective
11752 and ret.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)
11753 and rei.transaction_type_code = G_TRX_TYPE_REI
11754 and ret.transaction_header_id <> c_transaction_header_id
11755 order by transaction_header_id;
11756
11757 CURSOR c_check_overlap2 is
11758 select th.transaction_header_id transaction_header_id,
11759 decode(th.transaction_subtype,
11760 'EXPENSED', px_asset_fin_rec_new.date_placed_in_service,
11761 nvl(th.amortization_start_date,th.transaction_date_entered)
11762 ) transaction_date_entered,
11763 th.date_effective date_effective,
11764 th.transaction_type_code transaction_type_code
11765 from fa_transaction_headers th
11766 where th.asset_id = p_asset_hdr_rec.asset_id
11767 and th.book_type_code = p_asset_hdr_rec.book_type_code
11768 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
11769 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
11770 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
11771 G_TRX_TYPE_TFR_VOID, G_TRX_TYPE_ADD_VOID,
11772 G_TRX_TYPE_ADD)
11773 and decode(th.transaction_subtype, null, px_asset_fin_rec_new.date_placed_in_service,
11774 th.amortization_start_date) <
11775 nvl(p_trans_rec.amortization_start_date, p_trans_rec.transaction_date_entered);
11776
11777 --toru
11778 l_incoming_thid number(15);
11779
11780 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11781 -- This cursor gets all transaction needs to be reprocessed in
11782 -- order of transaction_date_entered.
11783 -- 1st select gets all (group) asset transactions except followings
11784 -- 1. Transaction Type Code of TRANSFER OUT(IN), TRANSFER, TRANSFER IN/VOID,
11785 -- RECLASS, UNIT ADJUSTMENT, and REINSTATEMENT.
11786 -- 2. Transaction of group if there is a member transaction associated with
11787 -- this transaction and the member is not currently this group's member
11788 -- 3. Transaction of group reclass
11789 -- 2nd select gets all member transactions which has no group associated
11790 -- group transaction or there is a group transaction associated to the transaction
11791 -- but the group is not the same as current group asset.
11792 -- 3rd select returns current transaction. This doesn't return anything
11793 -- if it is not member of this processed group asset or transaction type
11794 -- code is one of mentioned above.
11795 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11796 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11797 -- This is basically the same as c_get_ths_gadj but non-group asset
11798 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11799 CURSOR c_get_ths_adj (c_transaction_date_entered date,
11800 c_date_effective date,
11804 th.transaction_type_code transaction_type_code,
11801 c_transaction_header_id number,
11802 c_retirement_flag varchar2) IS
11803 select th.transaction_header_id transaction_header_id,
11805 decode(l_process_addition,
11806 1, decode(th.transaction_type_code,
11807 'ADDITION', th.transaction_date_entered,
11808 'ADDITION/VOID', th.transaction_date_entered,
11809 decode(th.transaction_key, 'IM', to_date('01-'||to_char(add_months(th.amortization_start_date, 1), 'MM-YYYY'), 'DD-MM-YYYY'),
11810 /* Japan Tax phase3 */ 'ES', (select calendar_period_open_date
11811 from fa_deprn_periods
11812 where book_type_code = p_asset_hdr_rec.book_type_code
11813 and period_counter = bk.extended_depreciation_period),
11814 nvl(th.amortization_start_date,
11815 decode(th.transaction_subtype,
11816 'EXPENSED', decode(outbk.depreciate_flag,
11817 'NO', decode(bk.depreciate_flag,
11818 'YES', decode(ds.deprn_reserve,
11819 0, bk.date_placed_in_service,
11820 th.transaction_date_entered),
11821 --Bug6190904: Replacing a line above with this could be an option. bk.date_placed_in_service),
11822 -- Bug#4699743 th.transaction_date_entered),
11823 bk.date_placed_in_service),
11824 -- Bug# 4049799 bk.date_placed_in_service),
11825 px_asset_fin_rec_new.date_placed_in_service),
11826 th.transaction_date_entered)))),
11827 decode(th.transaction_key, 'IM', to_date('01-'||to_char(add_months(th.amortization_start_date, 1), 'MM-YYYY'), 'DD-MM-YYYY'),
11828 /* Japan Tax phase3 */ 'ES', (select calendar_period_open_date
11829 from fa_deprn_periods
11830 where book_type_code = p_asset_hdr_rec.book_type_code
11831 and period_counter = bk.extended_depreciation_period),
11832 nvl(th.amortization_start_date,
11833 decode(th.transaction_subtype,
11834 'EXPENSED', decode(outbk.depreciate_flag,
11835 'NO', decode(bk.depreciate_flag,
11836 'YES', decode(ds.deprn_reserve,
11837 0, bk.date_placed_in_service,
11838 th.transaction_date_entered),
11839 th.transaction_date_entered),
11840 -- Bug# 4049799 bk.date_placed_in_service),
11841 px_asset_fin_rec_new.date_placed_in_service),
11842 th.transaction_date_entered)))) transaction_date_entered,
11843 th.date_effective date_effective,
11844 th.transaction_name transaction_name,
11845 th.source_transaction_header_id source_transaction_header_id,
11846 th.mass_reference_id mass_reference_id,
11847 th.transaction_subtype transaction_subtype,
11848 th.transaction_key transaction_key,
11849 th.amortization_start_date amortization_start_date,
11850 th.calling_interface calling_interface,
11851 th.mass_transaction_id mass_transaction_id,
11852 fa_std_types.FA_NO_OVERRIDE deprn_override_flag,
11853 th.member_transaction_header_id member_transaction_header_id,
11854 th.trx_reference_id trx_reference_id,
11855 th.invoice_transaction_id,
11856 '1st SELECT in c_get_ths_adj'
11857 from fa_transaction_headers th,
11858 fa_books bk
11859 , fa_books outbk
11860 , fa_deprn_summary ds
11861 where th.asset_id = p_asset_hdr_rec.asset_id
11862 and th.book_type_code = p_asset_hdr_rec.book_type_code
11863 and bk.asset_id = p_asset_hdr_rec.asset_id
11864 and bk.book_type_code = p_asset_hdr_rec.book_type_code
11865 and bk.transaction_header_id_in = th.transaction_header_id
11866 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
11867 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
11868 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
11869 G_TRX_TYPE_TFR_VOID, G_TRX_TYPE_REI,
11870 G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET,
11871 --
11872 --Bug6933891: Fix for bug5074327 included addition void trx as trx NOT to be processed
11873 -- However void trx needs to come in as the subsequent trx in the period of addition
11874 -- may not share the same trx date. As a result, we need to process the some void trx
11878 G_TRX_TYPE_CIP_ADJ, -- Bug# 5074327, 5191200
11875 -- Whether to process the void trx will be determined in the main loop. Not here.
11876 -- Leave CIP ADDITION Void trx for now but it may be removed from this not in condition
11877 -- as well later.
11879 G_TRX_TYPE_CIP_ADD_VOID, G_TRX_TYPE_CIP_ADD) -- Bug: 6019450, 6798953
11880 and (th.transaction_header_id >= c_transaction_header_id
11881 or th.transaction_header_id < c_transaction_header_id
11882 and th.date_effective <= c_date_effective --Bug6617982
11883 -- and th.transaction_date_entered > c_transaction_date_entered)
11884 and decode(th.transaction_subtype, NULL,
11885 decode(th.transaction_type_code,
11886 'ADDITION/VOID', px_asset_fin_rec_new.date_placed_in_service,
11887 'CIP ADDITION/VOID', px_asset_fin_rec_new.date_placed_in_service,
11888 th.transaction_date_entered),
11889 th.transaction_date_entered) > c_transaction_date_entered)
11890 and th.transaction_header_id <> l_incoming_thid
11891 and not exists (select 'Exclude reclass trx'
11892 from fa_trx_references tr
11893 where tr.member_asset_id = th.asset_id
11894 and tr.member_transaction_header_id = th.transaction_header_id
11895 and tr.book_type_code = p_asset_hdr_rec.book_type_code
11896 and tr.transaction_type = G_TRX_TYPE_GRP_CHG)
11897 /*Bug# 8946649 - No need to pick rolled back impairment and transaction got created to reverse impairment*/
11898 and bk.transaction_header_id_out not in (select transaction_header_id
11899 from fa_transaction_headers th2
11900 where th2.asset_id = th.asset_id
11901 and th2.book_type_code = p_asset_hdr_rec.book_type_code
11902 and th2.transaction_key = 'RM')
11903 and nvl(th.transaction_key,'XX') <> 'RM' /*Bug#9355389 - placed nvl around key */
11904 and ds.asset_id(+) = p_asset_hdr_rec.asset_id
11905 and ds.book_type_code(+) = p_asset_hdr_rec.book_type_code
11906 and ds.deprn_source_code(+) = 'BOOKS'
11907 and outbk.asset_id(+) = p_asset_hdr_rec.asset_id
11908 and outbk.book_type_code(+) = p_asset_hdr_rec.book_type_code
11909 and outbk.transaction_header_id_out(+) = bk.transaction_header_id_in
11910 and bk.depreciate_flag = outbk.depreciate_flag(+) /* Bug 7199183 add this condition*//*Bug 7653832 Added folloing*/
11911 and decode(th.transaction_type_code, 'ADDITION/VOID',th.transaction_date_entered,
11912 'CIP ADDITION/VOID',th.transaction_date_entered,
11913 px_asset_fin_rec_new.date_placed_in_service) <= px_asset_fin_rec_new.date_placed_in_service
11914 --
11915 -- Bug3421263: Added following select to takes care retirement
11916 -- prorate date as retirement trx date.
11917 --
11918 union all
11919 select th.transaction_header_id transaction_header_id,
11920 th.transaction_type_code transaction_type_code,
11921 decode(p_asset_fin_rec_old.group_asset_id, null,
11922 decode(sign(con.prorate_date - cptrx.start_date),
11923 1, decode(sign(con.prorate_date - cptrx.end_date),
11924 -1, ret.date_retired,
11925 0, ret.date_retired,
11926 con.prorate_date),
11927 0, decode(sign(con.prorate_date - cptrx.end_date),
11928 -1, ret.date_retired,
11929 0, ret.date_retired,
11930 con.prorate_date),
11931 con.prorate_date)
11932 , ret.date_retired
11933 ) transaction_date_entered,
11934 th.date_effective date_effective,
11935 th.transaction_name transaction_name,
11936 th.source_transaction_header_id source_transaction_header_id,
11937 th.mass_reference_id mass_reference_id,
11938 th.transaction_subtype transaction_subtype,
11939 th.transaction_key transaction_key,
11940 th.amortization_start_date amortization_start_date,
11941 th.calling_interface calling_interface,
11942 th.mass_transaction_id mass_transaction_id,
11943 fa_std_types.FA_NO_OVERRIDE deprn_override_flag,
11944 th.member_transaction_header_id member_transaction_header_id,
11945 th.trx_reference_id trx_reference_id,
11946 th.invoice_transaction_id,
11947 '2nd SELECT in c_get_ths_adj'
11948 from fa_transaction_headers th,
11949 fa_retirements ret,
11950 fa_conventions con,
11951 fa_calendar_periods cp,
11952 fa_calendar_periods cptrx
11953 where th.asset_id = p_asset_hdr_rec.asset_id
11954 and th.book_type_code = p_asset_hdr_rec.book_type_code
11955 and ret.asset_id = p_asset_hdr_rec.asset_id
11956 and ret.book_type_code = p_asset_hdr_rec.book_type_code
11957 and (ret.transaction_header_id_out is null or -- Bug # 7307047
11958 ret.transaction_header_id_out = l_incoming_thid)
11959 and ret.RETIREMENT_PRORATE_CONVENTION = con.PRORATE_CONVENTION_CODE
11960 and ret.date_retired between con.start_date and con.end_date
11961 and cp.calendar_type = fa_cache_pkg.fazcbc_record.prorate_calendar
11962 and con.prorate_date between cp.start_date and cp.end_date
11963 and th.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)
11964 -- and th.transaction_header_id >= c_transaction_header_id
11968 and th.transaction_header_id = ret.transaction_header_id_in
11965 and th.transaction_header_id <> l_incoming_thid
11966 and cptrx.calendar_type = fa_cache_pkg.fazcbc_record.deprn_calendar
11967 and ret.date_retired between cptrx.start_date and cptrx.end_date
11969 --bug4363712
11970 -- and con.prorate_date >= c_transaction_date_entered
11971 --bug fix 4547599
11972 and ( (con.prorate_date > c_transaction_date_entered)
11973 or
11974 -- Bug 4622110: Modified to handle ret trx date is later than its prorate date.
11975 -- Bug 6740618: changed the decode
11976 -- Bug 6885405: changed the decode
11977 -- Bug 11840704 : Reverted the fix for 6885405
11978 (decode(c_retirement_flag, 'Y', con.prorate_date, th.transaction_date_entered) <= c_transaction_date_entered and
11979 th.date_effective >= c_date_effective)
11980 )
11981 --
11982 --
11983 union all select
11984 l_incoming_thid transaction_header_id,
11985 p_trans_rec.transaction_type_code transaction_type_code,
11986 nvl(p_trans_rec.amortization_start_date,
11987 p_trans_rec.transaction_date_entered) transaction_date_entered,
11988 p_trans_rec.who_info.creation_date date_effective,
11989 p_trans_rec.transaction_name transaction_name,
11990 p_trans_rec.source_transaction_header_id source_transaction_header_id,
11991 p_trans_rec.mass_reference_id mass_reference_id,
11992 p_trans_rec.transaction_subtype transaction_subtype,
11993 p_trans_rec.transaction_key transaction_key,
11994 p_trans_rec.amortization_start_date amortization_start_date,
11995 p_trans_rec.calling_interface calling_interface,
11996 p_trans_rec.mass_transaction_id mass_transaction_id,
11997 p_trans_rec.deprn_override_flag deprn_override_flag,
11998 p_trans_rec.member_transaction_header_id member_transaction_header_id,
11999 p_trans_rec.trx_reference_id trx_reference_id,
12000 to_number(null), -- invoice_transaction_id
12001 '3rd SELECT in c_get_ths_adj'
12002 from fa_books bk
12003 where bk.asset_id = p_asset_hdr_rec.asset_id
12004 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12005 and bk.transaction_header_id_out is null
12006 and p_trans_rec.transaction_type_code
12007 not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
12008 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
12009 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
12010 G_TRX_TYPE_TFR_VOID, G_TRX_TYPE_REI)
12011 order by transaction_date_entered, 4,1; -- 4 is date_effective 13372045 - added 1 -- trx_header_id
12012
12013
12014 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12015 -- This cursor fetchs next transaction information.
12016 -- Since main cursor to get transactions only fetchs 100 records at once,
12017 -- this is necessary to fetch 101th record if tehre is any.
12018 -- This is similar to main cursor. Second union fetchs entered transaction
12019 -- which has not yet sotred in db.
12020 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12021 CURSOR c_get_next_ths (c_transaction_date_entered date,
12022 c_date_effective date) IS
12023 select th.transaction_date_entered transaction_date_entered,
12024 th.date_effective date_effective
12025 from fa_transaction_headers th
12026 where th.asset_id = p_asset_hdr_rec.asset_id
12027 and th.book_type_code = p_asset_hdr_rec.book_type_code
12028 and th.transaction_date_entered >= c_transaction_date_entered
12029 and th.date_effective > c_date_effective
12030 and (p_asset_type_rec.asset_type <> G_ASSET_TYPE_GROUP or
12031 not exists (select 'Y'
12032 from fa_transaction_headers mth,
12033 fa_books bk
12034 where mth.transaction_header_id = th.member_transaction_header_id
12035 and mth.book_type_code = p_asset_hdr_rec.book_type_code
12036 and bk.asset_id = mth.asset_id
12037 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12038 and bk.transaction_header_id_out is null
12039 and ((bk.asset_id <> nvl(p_reclassed_asset_id, 0) and
12040 bk.group_asset_id is null) or
12041 bk.group_asset_id <> p_asset_hdr_rec.asset_id)
12042 )
12043 )
12044 union all select
12045 p_trans_rec.transaction_date_entered transaction_date_entered,
12046 p_trans_rec.who_info.creation_date date_effective
12047 from dual
12048 where p_reclass_src_dest is null
12049 and p_trans_rec.transaction_date_entered >= c_transaction_date_entered
12050 and p_trans_rec.who_info.creation_date = c_date_effective
12051 and (p_asset_type_rec.asset_type <> G_ASSET_TYPE_GROUP or
12052 not exists (select 'Y'
12053 from fa_transaction_headers mth,
12054 fa_books bk
12055 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
12056 and mth.book_type_code = p_asset_hdr_rec.book_type_code
12057 and bk.asset_id = mth.asset_id
12058 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12059 and bk.transaction_header_id_out is null
12060 and ((bk.asset_id <> nvl(p_reclassed_asset_id, 0) and
12061 bk.group_asset_id is null) or
12062 bk.group_asset_id <> p_asset_hdr_rec.asset_id)
12063 )
12064 )
12068 -- This cursor gets retirement information for given transaction_header_id
12065 order by transaction_date_entered, date_effective;
12066
12067 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12069 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12070 CURSOR c_get_retirement (c_transaction_header_id number) IS
12071 select retirement_id,
12072 cost_retired,
12073 cost_of_removal,
12074 proceeds_of_sale,
12075 nvl(reserve_retired, 0),
12076 nvl(eofy_reserve, 0),
12077 reval_reserve_retired,
12078 unrevalued_cost_retired,
12079 bonus_reserve_retired,
12080 impair_reserve_retired,
12081 null -- recognize_gain_loss
12082 from fa_retirements
12083 where transaction_header_id_in = c_transaction_header_id
12084 and transaction_header_id_out is null ;
12085 -- 7130809 pulled out the below code line as this is creating
12086 -- regression for adjusted cost in fa_books. This line was
12087 -- added for the Bug# 6341966
12088 /*or transaction_header_id_out = p_trans_rec.transaction_header_id; */
12089 -- Bug#6341966,Added condition to pick the reinstated retirement on asset.
12090
12091 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12092 -- For MRC
12093 -- This cursor gets retirement information for given transaction_header_id
12094 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12095 CURSOR c_get_mc_retirement (c_transaction_header_id number) IS
12096 select retirement_id,
12097 cost_retired,
12098 cost_of_removal,
12099 proceeds_of_sale,
12100 nvl(reserve_retired, 0),
12101 nvl(eofy_reserve, 0),
12102 reval_reserve_retired,
12103 unrevalued_cost_retired,
12104 bonus_reserve_retired,
12105 impair_reserve_retired,
12106 null -- recognize_gain_loss
12107 from fa_mc_retirements
12108 where transaction_header_id_in = c_transaction_header_id
12109 and transaction_header_id_out is null
12110 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12111
12112 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12113 -- gets reserve retired amounts if FA_RETIREMENTS doesn't store it
12114 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12115 CURSOR c_get_rsv_retired (c_transaction_header_id number) IS
12116 select sum(decode(debit_credit_flag, 'CR', -1 * adjustment_amount,
12117 adjustment_amount))
12118 from fa_adjustments
12119 where source_type_code = 'RETIREMENT'
12120 and adjustment_type = 'RESERVE'
12121 and asset_id = p_asset_hdr_rec.asset_id
12122 and book_type_code = p_asset_hdr_rec.book_type_code
12123 and transaction_header_id = c_transaction_header_id;
12124
12125 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12126 -- For MRC
12127 -- gets reserve retired amounts if FA_RETIREMENTS doesn't store it
12128 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12129 CURSOR c_get_mc_rsv_retired (c_transaction_header_id number) IS
12130 select sum(decode(debit_credit_flag, 'CR', -1 * adjustment_amount,
12131 adjustment_amount))
12132 from fa_mc_adjustments
12133 where source_type_code = 'RETIREMENT'
12134 and adjustment_type = 'RESERVE'
12135 and asset_id = p_asset_hdr_rec.asset_id
12136 and book_type_code = p_asset_hdr_rec.book_type_code
12137 and transaction_header_id = c_transaction_header_id
12138 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12139
12140 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12141 -- gets reval reserve amount
12142 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12143 CURSOR c_get_reval_rsv (c_transaction_header_id number) IS
12144 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12145 adjustment_amount))
12146 from fa_adjustments
12147 where source_type_code = 'REVALUATION'
12148 and adjustment_type = 'RESERVE'
12149 and asset_id = p_asset_hdr_rec.asset_id
12150 and book_type_code = p_asset_hdr_rec.book_type_code
12151 and transaction_header_id = c_transaction_header_id;
12152
12153 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12154 -- For MRC: gets reval reserve amount
12155 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12156 CURSOR c_get_mc_reval_rsv (c_transaction_header_id number) IS
12157 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12158 adjustment_amount))
12159 from fa_mc_adjustments
12160 where source_type_code = 'REVALUATION'
12161 and adjustment_type = 'RESERVE'
12162 and asset_id = p_asset_hdr_rec.asset_id
12163 and book_type_code = p_asset_hdr_rec.book_type_code
12164 and transaction_header_id = c_transaction_header_id
12165 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12166
12167 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12168 -- gets reval reserve amount
12169 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12170 CURSOR c_get_bonus_reval_rsv (c_transaction_header_id number) IS
12171 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12172 adjustment_amount))
12173 from fa_adjustments
12174 where source_type_code = 'REVALUATION'
12175 and adjustment_type = 'BONUS RESERVE'
12176 and asset_id = p_asset_hdr_rec.asset_id
12180 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12177 and book_type_code = p_asset_hdr_rec.book_type_code
12178 and transaction_header_id = c_transaction_header_id;
12179
12181 -- For MRC: gets reval reserve amount
12182 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12183 CURSOR c_get_mc_bonus_reval_rsv (c_transaction_header_id number) IS
12184 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12185 adjustment_amount))
12186 from fa_mc_adjustments
12187 where source_type_code = 'REVALUATION'
12188 and adjustment_type = 'BONUS RESERVE'
12189 and asset_id = p_asset_hdr_rec.asset_id
12190 and book_type_code = p_asset_hdr_rec.book_type_code
12191 and transaction_header_id = c_transaction_header_id
12192 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12193 /*
12194 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12195 -- gets reval reserve amount
12196 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12197 CURSOR c_get_impair_reval_rsv (c_transaction_header_id number) IS
12198 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12199 adjustment_amount))
12200 from fa_adjustments
12201 where source_type_code = 'REVALUATION'
12202 and adjustment_type = 'IMPAIR RESERVE'
12203 and asset_id = p_asset_hdr_rec.asset_id
12204 and book_type_code = p_asset_hdr_rec.book_type_code
12205 and transaction_header_id = c_transaction_header_id;
12206
12207 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12208 -- For MRC: gets reval reserve amount
12209 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12210 CURSOR c_get_mc_impair_reval_rsv (c_transaction_header_id number) IS
12211 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12212 adjustment_amount))
12213 from fa_mc_adjustments
12214 where source_type_code = 'REVALUATION'
12215 and adjustment_type = 'IMPAIR RESERVE'
12216 and asset_id = p_asset_hdr_rec.asset_id
12217 and book_type_code = p_asset_hdr_rec.book_type_code
12218 and transaction_header_id = c_transaction_header_id
12219 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12220 */
12221 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12222 -- gets (reval) impairment reserve amount
12223 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12224 CURSOR c_get_impair_rsv (c_transaction_header_id number,
12225 c_source_type_code varchar2) IS
12226 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12227 adjustment_amount))
12228 from fa_adjustments
12229 where source_type_code = c_source_type_code
12230 and adjustment_type = 'IMPAIR RESERVE'
12231 and asset_id = p_asset_hdr_rec.asset_id
12232 and book_type_code = p_asset_hdr_rec.book_type_code
12233 and transaction_header_id = c_transaction_header_id;
12234
12235 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12236 -- For MRC: gets (reval) impairment reserve amount
12237 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12238 CURSOR c_get_mc_impair_rsv (c_transaction_header_id number,
12239 c_source_type_code varchar2) IS
12240 select sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12241 adjustment_amount))
12242 from fa_mc_adjustments
12243 where source_type_code = c_source_type_code
12244 and adjustment_type = 'IMPAIR RESERVE'
12245 and asset_id = p_asset_hdr_rec.asset_id
12246 and book_type_code = p_asset_hdr_rec.book_type_code
12247 and transaction_header_id = c_transaction_header_id
12248 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12249 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12250 /*Bug# 8520733 - gets (adjustment) impairment expense amount */
12251 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12252 CURSOR c_get_impair_exp (c_transaction_header_id number,
12253 c_source_type_code varchar2) IS
12254 select nvl(sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12255 adjustment_amount)),0)
12256 from fa_adjustments
12257 where source_type_code = c_source_type_code
12258 and adjustment_type = 'IMPAIR EXPENSE'
12259 and asset_id = p_asset_hdr_rec.asset_id
12260 and book_type_code = p_asset_hdr_rec.book_type_code
12261 and transaction_header_id = c_transaction_header_id;
12262
12263 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12264 -- For MRC: gets (adjustment) impairment expense amount
12265 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12266 CURSOR c_get_mc_impair_exp (c_transaction_header_id number,
12267 c_source_type_code varchar2) IS
12268 select nvl(sum(decode(debit_credit_flag, 'DR', -1 * adjustment_amount,
12269 adjustment_amount)),0)
12270 from fa_mc_adjustments
12271 where source_type_code = c_source_type_code
12272 and adjustment_type = 'IMPAIR EXPENSE'
12273 and asset_id = p_asset_hdr_rec.asset_id
12274 and book_type_code = p_asset_hdr_rec.book_type_code
12275 and transaction_header_id = c_transaction_header_id
12276 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12277 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12278 -- This cursor gets group asset's transaction_header_id which was
12282 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12279 -- created for member addition. The reason why is because Recalculation
12280 -- needs to start before this transaction in case reclass is backdated
12281 -- to member's dpis.
12283 CURSOR c_get_init_thid IS
12284 select gth.transaction_header_id
12285 from fa_transaction_headers gth
12286 where gth.asset_id = p_asset_hdr_rec.asset_id
12287 and gth.book_type_code = p_asset_hdr_rec.book_type_code
12288 and gth.member_transaction_header_id =
12289 (select min(mth.transaction_header_id)
12290 from fa_transaction_headers mth
12291 where mth.asset_id = p_reclassed_asset_id
12292 and mth.book_type_code = p_asset_hdr_rec.book_type_code);
12293
12294 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12295 -- This cursor returns latest transaction of group
12296 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12297 CURSOR c_get_group_trx IS
12298 select th.transaction_header_id transaction_header_id,
12299 nvl(th.amortization_start_date,
12300 th.transaction_date_entered) transaction_date_entered,
12301 th.date_effective date_effective,
12302 th.transaction_type_code transaction_type_code
12303 from fa_transaction_headers th
12304 where asset_id = p_asset_hdr_rec.asset_id
12305 and book_type_code = p_asset_hdr_rec.book_type_code
12306 and not exists (select 'Y'
12307 from fa_transaction_headers mth,
12308 fa_books bk
12309 where mth.transaction_header_id = th.member_transaction_header_id
12310 and mth.book_type_code = p_asset_hdr_rec.book_type_code
12311 and bk.asset_id = mth.asset_id
12312 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12313 and bk.transaction_header_id_out is null
12314 and ((bk.asset_id <> nvl(p_reclassed_asset_id, 0) and
12315 bk.group_asset_id is null) or
12316 bk.group_asset_id <> p_asset_hdr_rec.asset_id)
12317 )
12318 union all
12319 select p_trans_rec.transaction_header_id transaction_header_id,
12320 nvl(p_trans_rec.amortization_start_date,
12321 p_trans_rec.transaction_date_entered) transaction_date_entered,
12322 p_trans_rec.who_info.creation_date date_effective,
12323 p_trans_rec.transaction_type_code transaction_type_code
12324 from dual
12325 where not exists (select 'Y'
12326 from fa_transaction_headers mth,
12327 fa_books bk
12328 where mth.transaction_header_id = p_trans_rec.member_transaction_header_id
12329 and mth.book_type_code = p_asset_hdr_rec.book_type_code
12330 and bk.asset_id = mth.asset_id
12331 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12332 and bk.transaction_header_id_out is null
12333 and ((bk.asset_id <> nvl(p_reclassed_asset_id, 0) and
12334 bk.group_asset_id is null) or
12335 bk.group_asset_id <> p_asset_hdr_rec.asset_id)
12336 )
12337 order by transaction_header_id desc;
12338
12339 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12340 -- This cursor returns maximum group transaction header id which is
12341 -- not a group transaction of non-member asset before give transaction
12342 -- header id to get correct initial books row.
12343 --+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12344 CURSOR c_get_init_trx2 (c_transaction_header_id number) IS
12345 select outgth.transaction_header_id
12346 from fa_transaction_headers outgth,
12347 fa_transaction_headers ingth,
12348 fa_books gbk
12349 where outgth.asset_id = p_asset_hdr_rec.asset_id
12350 and outgth.book_type_code = p_asset_hdr_rec.book_type_code
12351 and outgth.transaction_header_id <= c_transaction_header_id
12352 and ingth.asset_id = p_asset_hdr_rec.asset_id
12353 and ingth.book_type_code = p_asset_hdr_rec.book_type_code
12354 and gbk.transaction_header_id_out = outgth.transaction_header_id
12355 and gbk.transaction_header_id_in = ingth.transaction_header_id
12356 and not exists (select 1
12357 from fa_transaction_headers mth,
12358 fa_books bk
12359 where mth.transaction_header_id = ingth.member_transaction_header_id
12360 and mth.asset_id = bk.asset_id
12361 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12362 and bk.transaction_header_id_out is null
12363 and (bk.asset_id <> p_reclassed_asset_id
12364 and nvl(bk.group_asset_id, 0) <> p_asset_hdr_rec.asset_id))
12365 order by outgth.transaction_header_id desc;
12366
12367 -- bug 4428646, modified from 'B' to 'BOOKS'.
12368 CURSOR c_get_brow IS
12369 select ytd_deprn, deprn_reserve
12370 from fa_deprn_summary
12371 where asset_id = p_asset_hdr_rec.asset_id
12372 and book_type_code = p_asset_hdr_rec.book_type_code
12373 and deprn_source_code = 'BOOKS';
12374
12375 CURSOR c_get_mc_brow IS
12376 select ytd_deprn, deprn_reserve
12377 from fa_mc_deprn_summary
12378 where asset_id = p_asset_hdr_rec.asset_id
12379 and book_type_code = p_asset_hdr_rec.book_type_code
12380 and deprn_source_code = 'BOOKS'
12381 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
12382
12386 -- Bug 5654286 Excluded ADDITION/VOID transaction
12383 -- code fix for bug no.4016503
12384 -- Get previous trx with given thid
12385 --Added conditions to where clause for bug 4168841
12387 -- Bug 13001311 no need to pick trasaction with key 'ES'
12388 -- Bug 13028310 removed changes done in 13001311
12389 CURSOR c_get_prev_trx (c_thid number) IS
12390 select th.transaction_header_id
12391 , th.transaction_date_entered
12392 , th.date_effective
12393 , th.transaction_type_code
12394 from fa_transaction_headers th
12395 , fa_books bk
12396 where bk.transaction_header_id_out < c_thid
12397 and bk.book_type_code = p_asset_hdr_rec.book_type_code
12398 and th.book_type_code = p_asset_hdr_rec.book_type_code
12399 and th.asset_id = p_asset_hdr_rec.asset_id
12400 and bk.asset_id = p_asset_hdr_rec.asset_id
12401 and bk.transaction_header_id_in = th.transaction_header_id
12402 and th.transaction_type_code not in (G_TRX_TYPE_TFR_OUT, G_TRX_TYPE_TFR_IN,
12403 G_TRX_TYPE_TFR, G_TRX_TYPE_TFR_VOID,
12404 G_TRX_TYPE_REC, G_TRX_TYPE_UNIT_ADJ,
12405 G_TRX_TYPE_TFR_VOID ,G_TRX_TYPE_REI,
12406 G_TRX_TYPE_ADD_VOID)
12407 order by transaction_header_id desc;
12408
12409 -- Bug6190904: Need following cursor to store prorate period info
12410 -- to find out whether adjustment date (amortized) may need the info
12411 -- if the date falls in the prorate period and impact the catch-up.
12412 CURSOR c_get_prorate_date (c_date_placed_in_service date
12413 , c_prorate_convention_code varchar2) is
12414 select prorate_date, start_date, end_date
12415 from fa_conventions
12416 where prorate_convention_code = c_prorate_convention_code
12417 and c_date_placed_in_service between start_date and end_date;
12418
12419 -- Bug6190904: Used with above cursor.
12420 l_prorate_date date;
12421 l_start_date date;
12422 l_end_date date;
12423
12424 -- Bug 8211842 : Get the prorated retirement date
12425 -- for a reinstatement transaction
12426 CURSOR c_get_retirement_pdate IS
12427 select decode(p_asset_fin_rec_old.group_asset_id, null, con.prorate_date, ret.date_retired) prorate_date
12428 from fa_conventions con,
12429 fa_retirements ret
12430 where ret.transaction_header_id_out = p_trans_rec.transaction_header_id
12431 and ret.book_type_code = p_asset_hdr_rec.book_type_code
12432 and ret.asset_id = p_asset_hdr_rec.asset_id
12433 and ret.retirement_prorate_convention = con.prorate_convention_code
12434 and ret.date_retired between con.start_date and con.end_date;
12435
12436 l_override_limit_date date;
12437 l_override_limit_period_rec FA_API_TYPES.period_rec_type;
12438
12439 --++++++++++++++++++ Table types ++++++++++++++++++
12440 TYPE tab_date_type IS TABLE OF DATE INDEX BY BINARY_INTEGER;
12441 TYPE tab_num_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12442 TYPE tab_num15_type IS TABLE OF NUMBER(15) INDEX BY BINARY_INTEGER;
12443 TYPE tab_char1_type IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
12444 TYPE tab_char15_type IS TABLE OF VARCHAR2(15) INDEX BY BINARY_INTEGER;
12445 TYPE tab_char30_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
12446 TYPE tab_char150_type IS TABLE OF VARCHAR2(150) INDEX BY BINARY_INTEGER;
12447
12448 -- table to store returned values from c_check_overlap2
12449 t_co_thid tab_num15_type;
12450 t_co_date_effective tab_date_type;
12451 t_co_trx_date tab_date_type;
12452 t_co_trx_type_code tab_char30_type;
12453
12454
12455 --+++ Table variables to for main transaction cursor +++
12456 t_transaction_header_id tab_num15_type;
12457 t_transaction_type_code tab_char30_type;
12458 t_transaction_date_entered tab_date_type;
12459 t_transaction_period_ctr tab_num15_type; -- Bug 8398064
12460 t_date_effective tab_date_type;
12461 t_transaction_name tab_char30_type;
12462 t_source_transaction_header_id tab_num15_type;
12463 t_mass_reference_id tab_num15_type;
12464 t_transaction_subtype tab_char30_type;
12465 t_transaction_key tab_char30_type;
12466 t_amortization_start_date tab_date_type;
12467 t_calling_interface tab_char30_type;
12468 t_mass_transaction_id tab_num15_type;
12469 t_deprn_override_flag tab_char1_type;
12470 t_member_transaction_header_id tab_num15_type;
12471 t_trx_reference_id tab_num15_type;
12472 t_invoice_transaction_id tab_num15_type;
12473 t_which_select tab_char30_type;
12474
12475
12476 l_row_count NUMBER := 0;
12477
12478 --+++++ Store data related to each transactions +++++
12479 l_trans_rec FA_API_TYPES.trans_rec_type;
12480 l_invoice_transaction_id NUMBER;
12481 l_period_rec FA_API_TYPES.period_rec_type;
12482 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
12483 l_asset_deprn_rec_raf FA_API_TYPES.asset_deprn_rec_type;
12484 l_asset_fin_rec_old FA_API_TYPES.asset_fin_rec_type;
12485 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
12486 l_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type;
12487 l_asset_retire_rec FA_API_TYPES.asset_retire_rec_type;
12488
12489 l_least_thid number(15); -- Stored least transaction_header_id
12493 l_member_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
12490 -- to find starting fa_books record
12491 l_member_asset_id number(15) := to_number(null); -- Store member asset id
12492 l_member_trx_key varchar2(2); -- member transaction key
12494 l_next_period_rec FA_API_TYPES.period_rec_type;
12495 l_transaction_type_code varchar2(30); -- Used to find reinstatement
12496
12497 l_temp_period_counter number(15); -- This is to store period counter because GetDeprnRec needs
12498 -- period counter = period_counter - 1
12499
12500 l_use_new_deprn_rule BOOLEAN := FALSE; -- True: if it needs to inherit passed
12501 -- asset_fin_rec values except amounts.
12502 l_use_fin_rec_adj BOOLEAN := FALSE; -- True: if it is processing passed transaction
12503
12504 l_limit CONSTANT BINARY_INTEGER := 1800; -- main transaction_cursor limit constant;
12505
12506 --+++++++++++++++ For calling faxcde +++++++++++++++
12507 l_dpr_in FA_STD_TYPES.dpr_struct;
12508 l_dpr_out FA_STD_TYPES.dpr_out_struct;
12509 l_dpr_arr FA_STD_TYPES.dpr_arr_type;
12510 l_running_mode NUMBER;
12511
12512 --++++++++++ For storing retirement values ++++++++++
12513 l_retirement_id NUMBER(15);
12514 l_cost_of_removal NUMBER;
12515 l_proceeds_of_sales NUMBER;
12516 l_reserve_retired NUMBER;
12517 l_eofy_reserve_retired NUMBER;
12518 l_reval_reserve_retired NUMBER;
12519 l_unrevalued_cost_retired NUMBER;
12520 l_bonus_reserve_retired NUMBER;
12521 l_impair_reserve_retired NUMBER;
12522 l_recognize_gain_loss VARCHAR2(30);
12523 l_cost_retired NUMBER;
12524
12525 --++++++++++ For storing revaluation values ++++++++++
12526 l_reval_reserve NUMBER;
12527 l_reval_bonus_reserve NUMBER;
12528 l_reval_impair_reserve NUMBER;
12529
12530 l_impair_reserve NUMBER;
12531
12532 l_process_this_trx BOOLEAN := TRUE; -- False: if this transaction is retirement and
12533 -- reinstatement exists for this retirement.
12534 -- If this is false, it won't process this transaction.
12535
12536 --
12537 -- These are used to store return values from faxcde which
12538 -- may not be used.
12539 --
12540 l_out_deprn_exp NUMBER;
12541 l_out_reval_exp NUMBER;
12542 l_out_reval_amo NUMBER;
12543 l_out_prod NUMBER;
12544 l_out_ann_adj_exp NUMBER;
12545 l_out_ann_adj_reval_exp NUMBER;
12546 l_out_ann_adj_reval_amo NUMBER;
12547 l_out_bonus_rate_used NUMBER;
12548 l_out_full_rsv_flag BOOLEAN;
12549 l_out_life_comp_flag BOOLEAN;
12550 l_out_deprn_override_flag VARCHAR2(1);
12551
12552 --+++++++ variables for cursor c_get_next_ths +++++++
12553 l_next_trx_period_counter NUMBER(15);
12554 l_next_trx_fiscal_year NUMBER(15);
12555 l_next_trx_period_num NUMBER(15);
12556 l_next_trx_trx_date_entered DATE;
12557 l_next_trx_date_effective DATE;
12558
12559 --+++++++ variables for cursor c_get_init_thid ++++++
12560 l_member_init_thid NUMBER;
12561
12562 --+++++++ variables FA_CALC_DEPRN_BASIS1_PKG.GET_EOFY_EOP +++++++
12563 l_eofy_rec_cost NUMBER;
12564 l_eofy_sal_val NUMBER;
12565 l_eop_rec_cost NUMBER;
12566 l_eop_sal_val NUMBER;
12567
12568 l_eofy_fy NUMBER; -- Fiscal year which is used to get
12569 -- end of fiscal year recoverable cost and
12570 -- salvage value
12571
12572 l_period_counter NUMBER(15);
12573
12574 --++++++++ variables for calling GetEofyReserve ++++++++
12575 l_eofy_thid NUMBER(15);
12576 l_eofy_trx_date_entered DATE;
12577 l_eofy_date_effective DATE;
12578 l_eofy_reserve NUMBER;
12579 l_eofy_trx_type_code VARCHAR2(30);
12580
12581 --++++++++ variables for cursor c_get_deprn_period_date +++++++
12582 l_calendar_period_start_date date;
12583 l_add_fiscal_year number; -- bug 12344343
12584 l_start_from_addition number := 0; -- bug 12344343
12585 --++++++++ variables for cursorc_get_dpis_period +++++++ Bug 15933180
12586 l_dpis_fiscal_year number;
12587 --++++++++ variables for manual override ++++++++
12588 l_rate_source_rule VARCHAR2(25);
12589 l_deprn_basis_rule VARCHAR2(25);
12590
12591 --++++++++ variables for cursor c_get_reclass_reserve +++++++++
12592 l_src_asset_id NUMBER(15);
12593 l_dest_asset_id NUMBER(15);
12594 l_reclassed_reserve NUMBER;
12595 l_reclass_src_dest VARCHAR2(12);
12596
12597 --++++++++ Other Variables +++++++
12598 l_calc_deprn_flag BOOLEAN := FALSE;
12599 l_temp_adjusted_cost NUMBER;
12600 l_reserve_adj NUMBER;
12601
12602 --+++++++++++++++++ Exceptions ++++++++++++++++++++++
12603 invalid_trx_to_overlap EXCEPTION;
12604 calc_failed EXCEPTION;
12605 l_check_overlap_found BOOLEAN := FALSE;
12606
12607 l_temp_cnt binary_integer := 0;
12608
12609 --bug3548724
12610 l_is_this_void BOOLEAN := FALSE;
12611 l_adj_processed BOOLEAN := FALSE;
12615
12612 l_add_processed BOOLEAN := FALSE;
12613 l_add_void_exist BOOLEAN := FALSE;
12614 l_add_exist BOOLEAN := FALSE;
12616 --Bug3724207
12617 l_dpis_change BOOLEAN := FALSE;
12618 l_dbr_event_type VARCHAR2(30);
12619 l_default_dbr_event_type VARCHAR2(30);
12620 l_brow_ytd_deprn NUMBER;
12621 l_brow_deprn_reserve NUMBER;
12622
12623 l_energy_member BOOLEAN := FALSE; -- ENERGY
12624 l_retirement_flag VARCHAR2(1) := 'N'; --Bug4622110
12625 l_amort_adjusted_flag BOOLEAN := FALSE; -- bug 8398064
12626 l_overlapping_rets BOOLEAN := FALSE; -- bug 8398064
12627
12628 l_impair_adj_cost NUMBER;
12629 l_impair_raf NUMBER;
12630 l_impair_formula_factor NUMBER;
12631 l_unplanned_exp NUMBER;
12632 l_start_from_first BOOLEAN := TRUE;
12633
12634 -- Bug PKO
12635 l_retirement_thid NUMBER := -1;
12636 l_catchup_begin_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
12637 l_temp_reserve NUMBER;
12638
12639 l_cost_frac NUMBER; -- Bug 5893429
12640
12641 l_old_pc_reserved NUMBER; -- Japan Bug 6645061
12642 l_new_pc_reserved NUMBER; -- Japan Bug 6645061
12643 l_check_tax_overlap NUMBER; -- 9003531
12644
12645 --Bug6755649
12646 l_cur_adj_cost NUMBER := 0;
12647 l_old_cost_frac NUMBER;
12648
12649 l_start_extended VARCHAR2(1) := 'N'; -- Bug 8211842
12650 l_get_eofy_thid NUMBER; -- Bug 8537330
12651 l_amort_res_adj_poa BOOLEAN := FALSE; --Bug 13620748
12652
12653 BEGIN
12654
12655 if (p_log_level_rec.statement_level) then
12656 fa_debug_pkg.add(l_calling_fn, 'Begin', p_asset_type_rec.asset_type||
12657 ':'||p_asset_hdr_rec.asset_id , p_log_level_rec => p_log_level_rec);
12658 fa_debug_pkg.add(l_calling_fn, 'Reclass values', p_reclass_src_dest||
12659 ':'||to_char(p_reclassed_asset_id)||':'||
12660 to_char(p_reclassed_asset_dpis, 'DD-MON-RR'));
12661 end if;
12662
12663 l_asset_deprn_rec := p_asset_deprn_rec;
12664 l_asset_fin_rec_adj := p_asset_fin_rec_adj;
12665
12666 g_deprn_ch_trx_id := null;
12667
12668 l_incoming_thid := nvl(p_trans_rec.transaction_header_id, 999999999999);
12669 l_trans_rec.transaction_type_code := p_trans_rec.transaction_type_code;
12670 l_trans_rec.transaction_header_id := l_incoming_thid;
12671 l_trans_rec.transaction_date_entered := nvl(p_trans_rec.amortization_start_date,
12672 p_trans_rec.transaction_date_entered);
12673 l_trans_rec.who_info.last_update_date := nvl(p_trans_rec.who_info.last_update_date, sysdate);
12674
12675 if ((px_asset_fin_rec_new.group_asset_id is null) and
12676 (p_asset_fin_rec_old.group_asset_id is not null)) or
12677 ((px_asset_fin_rec_new.group_asset_id is not null) and
12678 (p_asset_fin_rec_old.group_asset_id is null)) and
12679 (p_asset_type_rec.asset_type = 'CAPITALIZED') then
12680 l_calc_deprn_flag := TRUE;
12681 end if;
12682 -- bug 12344343 fetching fiscal year also
12683 /* Bug 6281311 fetching it here */
12684 OPEN c_get_deprn_period_date;
12685 FETCH c_get_deprn_period_date INTO l_calendar_period_start_date,l_add_fiscal_year, l_entered_ytd, l_entered_reserve;
12686 CLOSE c_get_deprn_period_date;
12687
12688 if (p_log_level_rec.statement_level) then
12689 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 0.9 ==========','', p_log_level_rec => p_log_level_rec);
12690 fa_debug_pkg.add(l_calling_fn, '++ l_calendar_period_start_date', l_calendar_period_start_date, p_log_level_rec => p_log_level_rec);
12691 fa_debug_pkg.add(l_calling_fn, '++ l_entered_ytd', l_entered_ytd, p_log_level_rec => p_log_level_rec);
12692 fa_debug_pkg.add(l_calling_fn, '++ l_add_fiscal_year', l_add_fiscal_year, p_log_level_rec => p_log_level_rec);
12693 fa_debug_pkg.add(l_calling_fn, '++ l_entered_reserve', l_entered_reserve, p_log_level_rec => p_log_level_rec);
12694 end if;
12695 /* Bug 6281311 fetching it here */
12696
12697 --
12698 -- Bug3696765:
12699 -- Due to necessity of using user entered reserve occasionally (only if user backdated
12700 -- to 1st peirod of fiscal, this check is necessary and the return value will be
12701 -- used in check_overlap cursor and main cursor.
12702 --
12703 if (p_log_level_rec.statement_level) then
12704 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 1.0 ==========','', p_log_level_rec => p_log_level_rec);
12705 fa_debug_pkg.add(l_calling_fn, '++ p_trans_rec.transaction_header_id', p_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
12706 fa_debug_pkg.add(l_calling_fn, '++ l_incoming_thid', l_incoming_thid, p_log_level_rec => p_log_level_rec);
12707 fa_debug_pkg.add(l_calling_fn, '++ p_trans_rec.transaction_type_code', p_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
12708 fa_debug_pkg.add(l_calling_fn, '++ p_trans_rec.transaction_date_entered', p_trans_rec.transaction_date_entered, p_log_level_rec => p_log_level_rec);
12709 end if;
12710
12711 if (p_trans_rec.transaction_type_code not like '%ADDITION') and
12712 (p_trans_rec.amortization_start_date is not null) then
12713 if not GetPeriodInfo(to_number(to_char(p_trans_rec.amortization_start_date, 'J')),
12714 p_asset_hdr_rec.book_type_code,
12718 p_log_level_rec) then
12715 p_mrc_sob_type_code,
12716 p_asset_hdr_rec.set_of_books_id,
12717 l_period_rec,
12719 if (p_log_level_rec.statement_level) then
12720 fa_debug_pkg.add(l_calling_fn, 'Error calling',
12721 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
12722 end if;
12723
12724 raise calc_failed;
12725 end if;
12726
12727 /* Bug 6281311 Reset l_process_addition only if the asset
12728 was added with reserve */
12729 if (l_period_rec.fiscal_year = l_add_fiscal_year AND l_entered_reserve <> 0 )then
12730 OPEN c_get_dpis_period;
12731 FETCH c_get_dpis_period INTO l_dpis_fiscal_year;
12732 CLOSE c_get_dpis_period;
12733 if l_dpis_fiscal_year <> l_add_fiscal_year then --Bug 15933180
12734 l_process_addition := 0;
12735 else
12736 l_process_addition := 1;
12737 end if;
12738 end if;
12739 fa_debug_pkg.add(l_calling_fn, 'l_process_addition: After changing', l_process_addition, p_log_level_rec => p_log_level_rec);
12740 end if;
12741
12742 -- Bug 5726160
12743 if p_running_mode = fa_std_types.FA_DPR_CATCHUP then
12744
12745 if p_trans_rec.transaction_type_code = 'REINSTATEMENT' then
12746
12747 begin
12748 select transaction_header_id_in
12749 into l_retirement_thid -- retirement thid
12750 from fa_retirements
12751 where asset_id = p_asset_hdr_rec.asset_id
12752 and book_type_code = p_asset_hdr_rec.book_type_code
12753 and transaction_header_id_out = l_incoming_thid;
12754 exception when others then null;
12755 end;
12756
12757 end if;
12758
12759 end if;
12760
12761 -- Bug 8211842 : Get the user provided transaction date
12762 -- In case of reinstatement it is the retirement prorate date
12763 l_override_limit_date := p_trans_rec.transaction_date_entered;
12764 if p_trans_rec.transaction_type_code = 'REINSTATEMENT' then
12765 OPEN c_get_retirement_pdate;
12766 FETCH c_get_retirement_pdate
12767 INTO l_override_limit_date;
12768 if c_get_retirement_pdate%notfound then
12769 fa_debug_pkg.add(l_calling_fn, 'Error Fetching cursor',
12770 'c_get_retirement_pdate');
12771 raise calc_failed;
12772 end if;
12773 CLOSE c_get_retirement_pdate;
12774 end if;
12775
12776 -- Get the Period corresponding to l_override_limit_date
12777 if not GetPeriodInfo(to_number(to_char(l_override_limit_date, 'J')),
12778 p_asset_hdr_rec.book_type_code,
12779 p_mrc_sob_type_code,
12780 p_asset_hdr_rec.set_of_books_id,
12781 l_override_limit_period_rec,
12782 p_log_level_rec) then
12783 fa_debug_pkg.add(l_calling_fn, 'Error calling',
12784 'GetPeriodInfo');
12785 raise calc_failed;
12786 end if;
12787
12788 if (p_log_level_rec.statement_level) then
12789 fa_debug_pkg.add(l_calling_fn, 'Checking overlapped trxs',
12790 p_asset_type_rec.asset_type||':'||p_asset_hdr_rec.asset_id , p_log_level_rec => p_log_level_rec);
12791 end if;
12792
12793 /* Bug 6281311 moving this code to above
12794 OPEN c_get_deprn_period_date;
12795 FETCH c_get_deprn_period_date INTO l_calendar_period_start_date, l_entered_ytd, l_entered_reserve;
12796 CLOSE c_get_deprn_period_date;
12797
12798 if (p_log_level_rec.statement_level) then
12799 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 1.9 ==========','', p_log_level_rec => p_log_level_rec);
12800 fa_debug_pkg.add(l_calling_fn, '++ l_calendar_period_start_date', l_calendar_period_start_date, p_log_level_rec => p_log_level_rec);
12801 fa_debug_pkg.add(l_calling_fn, '++ l_entered_ytd', l_entered_ytd, p_log_level_rec => p_log_level_rec);
12802 fa_debug_pkg.add(l_calling_fn, '++ l_entered_reserve', l_entered_reserve, p_log_level_rec => p_log_level_rec);
12803 end if; */
12804
12805
12806 LOOP
12807
12808 --bug 12344343 start make l_start_from_addition = 1, in case of asset added with zero reserve
12809 IF fa_cache_pkg.fazcdrd_record.use_eofy_reserve_flag = 'Y' AND
12810 l_period_rec.fiscal_year = l_add_fiscal_year AND
12811 l_trans_rec.transaction_type_code = 'ADJUSTMENT' AND
12812 l_entered_reserve = 0 THEN
12813 l_start_from_addition := 1;
12814 ELSE
12815 l_start_from_addition := 0;
12816 END IF;
12817 -- bug 12344343 END
12818
12819 if (p_log_level_rec.statement_level) then
12820 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 2.0 ==========','', p_log_level_rec => p_log_level_rec);
12821 fa_debug_pkg.add(l_calling_fn, '++ IN 1st LOOP: l_trans_rec.transaction_header_id', l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
12822 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_date_entered', to_char(l_trans_rec.transaction_date_entered, 'MM/DD/YYYY'));
12823 fa_debug_pkg.add(l_calling_fn, '++ Period of Addition: l_calendar_period_start_date', to_char(l_calendar_period_start_date,'MM/DD/YYYY'));
12824 fa_debug_pkg.add(l_calling_fn, 'l_process_addition', l_process_addition, p_log_level_rec => p_log_level_rec);
12825 fa_debug_pkg.add(l_calling_fn, 'l_start_from_addition', l_start_from_addition, p_log_level_rec => p_log_level_rec);
12826 end if;
12827
12828 -- fyi: l_calendar_period_start_date: The start date of the period in which the asset was added: Period of addition
12832 -- There is a case that we don't want to recalculate from addition if entered trx
12829 -- bug 12344343 modified IF condition to check l_start_from_addition also
12830 if (l_calendar_period_start_date > l_trans_rec.transaction_date_entered) OR (l_start_from_addition = 1) then
12831 --
12833 -- is back dated to first period of fy and user provided ytd and deprn reserve at the time
12834 -- of addition
12835 --
12836 if l_process_addition = 0 then
12837 --
12838 -- If entered trx is back dated to period 1 then look for a trx prevent recalculation
12839 -- from the period 1 such as other trx back dated beyond the period.
12840 -- if there is no such trx exists then we can recalculate from the period 1 using
12841 -- user entered ytd and deprn reserve at the time of addition. so skip c_check_overlap
12842 --
12843 --toru
12844 OPEN c_check_overlap2;
12845 FETCH c_check_overlap2 BULK COLLECT INTO t_co_thid,
12846 t_co_date_effective,
12847 t_co_trx_date,
12848 t_co_trx_type_code;
12849
12850 CLOSE c_check_overlap2;
12851
12852 if (p_log_level_rec.statement_level) then
12853 fa_debug_pkg.add(l_calling_fn, 't_co_thid.count', t_co_thid.count, p_log_level_rec => p_log_level_rec);
12854 end if;
12855
12856 l_start_from_first := FALSE;
12857
12858 for i in 1..t_co_thid.count loop
12859 if (p_log_level_rec.statement_level) then
12860 fa_debug_pkg.add(l_calling_fn, 't_co_trx_date', t_co_trx_date(i));
12861 end if;
12862
12863 if (t_co_trx_date(i) < l_period_rec.calendar_period_open_date) then
12864 if (p_log_level_rec.statement_level) then
12865 fa_debug_pkg.add(l_calling_fn, 'l_start_from_first', 'TRUE', p_log_level_rec => p_log_level_rec);
12866 end if;
12867 l_start_from_first := TRUE;
12868 EXIT;
12869 elsif (t_co_trx_date(i) < nvl(l_trans_rec.transaction_date_entered,
12870 nvl(p_trans_rec.amortization_start_date,
12871 p_trans_rec.transaction_date_entered))) then
12872 l_trans_rec.transaction_header_id := t_co_thid(i);
12873 l_trans_rec.transaction_date_entered := t_co_trx_date(i);
12874 l_trans_rec.who_info.creation_date := t_co_date_effective(i);
12875 l_trans_rec.transaction_type_code := t_co_trx_type_code(i);
12876 end if;
12877 end loop;
12878
12879 if (p_log_level_rec.statement_level) then
12880 fa_debug_pkg.add(l_calling_fn, 'End of for loop', 'end', p_log_level_rec => p_log_level_rec);
12881 end if;
12882
12883 else
12884 l_start_from_first := TRUE;
12885 end if;
12886
12887 if (l_start_from_first) then
12888 OPEN c_get_first_trx;
12889 FETCH c_get_first_trx INTO l_trans_rec.transaction_header_id,
12890 l_trans_rec.transaction_date_entered,
12891 l_trans_rec.who_info.creation_date,
12892 l_trans_rec.transaction_type_code;
12893 CLOSE c_get_first_trx;
12894
12895 if (p_log_level_rec.statement_level) then
12896 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 2.1 : FROM c_get_first_trx cursor ==========','', p_log_level_rec => p_log_level_rec);
12897 fa_debug_pkg.add(l_calling_fn, '++ TRX_DATE_ENTERED is prior to Period of Addition, EXIT AND GO TO ADDITION ','', p_log_level_rec => p_log_level_rec);
12898 fa_debug_pkg.add(l_calling_fn, '++ NEW FIRST TRX: l_trans_rec.transaction_header_id', l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
12899 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_date_entered', to_char(l_trans_rec.transaction_date_entered,'MM/DD/YYYY'));
12900 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.who_info.creation_date', to_char(l_trans_rec.who_info.creation_date, 'MM/DD/YYYY HH24:MI:SS'));
12901 end if;
12902
12903 end if; -- (l_start_from_first)
12904
12905 EXIT;
12906
12907 end if;
12908
12909 OPEN c_check_overlap(l_trans_rec.transaction_date_entered,
12910 l_trans_rec.transaction_header_id,
12911 l_trans_rec.who_info.creation_date);
12912 FETCH c_check_overlap INTO g_temp_number,
12913 g_temp_date1,
12914 g_temp_date2,
12915 g_temp_char30;
12916
12917 --tk_util.debug('transaction_header_id: '||to_char(g_temp_number));
12918 --tk_util.debug('creation_date: '||to_char(g_temp_date2, 'DD-MON-RR HH24:MI:SS'));
12919 --tk_util.debug('l_trans_rec.transaction_type_code: '||g_temp_char30);
12920
12921 if (p_log_level_rec.statement_level) then
12922 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 2.2 : IN c_check_overlap ==========','', p_log_level_rec => p_log_level_rec);
12923 fa_debug_pkg.add(l_calling_fn, '++ INPUT: l_trans_rec.transaction_header_id', l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
12924 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_date_entered', to_char(l_trans_rec.transaction_date_entered,'MM/DD/YYYY'));
12928 fa_debug_pkg.add(l_calling_fn, '++ g_temp_date2: Effective_Date', g_temp_date2, p_log_level_rec => p_log_level_rec);
12925 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.who_info.creation_date', to_char(l_trans_rec.who_info.creation_date,'MM/DD/YYYY HH24:MI:SS'));
12926 fa_debug_pkg.add(l_calling_fn, '++ OUTPUT: g_temp_number: THID', g_temp_number, p_log_level_rec => p_log_level_rec);
12927 fa_debug_pkg.add(l_calling_fn, '++ g_temp_date1: Trx Date', g_temp_date1, p_log_level_rec => p_log_level_rec);
12929 fa_debug_pkg.add(l_calling_fn, '++ g_temp_char30: Trx Type Code', g_temp_char30, p_log_level_rec => p_log_level_rec);
12930 end if;
12931
12932 -- Bug#4049799: Replaced this with the following: l_check_overlap_found := c_check_overlap%FOUND; */
12933 if c_check_overlap%NOTFOUND then
12934 l_check_overlap_found := FALSE;
12935 else
12936 l_check_overlap_found := TRUE;
12937 end if;
12938
12939 CLOSE c_check_overlap;
12940
12941 if (p_log_level_rec.statement_level) then
12942 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.0 ==========','', p_log_level_rec => p_log_level_rec);
12943 if (l_check_overlap_found) then
12944 fa_debug_pkg.add(l_calling_fn, '++ l_check_overlap_found', 'TRUE', p_log_level_rec => p_log_level_rec);
12945 else
12946 fa_debug_pkg.add(l_calling_fn, '++ l_check_overlap_found', 'FALSE', p_log_level_rec => p_log_level_rec);
12947 end if;
12948 end if;
12949
12950 if (l_check_overlap_found) then
12951
12952 if (p_log_level_rec.statement_level) then
12953 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.1 ==========','', p_log_level_rec => p_log_level_rec);
12954 end if;
12955
12956 l_trans_rec.transaction_header_id := g_temp_number;
12957 l_trans_rec.transaction_date_entered := g_temp_date1;
12958 l_trans_rec.who_info.creation_date := g_temp_date2;
12959 l_trans_rec.transaction_type_code := g_temp_char30;
12960
12961 --
12962 -- Bug3696765:
12963 -- Due to necessity of using user entered reserve occasionally (only if user backdated
12964 -- to 1st peirod of fiscal, this check is necessary and the return value will be
12965 -- used in check_overlap cursor and main cursor.
12966 --
12967 if (l_trans_rec.transaction_type_code not like '%ADDITION') then
12968 if not GetPeriodInfo(to_number(to_char(l_trans_rec.transaction_date_entered, 'J')),
12969 p_asset_hdr_rec.book_type_code,
12970 p_mrc_sob_type_code,
12971 p_asset_hdr_rec.set_of_books_id,
12972 l_period_rec,
12973 p_log_level_rec) then
12974 if (p_log_level_rec.statement_level) then
12975 fa_debug_pkg.add(l_calling_fn, 'Error calling',
12976 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
12977 end if;
12978
12979 raise calc_failed;
12980 end if;
12981
12982 -- Bug 5443855 if l_period_rec.period_num = 1 then
12983 if (l_period_rec.fiscal_year = l_add_fiscal_year AND l_entered_reserve <> 0 )then
12984 l_process_addition := 0;
12985 else
12986 l_process_addition := 1;
12987 end if;
12988 end if;
12989
12990 if (p_log_level_rec.statement_level) then
12991 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.2 WHEN l_check_overlap FOUND ==========','', p_log_level_rec => p_log_level_rec);
12992 fa_debug_pkg.add(l_calling_fn, '++ l_process_addition', l_process_addition, p_log_level_rec => p_log_level_rec);
12993 end if;
12994
12995 else
12996
12997 if (p_log_level_rec.statement_level) then
12998 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.2 WHEN l_check_overlap NOT FOUND ==========','', p_log_level_rec => p_log_level_rec);
12999 fa_debug_pkg.add(l_calling_fn, '++ l_process_addition', l_process_addition, p_log_level_rec => p_log_level_rec);
13000 end if;
13001
13002 --
13003 -- If the member asset is currently a member or will be a member
13004 -- do not call GetEofyReserve since it could require to go back
13005 -- to addition to recalcualte without letting user know which is not
13006 -- good especially if this asset has added with reserve which will be
13007 -- wiped out during recalculation.
13008 --
13009 if ((p_asset_fin_rec_old.group_asset_id is null and
13010 px_asset_fin_rec_new.group_asset_id is null)) or
13011 (l_trans_rec.transaction_type_code like '%RETIREMENT') then -- ENERGY
13012
13013 if (fa_cache_pkg.fazcdrd_record.use_eofy_reserve_flag = 'Y') then
13014
13015 if (p_log_level_rec.statement_level) then
13016 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.2.1 ==========','', p_log_level_rec => p_log_level_rec);
13017 end if;
13018
13019 if not GetEofyReserve(
13020 p_trans_rec => l_trans_rec,
13021 p_trans_rec_cur => p_trans_rec,
13022 p_asset_hdr_rec => p_asset_hdr_rec,
13023 p_asset_type_rec => p_asset_type_rec,
13024 p_period_rec => p_period_rec,
13025 x_eofy_reserve => l_eofy_reserve,
13029 x_transaction_type_code => l_eofy_trx_type_code,
13026 x_transaction_header_id => l_eofy_thid,
13027 x_transaction_date_entered => l_eofy_trx_date_entered,
13028 x_date_effective => l_eofy_date_effective,
13030 p_mrc_sob_type_code => p_mrc_sob_type_code,
13031 p_calling_fn => l_calling_fn,
13032 p_log_level_rec => p_log_level_rec) then
13033 if (p_log_level_rec.statement_level) then
13034 fa_debug_pkg.add(l_calling_fn, 'Error calling',
13035 'GetEofyReserve', p_log_level_rec => p_log_level_rec);
13036 end if;
13037
13038 raise calc_failed;
13039
13040 end if;
13041 -- Bug 8537330: Save the transaction for which GetEofyReserve was called.
13042 l_get_eofy_thid := l_trans_rec.transaction_header_id;
13043 end if;
13044
13045 if (p_log_level_rec.statement_level) then
13046 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.3 ==========','', p_log_level_rec => p_log_level_rec);
13047 end if;
13048
13049
13053 --the retirement transaction is ignored during recalculate
13050 if (nvl(fa_cache_pkg.fazcdrd_record.use_eofy_reserve_flag, 'N') = 'N') or
13051 (l_eofy_reserve is not null) then
13052 --adding the following code for bug no.4016503
13054 -- if it is reinstated by any following transaction.
13055
13056 if (l_trans_rec.transaction_type_code like '%RETIREMENT') then
13057
13058 l_retirement_id := null;
13059 l_cost_retired := null;
13060 l_cost_of_removal := null;
13061 l_proceeds_of_sales := null;
13062 l_reserve_retired := null;
13063 l_eofy_reserve_retired := null;
13064 l_reval_reserve_retired := null;
13065 l_unrevalued_cost_retired := null;
13066 l_bonus_reserve_retired := null;
13067 l_impair_reserve_retired := null;
13068 l_recognize_gain_loss := null;
13069
13070 if (p_log_level_rec.statement_level) then
13071 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.3.1 ==========','', p_log_level_rec => p_log_level_rec);
13072 end if;
13073
13074 OPEN c_get_retirement(l_trans_rec.transaction_header_id);
13075 FETCH c_get_retirement INTO l_retirement_id,
13076 l_cost_retired,
13077 l_cost_of_removal,
13078 l_proceeds_of_sales,
13079 l_reserve_retired,
13080 l_eofy_reserve_retired,
13081 l_reval_reserve_retired,
13082 l_unrevalued_cost_retired,
13083 l_bonus_reserve_retired,
13084 l_impair_reserve_retired,
13085 l_recognize_gain_loss;
13086
13087 if c_get_retirement%NOTFOUND then
13088 if (p_log_level_rec.statement_level) then
13089 fa_debug_pkg.add(l_calling_fn, 'Check Overlap', 'Search previous trx', p_log_level_rec => p_log_level_rec);
13090 end if;
13091
13092 CLOSE c_get_retirement;
13093
13094 if (p_log_level_rec.statement_level) then
13095 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.3.2 ==========','', p_log_level_rec => p_log_level_rec);
13096 end if;
13097
13098 -- Bug 13028310 no need to search for any other transaction in case of extended assets
13099 -- because we do not want to process addition and any transaction before asset got extended
13100 -- and after extension asset can not have anything other than retirement
13101
13102 IF px_asset_fin_rec_new.deprn_method_code = 'JP-STL-EXTND' then
13103 if (p_log_level_rec.statement_level) then
13104 fa_debug_pkg.add(l_calling_fn, '==========Exiting Loop for Extnd Assets==========','', p_log_level_rec => p_log_level_rec);
13105 end if;
13106 exit;
13107 END IF;
13108
13112 , l_trans_rec.transaction_date_entered
13109 --find a trx before this retirement
13110 OPEN c_get_prev_trx (l_trans_rec.transaction_header_id);
13111 FETCH c_get_prev_trx INTO l_trans_rec.transaction_header_id
13113 , l_trans_rec.who_info.creation_date
13114 , l_trans_rec.transaction_type_code;
13115 /*Added for bug 4168841*/
13116 if c_get_prev_trx%NOTFOUND then
13117 CLOSE c_get_prev_trx;
13118 exit;
13119 end if;
13120
13121 if (p_log_level_rec.statement_level) then
13122 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.3.2.1 ==========','', p_log_level_rec => p_log_level_rec);
13123 end if;
13124
13125 CLOSE c_get_prev_trx;
13126 else
13127 -- This retirement has not reinstated yet so ok to proceed
13128 CLOSE c_get_retirement;
13129
13130 if (p_log_level_rec.statement_level) then
13131 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.3.3 ==========','', p_log_level_rec => p_log_level_rec);
13132 end if;
13133
13134 exit;
13135 end if; -- c_get_retirement%NOTFOUND
13136 else
13137 if (p_log_level_rec.statement_level) then
13138 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.3.9 ==========','', p_log_level_rec => p_log_level_rec);
13139 end if;
13140
13141 exit;
13142 end if; -- l_trans_rec.transaction_type_code like '%RETIREMENT
13143
13144 else
13145 if (p_log_level_rec.statement_level) then
13146 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.4.1 ==========','', p_log_level_rec => p_log_level_rec);
13147 end if;
13148
13149 l_trans_rec.transaction_header_id := l_eofy_thid;
13150 l_trans_rec.transaction_date_entered := l_eofy_trx_date_entered;
13151 l_trans_rec.who_info.creation_date := l_eofy_date_effective;
13152 end if;
13153 else
13154 if (p_log_level_rec.statement_level) then
13155 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 3.5 ==========','', p_log_level_rec => p_log_level_rec);
13156 end if;
13157
13158 -- Will find eofy_reserve from old books row.
13159 exit;
13160 end if; -- (p_asset_fin_rec_old.group_asset_id is null and
13161 end if;
13162
13163 l_period_rec := null;
13164
13165 --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13166 -- temporary code to prevent infinite loop
13167 --
13168 l_temp_cnt := l_temp_cnt + 1;
13169
13170 if (l_temp_cnt > 200) then
13171
13172 if (p_log_level_rec.statement_level) then
13173 fa_debug_pkg.add(l_calling_fn, '++ Checking overlapped trxs with ',
13174 to_char(l_trans_rec.transaction_date_entered, 'MM/DD/YYYY HH24:MI:SS'));
13175 end if;
13176
13177 raise calc_failed;
13178 end if;
13179 --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13180 --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13181
13182 END LOOP;
13183
13184
13185 --Bug4622110
13186 if l_trans_rec.transaction_type_code like '%RETIREMENT' then
13187 l_retirement_flag := 'Y';
13191 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 4 : BEFORE LOOP FOR CURSOR c_get_ths_adj ==========','', p_log_level_rec => p_log_level_rec);
13188 end if;
13189
13190 if (p_log_level_rec.statement_level) then
13192 fa_debug_pkg.add(l_calling_fn, '++ FETCHING TRANSACTIONS AFTER - TRX_DATE : EFF_DATE',
13193 to_char(l_trans_rec.transaction_date_entered, 'MM/DD/YYYY') || ' : '||
13194 to_char(l_trans_rec.who_info.creation_date, 'MM/DD/YYYY HH24:MI:SS'));
13195 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_date_entered', to_char(l_trans_rec.transaction_date_entered,'MM/DD/YYYY HH24:MI:SS'));
13196 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.who_info.creation_date', to_char(l_trans_rec.who_info.creation_date,'MM/DD/YYYY HH24:MI:SS'));
13197 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_header_id', l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
13198 fa_debug_pkg.add(l_calling_fn, '++ l_retirement_flag', l_retirement_flag, p_log_level_rec => p_log_level_rec);
13199 end if;
13200
13201 -- Bug 8674466 : Propagating fix of 7699305
13202 -- Check if there are any future prorate retirements in the period
13203 -- in which the current retirement is done .. then start from Addition,
13204 -- instead of the retirement transaction
13205
13206 -- Bug 8250142 Added the reinstatement and l_process_addition condition
13207 if ((l_retirement_flag = 'Y') and
13208 (p_trans_rec.transaction_type_code <> 'REINSTATEMENT') and
13209 (l_process_addition = 1)) then
13210
13211 -- Get the prorate period counter for the retirement
13212 select fy.fiscal_year * ct.NUMBER_PER_FISCAL_YEAR + cp.PERIOD_NUM
13213 into l_ret_prorate_pc
13214 from fa_calendar_periods cp,
13215 fa_book_controls bc,
13216 fa_fiscal_year fy,
13217 fa_calendar_types ct,
13218 fa_retirements ret,
13219 fa_conventions con
13220 WHERE ret.book_type_code = p_asset_hdr_rec.book_type_code
13221 and ret.asset_id = p_asset_hdr_rec.asset_id
13222 and ret.transaction_header_id_in = l_trans_rec.transaction_header_id
13223 and ret.RETIREMENT_PRORATE_CONVENTION = con.PRORATE_CONVENTION_CODE
13224 and ret.date_retired between con.start_date and con.end_date
13225 and bc.book_type_code = p_asset_hdr_rec.book_type_code
13226 and bc.deprn_calendar = ct.calendar_type
13227 and bc.fiscal_year_name = fy.fiscal_year_name
13228 and ct.fiscal_year_name = bc.fiscal_year_name
13229 and ct.calendar_type = cp.calendar_type
13230 and cp.start_date between fy.start_date and fy.end_date
13231 and con.prorate_date between cp.start_date and cp.end_date;
13232
13233 if (p_log_level_rec.statement_level) then
13234 fa_debug_pkg.add(l_calling_fn, '========== Recalc Bug 7699305:1 After l_ret_prorate_pc ==========','');
13235 fa_debug_pkg.add(l_calling_fn, '++ l_ret_prorate_pc', l_ret_prorate_pc);
13236 end if;
13237
13238 SELECT count(th.transaction_header_id)
13239 INTO l_future_ret_count
13240 FROM fa_deprn_periods dp,
13241 fa_transaction_headers th,
13242 fa_retirements ret,
13243 fa_conventions con
13244 WHERE th.book_type_code = p_asset_hdr_rec.book_type_code
13245 and th.asset_id = p_asset_hdr_rec.asset_id
13246 and th.transaction_type_code like '%RETIREMENT'
13247 and th.date_effective between dp.period_open_date and dp.period_close_Date
13248 and dp.period_counter = l_ret_prorate_pc - 1
13249 and dp.book_type_code = th.book_type_code
13250 and th.transaction_header_id = ret.transaction_header_id_in
13251 and ret.RETIREMENT_PRORATE_CONVENTION = con.PRORATE_CONVENTION_CODE
13252 and ret.date_retired between con.start_date and con.end_date
13253 and con.prorate_date > dp.calendar_period_close_date;
13254
13255 if l_future_ret_count > 0 then
13256 -- fetch addition
13257 SELECT th.transaction_date_entered,
13258 th.date_effective,
13259 th.transaction_header_id,
13260 'N'
13261 INTO l_trans_rec.transaction_date_entered,
13262 l_trans_rec.who_info.creation_date,
13263 l_trans_rec.transaction_header_id,
13264 l_retirement_flag
13265 FROM fa_transaction_headers th
13266 WHERE th.book_type_code = p_asset_hdr_rec.book_type_code
13267 and th.asset_id = p_asset_hdr_rec.asset_id
13268 and th.transaction_type_code = 'ADDITION';
13269
13270 if (p_log_level_rec.statement_level) then
13271 fa_debug_pkg.add(l_calling_fn, '========== Recalc Bug 7699305: BEFORE LOOP FOR CURSOR c_get_ths_adj ==========','');
13272 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_date_entered', to_char(l_trans_rec.transaction_date_entered,'MM/DD/YYYY HH24:MI:SS'));
13273 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.who_info.creation_date', to_char(l_trans_rec.who_info.creation_date,'MM/DD/YYYY HH24:MI:SS'));
13274 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_header_id', l_trans_rec.transaction_header_id);
13275 fa_debug_pkg.add(l_calling_fn, '++ l_retirement_flag', l_retirement_flag);
13276 end if;
13277
13278 end if;
13279 end if;
13280 --Bug 8674466 : End of fix
13281
13282 -- Bug 8537330: If the driving transaction for c_get_ths_adj
13283 -- is not the transaction for which GetEofyReserve was called .. then
13284 -- make l_eofy_reserve as 0
13285 if (l_get_eofy_thid is not null and
13286 l_get_eofy_thid <> l_trans_rec.transaction_header_id) then
13290 OPEN c_get_ths_adj(l_trans_rec.transaction_date_entered,
13287 l_eofy_reserve := 0;
13288 end if;
13289
13291 l_trans_rec.who_info.creation_date,
13292 l_trans_rec.transaction_header_id,
13293 l_retirement_flag); --Bug4622110
13294
13295 LOOP -- Main loop for all transactions
13296
13297
13298 FETCH c_get_ths_adj BULK COLLECT INTO t_transaction_header_id,
13299 t_transaction_type_code,
13300 t_transaction_date_entered,
13301 t_date_effective,
13302 t_transaction_name,
13303 t_source_transaction_header_id,
13304 t_mass_reference_id,
13305 t_transaction_subtype,
13306 t_transaction_key,
13307 t_amortization_start_date,
13308 t_calling_interface,
13309 t_mass_transaction_id,
13310 t_deprn_override_flag,
13311 t_member_transaction_header_id,
13312 t_trx_reference_id,
13313 t_invoice_transaction_id,
13314 t_which_select
13315 LIMIT l_limit;
13316
13317
13318 if (p_log_level_rec.statement_level) then
13319 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 4.1 IN Fetch c_get_ths_adj ==========','', p_log_level_rec => p_log_level_rec);
13320 fa_debug_pkg.add(l_calling_fn, 'Number of rows fetched',
13321 t_transaction_header_id.COUNT, p_log_level_rec => p_log_level_rec);
13322 end if;
13323
13324 -- Store total row count
13325 l_row_count := c_get_ths_adj%ROWCOUNT;
13326
13327 EXIT WHEN t_transaction_header_id.COUNT = 0;
13328 /*
13329 Bug 8398064: from t_transaction_header_id we populate
13330 t_transaction_period_ctr to identify overlapping transactions in the same period.
13331
13332 Also, if we need to account for expense if there has been an amortization
13333 in the past, so we need l_amort_adjusted_flag to be
13334 set to TRUE if there has been an amortization or revaluation.
13335 If no amort adjustments, then we use mvmt in ytd to create backout
13336 expense for overlapping retirements otherwise, we use current approach
13337 of expensing the mvmt in the reserve for creating expense.
13338 */
13339 l_amort_adjusted_flag := FALSE;
13340 l_default_dbr_event_type := 'EXPENSED_ADJ';
13341 if p_trans_rec.amortization_start_date is not null then
13342 l_default_dbr_event_type := 'AMORT_ADJ';
13343 end if;
13344
13345 for loopct in 1..t_transaction_header_id.COUNT loop
13346
13347 declare
13348 l_temp_date date := null;
13349 begin
13350 l_temp_date := nvl(nvl(t_amortization_start_date(loopct), t_transaction_date_entered(loopct)),sysdate);
13351 t_transaction_period_ctr(loopct) := get_dcal_pc ( p_asset_hdr_rec.book_type_code, l_temp_date , p_log_level_rec);
13352 end;
13353
13354 if t_transaction_type_code(loopct) in ( G_TRX_TYPE_REV )
13355 or t_amortization_start_date(loopct) is not null
13356 then
13357 l_amort_adjusted_flag := TRUE;
13358 if l_default_dbr_event_type <> 'AMORT_ADJ' then
13359 l_default_dbr_event_type := 'AMORT_ADJ';
13360 end if;
13361 end if;
13362
13363 end loop;
13364 -- Bug 8398064
13365
13366 FOR i IN 1..t_transaction_header_id.COUNT LOOP -- for every 100 transactions
13367 if (t_transaction_type_code(i) = 'TAX') then
13368 -- bug 9003531. check if retirement trx is overlapping with
13369 -- TAX reserve transaction. If they are overlapped raise exception
13370 begin
13371 Select 1 into l_check_tax_overlap
13372 from fa_transaction_headers hdr,
13373 fa_transaction_headers tax
13374 where hdr.transaction_header_id < t_transaction_header_id(i) --Transaction header id for TAX transaction
13375 and hdr.transaction_date_entered <= t_transaction_date_entered(i) --Transaction date for TAX transaction
13376 and hdr.transaction_type_code like '%RETIREMENT'
13377 and hdr.book_type_code = tax.book_type_code
13378 and hdr.asset_id = tax.asset_id
13379 and tax.transaction_header_id = t_transaction_header_id(i);
13380 exception when no_data_found then
13381 l_check_tax_overlap := 0;
13382 end ;
13383 if ( l_check_tax_overlap = 1) then
13384 raise invalid_trx_to_overlap;
13385 end if;
13386 end if;
13387
13388 l_dbr_event_type := l_default_dbr_event_type;
13389 l_impair_reserve := 0;
13390
13391
13392 if (p_log_level_rec.statement_level) then
13393 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 4.1.1 IN For-Loop of c_get_ths_adj ==========','', p_log_level_rec => p_log_level_rec);
13394 fa_debug_pkg.add(l_calling_fn, '++ IN c_get_ths_adj: t_which_select('||to_char(i)||')',t_which_select(i));
13395 fa_debug_pkg.add(l_calling_fn, '++ t_transaction_header_id('||to_char(i)||')',t_transaction_header_id(i));
13396 fa_debug_pkg.add(l_calling_fn, '++ t_transaction_type_code('||to_char(i)||')',t_transaction_type_code(i));
13400 fa_debug_pkg.add(l_calling_fn, '++ t_transaction_subtype('||to_char(i)||')',t_transaction_subtype(i));
13397 fa_debug_pkg.add(l_calling_fn, '++ t_transaction_date_entered('||to_char(i)||')',to_char(t_transaction_date_entered(i),'MM/DD/YYYY'));
13398 fa_debug_pkg.add(l_calling_fn, '++ t_amortization_start_date('||to_char(i)||')',to_char(t_amortization_start_date(i),'MM/DD/YYYY'));
13399 fa_debug_pkg.add(l_calling_fn, '++ t_date_effective('||to_char(i)||')',to_char(t_date_effective(i),'MM/DD/YYYY HH24:MI:SS'));
13401 fa_debug_pkg.add(l_calling_fn, '++ l_dbr_event_type',l_dbr_event_type, p_log_level_rec => p_log_level_rec);
13402 end if;
13403
13404
13405 if (p_log_level_rec.statement_level) then
13406 fa_debug_pkg.add(l_calling_fn, '++ BEFORE SETTING', '...', p_log_level_rec => p_log_level_rec);
13407 fa_debug_pkg.add(l_calling_fn, '++ l_adj_processed', l_adj_processed, p_log_level_rec => p_log_level_rec);
13408 fa_debug_pkg.add(l_calling_fn, '++ l_process_this_trx', l_process_this_trx, p_log_level_rec => p_log_level_rec);
13409 fa_debug_pkg.add(l_calling_fn, '++ l_add_processed', l_add_processed, p_log_level_rec => p_log_level_rec);
13410 end if;
13411
13412 --
13413 -- don't want to process addition after any trx.
13414 --
13415 if (not(l_adj_processed)) and
13416 (t_transaction_type_code(i) not in ('ADDITION', 'ADDITION/VOID', 'CIP ADIITION', 'CIP ADDITION/VOID')) then
13417 l_adj_processed := TRUE;
13418 elsif (l_adj_processed) and
13419 (t_transaction_type_code(i) like '%ADDITION%') then
13420 l_process_this_trx := FALSE;
13421 end if;
13422
13423 --
13424 -- don't want to process addition/void after addition
13425 --
13426 if (not(l_add_processed)) and
13427 (t_transaction_type_code(i) = 'ADDITION') then
13428 l_add_processed := TRUE;
13429 elsif (l_add_processed) and
13430 (p_trans_rec.transaction_type_code <> 'ADDITION/VOID') and
13431 (t_transaction_type_code(i) in ('ADDITION/VOID', 'CIP ADDITION/VOID')) then
13432 l_process_this_trx := FALSE;
13433 end if;
13434
13435 l_is_this_void := FALSE;
13436
13437 if (not(l_adj_processed)) and
13438 (not(l_add_processed)) then
13439 l_is_this_void := TRUE;
13440 end if;
13441
13442
13443 if (p_log_level_rec.statement_level) then
13444 fa_debug_pkg.add(l_calling_fn, '++ AFTER SETTING', '...', p_log_level_rec => p_log_level_rec);
13445 fa_debug_pkg.add(l_calling_fn, '++ l_adj_processed', l_adj_processed, p_log_level_rec => p_log_level_rec);
13446 fa_debug_pkg.add(l_calling_fn, '++ l_process_this_trx', l_process_this_trx, p_log_level_rec => p_log_level_rec);
13447 fa_debug_pkg.add(l_calling_fn, '++ l_add_processed', l_add_processed, p_log_level_rec => p_log_level_rec);
13448 fa_debug_pkg.add(l_calling_fn, '++ l_is_this_void', l_is_this_void, p_log_level_rec => p_log_level_rec);
13449 end if;
13450
13451
13452 l_asset_fin_rec_old := l_asset_fin_rec_new;
13453
13454 l_trans_rec := null;
13455 l_next_period_rec := null;
13456 l_member_asset_id := null;
13457 l_member_trx_key := null;
13458
13459 l_trans_rec.transaction_header_id := t_transaction_header_id(i);
13460 l_trans_rec.transaction_type_code := t_transaction_type_code(i);
13461 l_trans_rec.transaction_date_entered := t_transaction_date_entered(i);
13462 l_trans_rec.who_info.creation_date := t_date_effective(i);
13463 l_trans_rec.transaction_name := t_transaction_name(i);
13464 l_trans_rec.source_transaction_header_id := t_source_transaction_header_id(i);
13465 l_trans_rec.mass_reference_id := t_mass_reference_id(i);
13466 l_trans_rec.transaction_subtype := t_transaction_subtype(i);
13467 l_trans_rec.transaction_key := t_transaction_key(i);
13468 l_trans_rec.amortization_start_date := t_amortization_start_date(i);
13469 l_trans_rec.calling_interface := t_calling_interface(i);
13470 l_trans_rec.mass_transaction_id := t_mass_transaction_id(i);
13471 l_trans_rec.deprn_override_flag := t_deprn_override_flag(i);
13472 l_trans_rec.member_transaction_header_id := t_member_transaction_header_id(i);
13473 l_trans_rec.trx_reference_id := t_trx_reference_id(i);
13474 l_invoice_transaction_id := t_invoice_transaction_id(i);
13475
13476 --tk_util.DumpTrxRec(l_trans_rec, to_char(i));
13477
13478 if (i=1) or
13479 (l_trans_rec.transaction_date_entered > l_period_rec.calendar_period_close_date) then
13480
13481 -- Bug6190904: Need to determine correct date to find out from which period catch-up
13482 -- needs to be calculated. This is true even for the adjustment.
13483 if (i=1) then
13484
13485 OPEN c_get_prorate_date(px_asset_fin_rec_new.date_placed_in_service
13486 , px_asset_fin_rec_new.prorate_convention_code);
13487 FETCH c_get_prorate_date INTO l_prorate_date, l_start_date, l_end_date;
13488 CLOSE c_get_prorate_date;
13489
13490 end if;
13491
13492 if (nvl(l_trans_rec.amortization_start_date,l_trans_rec.transaction_date_entered) > l_end_date) then
13493 l_prorate_date := nvl(l_trans_rec.amortization_start_date,l_trans_rec.transaction_date_entered);
13494 end if;
13495 -- End of Bug6190904
13496
13497 FOR k IN 2..t_transaction_header_id.COUNT
13498 LOOP
13499 if t_transaction_date_entered(k) < nvl(l_trans_rec.amortization_start_date,l_trans_rec.transaction_date_entered) then
13503 END LOOP;
13500 l_prorate_date := l_trans_rec.transaction_date_entered;
13501 exit;
13502 end if;
13504
13505
13506 -- Bug6190904: use date determined by above logic instead of
13507 -- transaction_date_entered
13508 if not GetPeriodInfo(to_number(to_char(l_prorate_date, 'J')),
13509 p_asset_hdr_rec.book_type_code,
13510 p_mrc_sob_type_code,
13511 p_asset_hdr_rec.set_of_books_id,
13512 l_period_rec,
13513 p_log_level_rec) then
13514 if (p_log_level_rec.statement_level) then
13515 fa_debug_pkg.add(l_calling_fn, 'Error calling',
13516 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
13517 end if;
13518
13519 raise calc_failed;
13520 end if;
13521
13522 end if;
13523
13524 --tk_util.DumpPerRec(l_period_rec, to_char(i));
13525
13526 --
13527 -- Special processes for first transaction only
13528 --
13529 if (i = 1) and (l_row_count <= l_limit) then
13530
13531 -- Find least transaction header id
13532 FOR j IN 1..t_transaction_header_id.COUNT LOOP
13533
13534 if (p_log_level_rec.statement_level) then
13535 fa_debug_pkg.add(l_calling_fn, 'This is first trx', l_incoming_thid, p_log_level_rec => p_log_level_rec);
13536 fa_debug_pkg.add(l_calling_fn, 't_transaction_header_id(j)', t_transaction_header_id(j));
13537 fa_debug_pkg.add(l_calling_fn, 't_transaction_type_code(j)', t_transaction_type_code(j));
13538 end if;
13539
13540 --Bug6933891
13541 -- This is for void trx to be pocessed if that is dated before addition trx.
13542 if (t_transaction_type_code(i) = 'ADDITION') and
13543 (not l_add_void_exist) then --Bug6933891 necessary
13544 l_add_exist := TRUE;
13545 elsif (t_transaction_type_code(j) = 'ADDITION') and
13546 (not l_add_void_exist) then --Bug6933891
13547 l_add_exist := TRUE;
13548 elsif (t_transaction_type_code(j) = 'ADDITION/VOID') then
13549 l_add_void_exist := TRUE;
13550 end if;
13551
13552 if (p_log_level_rec.statement_level) then
13553 fa_debug_pkg.add(l_calling_fn, 'l_add_void_exist', l_add_void_exist, p_log_level_rec => p_log_level_rec);
13554 fa_debug_pkg.add(l_calling_fn, 'l_add_exist', l_add_exist, p_log_level_rec => p_log_level_rec);
13555 end if;
13556
13557
13558 if (nvl(l_least_thid, l_incoming_thid) <> t_transaction_header_id(j)) and
13559 (nvl(l_least_thid, l_incoming_thid) > t_transaction_header_id(j)) and
13560 (((p_asset_type_rec.asset_type = G_ASSET_TYPE_GROUP) and
13561 (t_transaction_header_id(j) is not null)) or
13562 (p_asset_type_rec.asset_type <> G_ASSET_TYPE_GROUP)) then
13563
13564 --
13565 -- Cannot process addition after adjustment??? not sure this will work
13566 -- Also, do not process addition void after addition
13567 --
13568 -- Bug4490414: Commenting out part of the following if condition
13569 -- 2nd part of if (after or) does not have to check the 1st
13570 -- trx type code. Commenting out "t_transaction_type_code(i) = 'ADDITION' and"
13571 -- from 2nd part of if below.
13572 -- 12919991/10014689 - Added last condition to avoid value in l_least_thid when
13573 -- we are processing addition/void row too.
13574 if (t_transaction_type_code(i) <> 'ADDITION' and
13575 t_transaction_type_code(j) = 'ADDITION' ) or
13576 (t_transaction_type_code(j) like '%ADDITION/VOID' ) or
13577 (t_transaction_type_code(i) like '%ADDITION/VOID' ) then
13578 null;
13579 else
13580 l_least_thid := t_transaction_header_id(j);
13581 end if;
13582 end if;
13583
13584 END LOOP;
13585
13586 if (p_log_level_rec.statement_level) then
13587 fa_debug_pkg.add(l_calling_fn, 'Least transaction header id',
13588 l_least_thid, p_log_level_rec => p_log_level_rec);
13589 end if;
13590
13591
13592 l_temp_period_counter := l_period_rec.period_counter;
13593 l_period_rec.period_counter := l_period_rec.period_counter -1;
13594
13595 if not GetDeprnRec (
13596 p_trans_rec => l_trans_rec,
13597 p_asset_hdr_rec => p_asset_hdr_rec,
13598 p_period_rec => l_period_rec,
13599 p_incoming_trx_type_code => p_trans_rec.transaction_type_code,
13600 x_asset_deprn_rec => l_asset_deprn_rec,
13601 p_mrc_sob_type_code => p_mrc_sob_type_code,
13602 p_unplanned_exp => l_unplanned_exp,
13603 p_log_level_rec => p_log_level_rec) then
13604
13605 if (p_log_level_rec.statement_level) then
13606 fa_debug_pkg.add(l_calling_fn, 'Error calling',
13607 'GetDeprnRec', p_log_level_rec => p_log_level_rec);
13608 end if;
13609
13610 raise calc_failed;
13614
13611 end if;
13612
13613 l_period_rec.period_counter := l_temp_period_counter;
13615 --tk_util.DumpDeprnRec(l_asset_deprn_rec, 'GD');
13616
13617 l_dpr_in.asset_num := p_asset_desc_rec.asset_number;
13618 l_dpr_in.calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
13619 l_dpr_in.book := p_asset_hdr_rec.book_type_code;
13620 l_dpr_in.asset_id := p_asset_hdr_rec.asset_id;
13621
13622 --
13623 -- Need to reset ytd amounts for first period of the fiscal year
13624 --
13625 if (l_period_rec.period_num = 1) then
13626 l_asset_deprn_rec.ytd_deprn := l_asset_deprn_rec.deprn_amount;
13627 l_asset_deprn_rec.bonus_ytd_deprn := l_asset_deprn_rec.bonus_deprn_amount;
13628 l_asset_deprn_rec.ytd_impairment := l_asset_deprn_rec.impairment_amount;
13629 end if;
13630 end if; -- End of Special processes for first transaction
13631
13632 if (p_log_level_rec.statement_level) then
13633 fa_debug_pkg.add(l_calling_fn, 'l_add_void_exist', l_add_void_exist, p_log_level_rec => p_log_level_rec);
13634 fa_debug_pkg.add(l_calling_fn, 'l_add_exist', l_add_exist, p_log_level_rec => p_log_level_rec);
13635 fa_debug_pkg.add(l_calling_fn, 'l_process_this_trx', l_process_this_trx, p_log_level_rec => p_log_level_rec);
13636 end if;
13637
13638 --Bug6933891
13639 -- This is for void trx to be pocessed if that is dated before addition trx.
13640 -- Setting void trx as not void in this loop so that the trx will be processed.
13641 if (l_add_void_exist) and (not(l_add_exist)) and
13642 (t_transaction_type_code(i) = 'ADDITION/VOID') then
13643 l_process_this_trx := TRUE;
13644 l_is_this_void := FALSE;
13645
13646 if (p_log_level_rec.statement_level) then
13647 fa_debug_pkg.add(l_calling_fn, 'Process this trx even if this is void trx', t_transaction_type_code(i));
13648 fa_debug_pkg.add(l_calling_fn, 'l_is_this_void', l_is_this_void, p_log_level_rec => p_log_level_rec);
13649 fa_debug_pkg.add(l_calling_fn, 'l_process_this_trx', l_process_this_trx, p_log_level_rec => p_log_level_rec);
13650 end if;
13651 end if;
13652
13653 if (l_asset_fin_rec_old.recoverable_cost is null) then
13654 -- This means this is the first time coming through in this main loop
13655
13656 if (not FA_CALC_DEPRN_BASIS1_PKG.GET_EOFY_EOP (
13657 p_asset_id => p_asset_hdr_rec.asset_id,
13658 p_book_type_code => p_asset_hdr_rec.book_type_code,
13659 p_fiscal_year => l_period_rec.fiscal_year,
13660 p_asset_type => p_asset_type_rec.asset_type,
13661 p_period_num => l_period_rec.period_num,
13662 p_mrc_sob_type_code => p_mrc_sob_type_code,
13663 p_set_of_books_id => p_asset_hdr_rec.set_of_books_id,
13664 x_eofy_recoverable_cost => l_eofy_rec_cost,
13665 x_eofy_salvage_value => l_eofy_sal_val,
13666 x_eop_recoverable_cost => l_eop_rec_cost,
13667 x_eop_salvage_value => l_eop_sal_val, p_log_level_rec => p_log_level_rec)) then
13668 if (p_log_level_rec.statement_level) then
13669 fa_debug_pkg.add(l_calling_fn, 'Error calling',
13670 'FA_CALC_DEPRN_BASIS1_PKG.GET_EOFY_EOP', p_log_level_rec => p_log_level_rec);
13671 end if;
13672
13673 raise calc_failed;
13674
13675 end if;
13676
13677 if (l_eofy_rec_cost is null) then
13678 l_eofy_rec_cost := 0;
13679 l_eofy_sal_val := 0;
13680 end if;
13681
13682 l_eofy_fy := l_period_rec.fiscal_year;
13683
13684 if (l_eop_rec_cost is null) then
13685 l_eop_rec_cost := 0;
13686 l_eop_sal_val := 0;
13687 end if;
13688
13689 elsif (l_eofy_fy < l_period_rec.fiscal_year) then
13690 -- set new end of fiscal year new recoverable cost, salvage
13691 -- value and previous fiscal year.
13692
13693 l_eofy_rec_cost := l_asset_fin_rec_old.recoverable_cost;
13694 l_eofy_sal_val := l_asset_fin_rec_old.salvage_value;
13695 l_eofy_fy := l_period_rec.fiscal_year;
13696
13697 end if;
13698
13699 --Bug 13620748 start
13700 if p_asset_hdr_rec.period_of_addition = 'Y' and
13701 (p_asset_deprn_rec_adj.deprn_reserve <> 0 OR p_asset_deprn_rec_adj.ytd_deprn <> 0) and
13702 G_release <> 11 then
13703 l_amort_res_adj_poa := TRUE ;
13704 if (p_log_level_rec.statement_level) then
13705 fa_debug_pkg.add(l_calling_fn, 'User has done an amortized reserve adj', 'TRUE', p_log_level_rec => p_log_level_rec);
13706 end if;
13707 end if;
13708 -- Bug 13620748 end
13709
13710 if (p_log_level_rec.statement_level) then
13711 fa_debug_pkg.add(l_calling_fn, 'l_eofy_fy', l_eofy_fy, p_log_level_rec => p_log_level_rec);
13712 fa_debug_pkg.add(l_calling_fn, 'l_eofy_rec_cost', l_eofy_rec_cost, p_log_level_rec => p_log_level_rec);
13713 fa_debug_pkg.add(l_calling_fn, 'l_eofy_sal_val', l_eofy_sal_val, p_log_level_rec => p_log_level_rec);
13714 fa_debug_pkg.add(l_calling_fn, 'l_eop_rec_cost', l_eop_rec_cost, p_log_level_rec => p_log_level_rec);
13715 fa_debug_pkg.add(l_calling_fn, 'l_eop_sal_val', l_eop_sal_val, p_log_level_rec => p_log_level_rec);
13716 end if;
13717
13721 fa_debug_pkg.add(l_calling_fn, 'Entered Transaction', 'TRUE', p_log_level_rec => p_log_level_rec);
13718 if (l_trans_rec.transaction_header_id = l_incoming_thid) then
13719
13720 if (p_log_level_rec.statement_level) then
13722 end if;
13723
13724 --Bug 13620748
13725 -- we will avoid this only if user has done reserve adj in POA
13726 -- this should not restricted for Addition transaction
13727 if NOT (l_amort_res_adj_poa and p_trans_rec.transaction_type_code = 'ADJUSTMENT') then
13728
13729 l_asset_deprn_rec.deprn_reserve := l_asset_deprn_rec.deprn_reserve +
13730 nvl(p_asset_deprn_rec_adj.deprn_reserve, 0);
13731 l_asset_deprn_rec.reval_deprn_reserve :=
13732 l_asset_deprn_rec.reval_deprn_reserve +
13733 nvl(p_asset_deprn_rec_adj.reval_deprn_reserve, 0);
13734 l_asset_deprn_rec.bonus_deprn_reserve :=
13735 l_asset_deprn_rec.bonus_deprn_reserve +
13736 nvl(p_asset_deprn_rec_adj.bonus_deprn_reserve, 0);
13737 l_asset_deprn_rec.impairment_reserve :=
13738 l_asset_deprn_rec.impairment_reserve +
13739 nvl(p_asset_deprn_rec_adj.impairment_reserve, 0);
13740
13741 -- Bug 9231768 : Populate ytd_deprn also.
13742 l_asset_deprn_rec.ytd_deprn := l_asset_deprn_rec.ytd_deprn +
13743 nvl(p_asset_deprn_rec_adj.ytd_deprn, 0);
13744 END IF;
13745
13746 l_use_fin_rec_adj := TRUE;
13747 l_use_new_deprn_rule := TRUE;
13748
13749 --+++++++ Setting this flag to resume depreciation calculation +++++
13750 if (l_calc_deprn_flag) then
13751 l_calc_deprn_flag := FALSE;
13752 end if;
13753 else
13754 if (p_log_level_rec.statement_level) then
13755 fa_debug_pkg.add(l_calling_fn, 'Entered Transaction', 'FALSE', p_log_level_rec => p_log_level_rec);
13756 end if;
13757
13758 l_use_fin_rec_adj := FALSE;
13759 end if;
13760
13761 if l_trans_rec.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET) then
13762
13763 l_reserve_retired := null;
13764
13765 if (p_mrc_sob_type_code = 'R') then
13766
13767 OPEN c_get_mc_retirement(nvl(l_trans_rec.member_transaction_header_id,
13768 l_trans_rec.transaction_header_id));
13769 FETCH c_get_mc_retirement INTO l_retirement_id,
13770 l_cost_retired,
13771 l_cost_of_removal,
13772 l_proceeds_of_sales,
13773 l_reserve_retired,
13774 l_eofy_reserve_retired,
13775 l_reval_reserve_retired,
13776 l_unrevalued_cost_retired,
13777 l_bonus_reserve_retired,
13778 l_impair_reserve_retired,
13779 l_recognize_gain_loss;
13780
13781 if c_get_mc_retirement%NOTFOUND then
13782 if (p_log_level_rec.statement_level) then
13783 fa_debug_pkg.add(l_calling_fn, 'Process this transaction', 'FALSE', p_log_level_rec => p_log_level_rec);
13784 end if;
13785
13786 l_process_this_trx := FALSE;
13787 else
13788 if (l_reserve_retired = 0) then
13789 OPEN c_get_mc_rsv_retired (nvl(l_trans_rec.member_transaction_header_id,
13790 l_trans_rec.transaction_header_id));
13791 FETCH c_get_mc_rsv_retired INTO l_reserve_retired;
13792 CLOSE c_get_mc_rsv_retired;
13793 end if;
13794
13795 if (p_log_level_rec.statement_level) then
13796 fa_debug_pkg.add(l_calling_fn, 'Process this '||
13797 l_trans_rec.transaction_type_code, 'TRUE', p_log_level_rec => p_log_level_rec);
13798 end if;
13799 end if; -- c_get_mc_retirement%NOTFOUND
13800
13801 CLOSE c_get_mc_retirement;
13802 else
13803 --tk_util.debug('thid: '||to_char(nvl(l_trans_rec.member_transaction_header_id, l_trans_rec.transaction_header_id)));
13804 OPEN c_get_retirement(nvl(l_trans_rec.member_transaction_header_id,
13805 l_trans_rec.transaction_header_id));
13806 FETCH c_get_retirement INTO l_retirement_id,
13807 l_cost_retired,
13808 l_cost_of_removal,
13809 l_proceeds_of_sales,
13810 l_reserve_retired,
13811 l_eofy_reserve_retired,
13812 l_reval_reserve_retired,
13813 l_unrevalued_cost_retired,
13814 l_bonus_reserve_retired,
13815 l_impair_reserve_retired,
13816 l_recognize_gain_loss;
13817
13818 if c_get_retirement%NOTFOUND then
13819 if (p_log_level_rec.statement_level) then
13823 l_process_this_trx := FALSE;
13820 fa_debug_pkg.add(l_calling_fn, 'Process this transaction', 'FALSE', p_log_level_rec => p_log_level_rec);
13821 end if;
13822
13824 else
13825
13826 if (l_reserve_retired = 0) then
13827 OPEN c_get_rsv_retired (nvl(l_trans_rec.member_transaction_header_id,
13828 l_trans_rec.transaction_header_id));
13829 FETCH c_get_rsv_retired INTO l_reserve_retired;
13830 CLOSE c_get_rsv_retired;
13831 end if;
13832
13833 if (p_log_level_rec.statement_level) then
13834 fa_debug_pkg.add(l_calling_fn, 'Process this '||
13835 l_trans_rec.transaction_type_code, 'TRUE', p_log_level_rec => p_log_level_rec);
13836 end if;
13837
13838 end if; -- c_get_retirement%NOTFOUND
13839
13840 CLOSE c_get_retirement;
13841
13842 end if; -- (p_mrc_sob_type_code = 'R')
13843
13844 if (p_log_level_rec.statement_level) then
13845 fa_debug_pkg.add(l_calling_fn, 'Retirement Id',
13846 l_retirement_id, p_log_level_rec => p_log_level_rec);
13847 fa_debug_pkg.add(l_calling_fn, 'Retired Reserve',
13848 l_reserve_retired, p_log_level_rec => p_log_level_rec);
13849 end if;
13850
13851 elsif l_trans_rec.transaction_type_code = G_TRX_TYPE_REV then
13852
13853 if (p_mrc_sob_type_code = 'R') then
13854 OPEN c_get_mc_reval_rsv(nvl(l_trans_rec.member_transaction_header_id,
13855 l_trans_rec.transaction_header_id));
13856 FETCH c_get_mc_reval_rsv INTO l_reval_reserve;
13857 CLOSE c_get_mc_reval_rsv;
13858
13859 OPEN c_get_mc_bonus_reval_rsv(nvl(l_trans_rec.member_transaction_header_id,
13860 l_trans_rec.transaction_header_id));
13861 FETCH c_get_mc_bonus_reval_rsv INTO l_reval_bonus_reserve;
13862 CLOSE c_get_mc_bonus_reval_rsv;
13863 OPEN c_get_mc_impair_rsv(nvl(l_trans_rec.member_transaction_header_id,
13864 l_trans_rec.transaction_header_id),
13865 G_TRX_TYPE_REV);
13866 FETCH c_get_mc_impair_rsv INTO l_reval_impair_reserve;
13867 CLOSE c_get_mc_impair_rsv;
13868
13869 else
13870 OPEN c_get_reval_rsv(nvl(l_trans_rec.member_transaction_header_id,
13871 l_trans_rec.transaction_header_id));
13872 FETCH c_get_reval_rsv INTO l_reval_reserve;
13873 CLOSE c_get_reval_rsv;
13874
13875 OPEN c_get_bonus_reval_rsv(nvl(l_trans_rec.member_transaction_header_id,
13876 l_trans_rec.transaction_header_id));
13877 FETCH c_get_bonus_reval_rsv INTO l_reval_bonus_reserve;
13878 CLOSE c_get_bonus_reval_rsv;
13879
13880 OPEN c_get_impair_rsv(nvl(l_trans_rec.member_transaction_header_id,
13881 l_trans_rec.transaction_header_id),
13882 G_TRX_TYPE_REV);
13883 FETCH c_get_impair_rsv INTO l_reval_impair_reserve;
13884 CLOSE c_get_impair_rsv;
13885
13886 end if;
13887
13888
13889 if (p_log_level_rec.statement_level) then
13890 fa_debug_pkg.add(l_calling_fn, 'Revaluation Reserve',
13891 l_reval_reserve, p_log_level_rec => p_log_level_rec);
13892 fa_debug_pkg.add(l_calling_fn, 'Revaluation Reserve',
13893 l_reval_bonus_reserve, p_log_level_rec => p_log_level_rec);
13894 end if;
13895
13896 elsif (l_trans_rec.transaction_key = 'IM') then
13897 if (p_mrc_sob_type_code = 'R') then
13898 OPEN c_get_mc_impair_rsv(nvl(l_trans_rec.member_transaction_header_id,
13899 l_trans_rec.transaction_header_id),
13900 G_TRX_TYPE_ADJ);
13901 FETCH c_get_mc_impair_rsv INTO l_impair_reserve;
13902 CLOSE c_get_mc_impair_rsv;
13903 else
13904 OPEN c_get_impair_rsv(nvl(l_trans_rec.member_transaction_header_id,
13905 l_trans_rec.transaction_header_id),
13906 G_TRX_TYPE_ADJ);
13907 FETCH c_get_impair_rsv INTO l_impair_reserve;
13908 CLOSE c_get_impair_rsv;
13909 end if;
13910
13911 if (p_log_level_rec.statement_level) then
13912 fa_debug_pkg.add(l_calling_fn, 'Impairment Reserve', l_impair_reserve, p_log_level_rec => p_log_level_rec);
13913 end if;
13914
13915 end if; -- l_trans_rec.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)
13916
13917 --
13918 -- Construct new fa_books row.
13919 -- For first transaction, also get initial fa_books row.
13920 if (l_process_this_trx) or
13921 ((i = 1) and (l_row_count < l_limit)) then
13922
13923 if (p_log_level_rec.statement_level) then
13924 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 6.0 : Calling GetFinRec ==========','', p_log_level_rec => p_log_level_rec);
13928 -- Bug # 8356539 added below code to pass deprn limit type to
13925 fa_debug_pkg.add(l_calling_fn, '++ l_trans_rec.transaction_header_id', l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
13926 end if;
13927
13929 -- adjustment api when called from backend
13930 if l_asset_fin_rec_adj.deprn_limit_type is null and p_trans_rec.calling_interface <> 'FAXASSET'
13931 and l_use_fin_rec_adj then
13932 l_asset_fin_rec_adj.deprn_limit_type := p_asset_fin_rec_old.deprn_limit_type;
13933 end if;
13934
13935 if not GetFinRec(p_trans_rec => l_trans_rec,
13936 p_asset_hdr_rec => p_asset_hdr_rec,
13937 p_asset_type_rec => p_asset_type_rec,
13938 px_asset_fin_rec => l_asset_fin_rec_old,
13939 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
13940 p_asset_fin_rec_new => px_asset_fin_rec_new,
13941 x_asset_fin_rec_new => l_asset_fin_rec_new,
13942 p_init_transaction_header_id => l_least_thid,
13943 p_use_fin_rec_adj => l_use_fin_rec_adj,
13944 p_use_new_deprn_rule => l_use_new_deprn_rule,
13945 p_process_this_trx => (l_process_this_trx or l_is_this_void),
13946 x_dpis_change => l_dpis_change,
13947 p_mrc_sob_type_code => p_mrc_sob_type_code,
13948 p_log_level_rec => p_log_level_rec) then
13949 if (p_log_level_rec.statement_level) then
13950 fa_debug_pkg.add(l_calling_fn, 'Error calling',
13951 'GetFinRec', p_log_level_rec => p_log_level_rec);
13952 end if;
13953
13954 raise calc_failed;
13955 end if;
13956
13957 --
13958 -- This portion of codes are relocated from before GetFinRec because it sometime
13959 -- requires to find old cost(new cost - cost retired).
13960 --
13961 if (l_trans_rec.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)) then
13962 if (l_reserve_retired <> 0) then
13963 l_reserve_retired := l_asset_deprn_rec.deprn_reserve *
13964 (l_cost_retired /nvl(l_asset_fin_rec_old.cost,l_asset_fin_rec_new.cost - l_cost_retired));
13965 if not FA_UTILS_PKG.faxrnd(l_reserve_retired, p_asset_hdr_rec.book_type_code, p_asset_hdr_rec.set_of_books_id,p_log_level_rec => p_log_level_rec) then
13966 fa_debug_pkg.add(l_calling_fn, 'calling FA_UTILS_PKG.faxrnd', 'FAILED', p_log_level_rec => p_log_level_rec);
13967 raise calc_failed;
13968 end if;
13969 end if;
13970
13971 if (p_log_level_rec.statement_level) then
13972 fa_debug_pkg.add(l_calling_fn, 'Recalculated Reserve Retired',
13973 l_reserve_retired, p_log_level_rec => p_log_level_rec);
13974 end if;
13975
13976 -- Populate local retire rec for depreciable basis to bahave like retirement
13977 l_asset_retire_rec.cost_retired := l_cost_retired;
13978 l_asset_retire_rec.proceeds_of_sale := l_proceeds_of_sales;
13979 l_asset_retire_rec.cost_of_removal := l_cost_of_removal;
13980 l_asset_retire_rec.detail_info.nbv_retired := l_cost_retired - l_reserve_retired;
13981
13982 l_dbr_event_type := 'RETIREMENT';
13983
13984 end if; -- l_trans_rec.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET)
13985
13986 if (l_dpis_change) then
13987 if (p_mrc_sob_type_code = 'R') then
13988 OPEN c_get_mc_brow;
13989 FETCH c_get_mc_brow INTO l_brow_ytd_deprn, l_brow_deprn_reserve;
13990 CLOSE c_get_mc_brow;
13991 else
13992 OPEN c_get_brow;
13993 FETCH c_get_brow INTO l_brow_ytd_deprn, l_brow_deprn_reserve;
13994 CLOSE c_get_brow;
13995 end if;
13996 --tk_util.debug('check: '||to_char(l_brow_ytd_deprn)||':'||to_char(l_brow_deprn_reserve));
13997 --
13998 -- need to initialize l_asset_deprn_rec with B row.
13999 if (p_log_level_rec.statement_level) then
14000 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 6.5 : Resetting l_asset_deprn_rec to ZERO due to DPIS Change ==========','', p_log_level_rec => p_log_level_rec);
14001 end if;
14002
14003 l_asset_deprn_rec.deprn_amount := 0;
14004 l_asset_deprn_rec.ytd_deprn := 0; --bug 8540563 nvl(l_brow_ytd_deprn, 0);
14005 l_asset_deprn_rec.deprn_reserve := 0; --bug 8540563 nvl(l_brow_deprn_reserve, 0);
14006 l_asset_deprn_rec.prior_fy_expense := 0;
14007 l_asset_deprn_rec.bonus_deprn_amount := 0;
14008 l_asset_deprn_rec.bonus_ytd_deprn := 0;
14009 l_asset_deprn_rec.bonus_deprn_reserve := 0;
14010 l_asset_deprn_rec.prior_fy_bonus_expense := 0;
14011 l_asset_deprn_rec.impairment_amount := 0;
14012 l_asset_deprn_rec.ytd_impairment := 0;
14013 l_asset_deprn_rec.impairment_reserve := 0;
14014 l_asset_deprn_rec.reval_amortization := 0;
14015 l_asset_deprn_rec.reval_amortization_basis := 0;
14016 l_asset_deprn_rec.reval_deprn_expense := 0;
14017 l_asset_deprn_rec.reval_ytd_deprn := 0;
14018 l_asset_deprn_rec.reval_deprn_reserve := 0;
14022
14019 l_asset_deprn_rec.production := 0;
14020 l_asset_deprn_rec.ytd_production := 0;
14021 l_asset_deprn_rec.ltd_production := 0;
14023 if (l_trans_rec.transaction_subtype = 'EXPENSED') then
14024 --Bug#4049799 l_dbr_event_type := 'EXPENSED_ADJ';
14025 l_dbr_event_type := l_default_dbr_event_type;
14026 end if;
14027
14028 if (p_log_level_rec.statement_level) then
14029 fa_debug_pkg.add(l_calling_fn, 'DPIS Change', l_dbr_event_type, p_log_level_rec => p_log_level_rec);
14030 fa_debug_pkg.add(l_calling_fn, 'new ytd_deprn', l_asset_deprn_rec.ytd_deprn, p_log_level_rec => p_log_level_rec);
14031 fa_debug_pkg.add(l_calling_fn, 'new deprn_reserve', l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
14032 end if;
14033 end if;
14034 --tk_util.debug('1 rec_cost: '||to_char(px_asset_fin_rec_new.recoverable_cost));
14035
14036 if l_trans_rec.transaction_type_code not in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET) then
14037 if ((i = 1) and not(l_start_from_first) and (l_process_addition = 0)) then
14041 elsif ((i = 1) and (l_row_count < l_limit)) then
14038 --tk_util.debug('toru: '||to_char(l_asset_deprn_rec.deprn_reserve));
14039 l_asset_fin_rec_new.eofy_reserve := l_asset_deprn_rec.deprn_reserve;
14040
14042 --
14043 -- if this is member or will be a member, l_eofy_reserve may not be populated
14044 -- in GetFinRec so use the one returned by GetEofyReserve function.
14045 --
14046 if ((p_asset_fin_rec_old.group_asset_id is null and
14047 px_asset_fin_rec_new.group_asset_id is null) or
14048 (nvl(px_asset_fin_rec_new.member_rollup_flag,'N')='Y') --bug#15897249
14049 )
14050 then
14051 l_asset_fin_rec_new.eofy_reserve := l_eofy_reserve;
14052 end if;
14053 else
14054 l_asset_fin_rec_new.eofy_reserve := l_asset_fin_rec_old.eofy_reserve;
14055 end if;
14056 end if;
14057
14058 else
14059 l_asset_fin_rec_new := l_asset_fin_rec_old;
14060 end if; -- (l_process_this_trx)
14061
14062 l_impair_adj_cost := l_asset_fin_rec_new.adjusted_cost;
14063 l_impair_raf := l_asset_fin_rec_new.rate_adjustment_factor;
14064 l_impair_formula_factor := l_asset_fin_rec_new.formula_factor;
14065
14066 if (l_impair_reserve <> 0) then
14067 l_asset_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve + l_impair_reserve;
14068 end if;
14069
14070 /*Bug# 8520733 - if negative cost adjustmemnt is done to make cost to zero there will be entry to reverse
14071 impairment expense take it and substract from current impairment reserve to ensure
14072 calculation of correct adj_cost for a overlapped adjustment later. */
14073 if l_trans_rec.transaction_type_code = G_TRX_TYPE_ADJ and nvl(l_trans_rec.transaction_key,'XX') <> 'IM' then
14074 if (p_mrc_sob_type_code = 'R') then
14075 OPEN c_get_mc_impair_exp(nvl(l_trans_rec.member_transaction_header_id,
14076 l_trans_rec.transaction_header_id),
14077 'DEPRECIATION');
14078 FETCH c_get_mc_impair_exp INTO l_impair_reserve;
14079 CLOSE c_get_mc_impair_exp;
14080 else
14081 OPEN c_get_impair_exp(nvl(l_trans_rec.member_transaction_header_id,
14082 l_trans_rec.transaction_header_id),
14083 'DEPRECIATION');
14084 FETCH c_get_impair_exp INTO l_impair_reserve;
14085 CLOSE c_get_impair_exp;
14086 end if;
14087 l_asset_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve - l_impair_reserve;
14088 if (p_log_level_rec.statement_level) then
14089 fa_debug_pkg.add(l_calling_fn, 'Impairment reserve reversed', l_impair_reserve, p_log_level_rec => p_log_level_rec);
14090 end if;
14091 end if;
14092 --tk_util.debug('1eofy rsv: '||to_char(l_asset_fin_rec_new.eofy_reserve));
14093
14094 l_dpr_in.adj_cost := l_asset_fin_rec_new.recoverable_cost;
14095 l_dpr_in.rec_cost := l_asset_fin_rec_new.recoverable_cost;
14096 l_dpr_in.reval_amo_basis := l_asset_fin_rec_new.reval_amortization_basis; /*Bug 12420615 - Reverted 7256190 */
14097 l_dpr_in.deprn_rsv := 0;
14098 l_dpr_in.reval_rsv := l_asset_deprn_rec.reval_deprn_reserve;
14099 l_dpr_in.adj_rate := l_asset_fin_rec_new.adjusted_rate;
14103 l_dpr_in.ltd_prod := 0;
14100 l_dpr_in.rate_adj_factor := l_asset_fin_rec_new.rate_adjustment_factor;
14101 l_dpr_in.capacity := l_asset_fin_rec_new.production_capacity;
14102 l_dpr_in.adj_capacity := l_asset_fin_rec_new.adjusted_capacity;
14104
14105 l_dpr_in.ceil_name := l_asset_fin_rec_new.ceiling_name;
14106 l_dpr_in.bonus_rule := l_asset_fin_rec_new.bonus_rule;
14107 l_dpr_in.method_code := l_asset_fin_rec_new.deprn_method_code;
14108 l_dpr_in.jdate_in_service :=
14109 to_number(to_char(l_asset_fin_rec_new.date_placed_in_service, 'J'));
14110 l_dpr_in.prorate_jdate := to_number(to_char(l_asset_fin_rec_new.prorate_date, 'J'));
14111 l_dpr_in.deprn_start_jdate :=
14112 to_number(to_char(l_asset_fin_rec_new.deprn_start_date, 'J'));
14113 l_dpr_in.jdate_retired := 0; -- don't know this is correct or not
14114 l_dpr_in.ret_prorate_jdate := 0; -- don't know this is correct or not
14115 l_dpr_in.life := l_asset_fin_rec_new.life_in_months;
14116
14117 l_dpr_in.rsv_known_flag := TRUE;
14118 l_dpr_in.salvage_value := l_asset_fin_rec_new.salvage_value;
14119 l_dpr_in.pc_life_end := l_asset_fin_rec_new.period_counter_life_complete;
14120 l_dpr_in.adj_rec_cost := l_asset_fin_rec_new.adjusted_recoverable_cost;
14121 l_dpr_in.prior_fy_exp := 0; -- This needs to be 0 for this faxcde call
14122
14123 -- Bug:5291878
14124 l_dpr_in.deprn_rounding_flag := null;
14125
14126 l_dpr_in.deprn_override_flag := p_trans_rec.deprn_override_flag;
14127 l_dpr_in.used_by_adjustment := TRUE;
14128 l_dpr_in.ytd_deprn := 0; -- This needs to be 0 for this faxcde call
14129 l_dpr_in.short_fiscal_year_flag := l_asset_fin_rec_new.short_fiscal_year_flag;
14130 l_dpr_in.conversion_date := l_asset_fin_rec_new.conversion_date;
14131 l_dpr_in.prorate_date := l_asset_fin_rec_new.prorate_date;
14132 l_dpr_in.orig_deprn_start_date := l_asset_fin_rec_new.orig_deprn_start_date;
14133 l_dpr_in.old_adj_cost := l_asset_fin_rec_new.old_adjusted_cost;
14134 l_dpr_in.formula_factor := nvl(l_asset_fin_rec_new.formula_factor,
14135 l_asset_fin_rec_old.formula_factor);
14136 l_dpr_in.bonus_deprn_exp := l_asset_deprn_rec.bonus_deprn_amount;
14137 l_dpr_in.bonus_ytd_deprn := l_asset_deprn_rec.bonus_ytd_deprn;
14138 l_dpr_in.bonus_deprn_rsv := l_asset_deprn_rec.bonus_deprn_reserve;
14139 l_dpr_in.prior_fy_bonus_exp := l_asset_deprn_rec.prior_fy_bonus_expense;
14140 l_dpr_in.impairment_exp := l_asset_deprn_rec.impairment_amount;
14141 l_dpr_in.ytd_impairment := l_asset_deprn_rec.ytd_impairment;
14142 l_dpr_in.impairment_rsv := l_asset_deprn_rec.impairment_reserve;
14143
14144 l_dpr_in.tracking_method := l_asset_fin_rec_new.tracking_method;
14145 l_dpr_in.allocate_to_fully_ret_flag := l_asset_fin_rec_new.allocate_to_fully_ret_flag;
14146 l_dpr_in.allocate_to_fully_rsv_flag := l_asset_fin_rec_new.allocate_to_fully_rsv_flag;
14147 l_dpr_in.excess_allocation_option := l_asset_fin_rec_new.excess_allocation_option;
14151 l_dpr_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
14148 l_dpr_in.depreciation_option := l_asset_fin_rec_new.depreciation_option;
14149 l_dpr_in.member_rollup_flag := l_asset_fin_rec_new.member_rollup_flag;
14150 l_dpr_in.mrc_sob_type_code := p_mrc_sob_type_code;
14152 l_dpr_in.super_group_id := l_asset_fin_rec_new.super_group_id;
14153 l_dpr_in.over_depreciate_option := l_asset_fin_rec_new.over_depreciate_option;
14154
14155 --
14156 -- Not for what-if yet
14157 --
14158 l_running_mode := fa_std_types.FA_DPR_NORMAL;
14159 --tk_util.debug('2 rec_cost: '||to_char(px_asset_fin_rec_new.recoverable_cost));
14160
14161 if (l_process_this_trx) then
14162
14163 if (not fa_cache_pkg.fazccmt(
14164 l_asset_fin_rec_new.deprn_method_code,
14165 l_asset_fin_rec_new.life_in_months, p_log_level_rec => p_log_level_rec)) then
14166 if (p_log_level_rec.statement_level) then
14167 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14168 'fa_cache_pkg.fazccmt', p_log_level_rec => p_log_level_rec);
14169 end if;
14170
14171 raise calc_failed;
14172 end if;
14173
14174 l_energy_member := FALSE;
14175 --tk_util.debug('fa_cache_pkg.fazcdbr_record.rule_name: ' ||fa_cache_pkg.fazcdbr_record.rule_name);
14176 --tk_util.debug('p_asset_fin_rec_old.tracking_method: '||p_asset_fin_rec_old.tracking_method);
14177 --
14178 -- Set l_energy_member to skip periodic depreciation call in this functioin
14179 --
14183 end if;
14180 if (fa_cache_pkg.fazcdbr_record.rule_name = 'ENERGY PERIOD END BALANCE') and
14181 (p_asset_fin_rec_old.tracking_method = 'ALLOCATE') then
14182 l_energy_member := TRUE;
14184
14185 if (p_log_level_rec.statement_level) then
14186 fa_debug_pkg.add(l_calling_fn, 'Japan Tax: l_trans_rec.transaction_key',
14187 l_trans_rec.transaction_key, p_log_level_rec => p_log_level_rec);
14188 end if;
14189
14190 -- skip faxcde call for raf
14191 -- Bug4778244 Added the NVL to avoid condition not(null or false) which will
14192 -- always return NULL in the place of FALSE, which is incorrect
14193 if (not(((nvl(fa_cache_pkg.fazccmt_record.rate_source_rule, ' ') = fa_std_types.FAD_RSR_FLAT) and
14194 (nvl(fa_cache_pkg.fazccmt_record.deprn_basis_rule, ' ') = fa_std_types.FAD_DBR_COST) and
14195 (nvl(fa_cache_pkg.fazcdbr_record.rule_name, ' ') in ('PERIOD END BALANCE',
14196
14197 'PERIOD END AVERAGE',
14198 'USE RECOVERABLE COST',
14199 'BEGINNING PERIOD'))) or
14200 ((nvl(fa_cache_pkg.fazcdbr_record.rule_name,' ') = 'ENERGY PERIOD END BALANCE') and
14201 (nvl(p_asset_fin_rec_old.tracking_method,' ') = 'ALLOCATE')) or
14202 (nvl(l_trans_rec.transaction_key,'X') = 'ES') -- Japan Tax Phase3
14203 )) then
14204
14205 if not fa_cache_pkg.fazccp(fa_cache_pkg.fazcbc_record.prorate_calendar,
14206 fa_cache_pkg.fazcbc_record.fiscal_year_name,
14207 l_dpr_in.prorate_jdate,
14208 g_temp_number,
14209 l_dpr_in.y_begin,
14210 g_temp_integer, p_log_level_rec => p_log_level_rec) then
14211 if (p_log_level_rec.statement_level) then
14212 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14213 'fa_cache_pkg.fazccp', p_log_level_rec => p_log_level_rec);
14214 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.prorate_calendar',
14215 fa_cache_pkg.fazcbc_record.prorate_calendar, p_log_level_rec => p_log_level_rec);
14216 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.fiscal_year_name',
14217 fa_cache_pkg.fazcbc_record.fiscal_year_name, p_log_level_rec => p_log_level_rec);
14218
14219 end if;
14220
14221 raise calc_failed;
14222 end if;
14223
14224 if not fa_cache_pkg.fazcct(fa_cache_pkg.fazcbc_record.deprn_calendar, p_log_level_rec => p_log_level_rec) then
14225 raise calc_failed;
14226 end if;
14227
14228 l_dpr_in.p_cl_begin := 1;
14229
14230 if (l_period_rec.period_num = 1) then
14231 l_dpr_in.y_end := l_period_rec.fiscal_year - 1;
14232 l_dpr_in.p_cl_end := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
14233 else
14234 l_dpr_in.y_end := l_period_rec.fiscal_year;
14235 l_dpr_in.p_cl_end := l_period_rec.period_num - 1;
14236 end if;
14237
14238 l_dpr_in.rate_adj_factor := 1;
14239 l_dpr_in.eofy_reserve := 0;
14240
14241 -- manual override
14242 if fa_cache_pkg.fa_deprn_override_enabled then
14243
14244 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
14245 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
14246
14247 -- update override status only if satisfies condintion,
14248 -- otherwise do not update status when calculating RAF
14249 -- 1. formula; or
14250 -- 2. (calc or table) and cost
14251
14252 l_dpr_in.update_override_status :=
14253 ((l_rate_source_rule = fa_std_types.FAD_RSR_FORMULA)
14254 OR (((l_rate_source_rule = fa_std_types.FAD_RSR_CALC)
14255 OR (l_rate_source_rule = fa_std_types.FAD_RSR_TABLE))
14256 AND (l_deprn_basis_rule = fa_std_types.FAD_DBR_COST)));
14257 end if;
14258
14259 --+++++++ Call Tracking Function to populate Member in case ALLOCATE ++++++
14260 if nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
14261 /*
14262 if not FA_TRACK_MEMBER_PVT.get_member_at_start(
14263 p_trans_rec => l_trans_rec,
14264 p_asset_hdr_rec => p_asset_hdr_rec,
14265 p_dpr_in => l_dpr_in,
14266 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
14267 if (p_log_level_rec.statement_level) then
14268 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14269 'FA_TRACK_MEMBER_PVT.get_member_at_start', p_log_level_rec => p_log_level_rec);
14270 end if;
14271
14272 raise calc_failed;
14273
14274 end if;
14275 */null;
14276 end if; -- nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE'
14277
14278 l_dpr_in.cost_frac := null; -- Bug 5893429
14279
14283 fa_debug_pkg.add(l_calling_fn, ' Call ', 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
14280 if (p_log_level_rec.statement_level) then
14281 fa_debug_pkg.add(l_calling_fn, '========== Recalc Before Calling faxcde 1 ==========','', p_log_level_rec => p_log_level_rec);
14282 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
14284 end if;
14285
14286 --+++++++ Call Depreciation engine for rate adjustment factor +++++++
14287 if not FA_CDE_PKG.faxcde(l_dpr_in,
14288 l_dpr_arr,
14289 l_dpr_out,
14290 l_running_mode, p_log_level_rec => p_log_level_rec) then
14291 if (p_log_level_rec.statement_level) then
14292 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14293 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
14294 end if;
14295
14296 raise calc_failed;
14297 end if;
14298
14299 if (p_log_level_rec.statement_level) then
14300 fa_debug_pkg.add(l_calling_fn, '========== Recalc After Calling faxcde 1 ==========','', p_log_level_rec => p_log_level_rec);
14301 fa_debug_pkg.add(l_calling_fn, 'l_dpr_out.new_deprn_rsv',
14302 l_dpr_out.new_deprn_rsv, p_log_level_rec => p_log_level_rec);
14303 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
14304 end if;
14305
14306 -- manual override
14307 if fa_cache_pkg.fa_deprn_override_enabled then
14308 if l_dpr_in.update_override_status then
14309 p_trans_rec.deprn_override_flag := l_dpr_out.deprn_override_flag;
14310 else
14311 p_trans_rec.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
14312 end if;
14313 end if;
14314
14315 l_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
14316 l_asset_fin_rec_new.reval_amortization_basis := l_dpr_out.new_reval_amo_basis;
14317 l_asset_deprn_rec_raf.deprn_reserve := l_dpr_out.new_deprn_rsv;
14318 l_asset_deprn_rec_raf.reval_deprn_reserve := l_dpr_out.new_reval_rsv;
14319 l_asset_fin_rec_new.adjusted_capacity := l_asset_fin_rec_new.production_capacity -
14320 l_dpr_out.new_ltd_prod;
14321 l_asset_deprn_rec_raf.ltd_production := l_dpr_out.new_ltd_prod;
14322 l_asset_deprn_rec_raf.prior_fy_expense := l_dpr_out.new_prior_fy_exp;
14323 l_asset_deprn_rec_raf.bonus_deprn_amount := l_dpr_out.bonus_deprn_exp;
14324 l_asset_deprn_rec_raf.bonus_deprn_reserve := l_dpr_out.new_bonus_deprn_rsv;
14325 l_asset_deprn_rec_raf.prior_fy_bonus_expense := l_dpr_out.new_prior_fy_bonus_exp;
14326 l_asset_deprn_rec_raf.impairment_amount := l_dpr_out.impairment_exp;
14327 l_asset_deprn_rec_raf.impairment_reserve := l_dpr_out.new_impairment_rsv;
14328
14329
14330 -- Bug7610832
14331 -- Bug8208356. Calling transaction type should only be addition.
14332 -- Bug 6022155. If Calling transaction type is 'ADDITION' and user entered Accumlated Reserve,
14333 -- Then we need to consider Added Reserve but not eofy_reserve. i.e in period of addition we
14334 -- always give priority to added reserve than eofy_reserve. If there is not added reserve then
14335 -- only we take eofy_reserve. the if eofy_reserve <> 0 condition is added such that it is added
14336 -- In previous years and not in current year. Need to verify this is applicable for other rules
14337 -- also not only for USE FISCAL YEAR BEGINNING BASIS. This is coorect fix only because of fix
14338 -- 8208356, which makes sure that this is only addition.
14339 if l_dbr_event_type = 'AMORT_ADJ' and
14340 fa_cache_pkg.fazccmt_record.deprn_basis_rule = 'NBV' and
14341 fa_cache_pkg.fazccmt_record.rate_source_rule = 'FLAT' and
14342 p_source_transaction_type_code = 'ADDITION' then
14343 if (p_mrc_sob_type_code = 'R') then
14344 OPEN c_get_mc_brow;
14345 FETCH c_get_mc_brow INTO l_brow_ytd_deprn, l_brow_deprn_reserve;
14346 CLOSE c_get_mc_brow;
14347 else
14348 OPEN c_get_brow;
14349 FETCH c_get_brow INTO l_brow_ytd_deprn, l_brow_deprn_reserve;
14350 CLOSE c_get_brow;
14351 end if;
14352 IF (fa_cache_pkg.fazcdbr_record.rule_name = 'USE FISCAL YEAR BEGINNING BASIS' and
14353 nvl(l_dpr_out.new_eofy_reserve,0) <> 0 and l_brow_deprn_reserve <> 0) THEN
14354 l_asset_fin_rec_new.eofy_reserve := l_brow_deprn_reserve - l_brow_ytd_deprn;
14355 ELSE
14356 l_asset_fin_rec_new.eofy_reserve := l_dpr_out.new_eofy_reserve;
14357 END IF;
14358 end if;
14359
14360 --++++++++ Tracking=ALLOCATE case ++++++++++++++
14361 if nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
14362
14363 fa_track_member_pvt.p_track_member_table.delete;
14364 fa_track_member_pvt.p_track_mem_index_table.delete;
14365
14366 if (p_log_level_rec.statement_level) then
14367 fa_debug_pkg.add(l_calling_fn, 'fa_track_member_pvt.p_track_member_table',
14368 'deleted', p_log_level_rec => p_log_level_rec);
14369 end if;
14370 end if;
14371
14372 else
14373 l_asset_fin_rec_new.adjusted_cost := l_asset_fin_rec_new.recoverable_cost;
14374 end if; ---- skip faxcde call for raf
14375 --tk_util.debug('2eofy rsv: '||to_char(l_asset_fin_rec_new.eofy_reserve));
14376
14377 --++++ Eofy Reserve in case of reclass ++++
14378 -- Bug 13620748
14379 if l_trans_rec.transaction_type_code <> 'GROUP ADDITION' and NOT(l_amort_res_adj_poa) then
14380 l_asset_fin_rec_new.eofy_reserve := l_asset_fin_rec_new.eofy_reserve +
14381 nvl(p_asset_fin_rec_adj.eofy_reserve,0);
14382 end if;
14383
14384 if l_trans_rec.transaction_type_code in (G_TRX_TYPE_FUL_RET, G_TRX_TYPE_PAR_RET) then
14385 l_asset_fin_rec_new.eofy_reserve := l_asset_fin_rec_new.eofy_reserve -
14386 l_eofy_reserve_retired;
14387
14388 --++++ Skip followings because these values are already take care
14389 --++++ by using asset_deprn_rec_adj
14390 if (l_trans_rec.transaction_header_id <> p_trans_rec.transaction_header_id) then
14391 l_asset_deprn_rec.deprn_reserve := l_asset_deprn_rec.deprn_reserve -
14392 l_reserve_retired;
14393 l_asset_deprn_rec.reval_deprn_reserve := l_asset_deprn_rec.reval_deprn_reserve -
14394 l_reval_reserve_retired;
14395 l_asset_deprn_rec.bonus_deprn_reserve := l_asset_deprn_rec.bonus_deprn_reserve -
14396 l_bonus_reserve_retired;
14397 l_asset_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve -
14398 l_impair_reserve_retired;
14399
14400 end if;
14401 elsif l_trans_rec.transaction_type_code = G_TRX_TYPE_REV then
14402 if (l_trans_rec.transaction_header_id <> p_trans_rec.transaction_header_id) then
14403 /* Bug#7478702 In case of SORP when revaluation is done deprn_reserve is canceled against reval reserve
14404 so when calculating adjusted cost deprn_reserve is zero */
14408 so setting impairment_reserve to zero */
14405 if fa_cache_pkg.fazcbc_record.sorp_enabled_flag = 'Y' then
14406 l_asset_deprn_rec.deprn_reserve := 0;
14407 /* For Cost based method adjusted_cost is same as recoverable cost at the time of revaluation
14409 if fa_cache_pkg.fazccmt_record.deprn_basis_rule = 'COST' then
14410 l_asset_deprn_rec.impairment_reserve := 0;
14411 end if;
14412 else
14413 l_asset_deprn_rec.deprn_reserve := l_asset_deprn_rec.deprn_reserve +
14414 nvl(l_reval_reserve, 0);
14415 l_asset_deprn_rec.reval_deprn_reserve := l_asset_deprn_rec.reval_deprn_reserve +
14416 nvl(l_reval_reserve, 0);
14417 l_asset_deprn_rec.bonus_deprn_reserve := l_asset_deprn_rec.bonus_deprn_reserve +
14418 nvl(l_reval_bonus_reserve, 0);
14419 l_asset_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve +
14420 nvl(l_reval_impair_reserve, 0);
14421 end if;
14422 end if;
14423 end if;
14424
14425 --tk_util.debug('3 rec_cost: '||to_char(px_asset_fin_rec_new.recoverable_cost));
14426
14427 -- Get Unplanned amount
14428 if (l_trans_rec.transaction_key in ('UE', 'UA')) then
14429
14430 if (not GetExpRsv(p_trans_rec => l_trans_rec,
14431 p_asset_hdr_rec => p_asset_hdr_rec,
14432 p_period_rec => l_period_rec,
14433 p_mrc_sob_type_code => p_mrc_sob_type_code,
14434 x_exp_rsv_amount => l_reserve_adj,
14435 p_log_level_rec => p_log_level_rec )) then
14436
14437 if (p_log_level_rec.statement_level) then
14438 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14439 'GetExpRsv', p_log_level_rec => p_log_level_rec);
14440 end if;
14441
14442 raise calc_failed;
14443 end if;
14444
14445 l_asset_deprn_rec.deprn_reserve := l_asset_deprn_rec.deprn_reserve + l_reserve_adj;
14446
14447 if (l_trans_rec.transaction_key in ('UE', 'UA')) then
14448 l_asset_deprn_rec.ytd_deprn := l_asset_deprn_rec.ytd_deprn + l_reserve_adj;
14449 end if;
14450
14451 end if;
14452
14453 --tk_util.debug('3eofy rsv: '||to_char(l_asset_fin_rec_new.eofy_reserve));
14454 if (p_log_level_rec.statement_level) then
14455 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
14456 fa_debug_pkg.add(l_calling_fn, ' Call ',
14457 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
14458 fa_debug_pkg.add(l_calling_fn, '========== Recalc Before Calling call_deprn_basis 1 ==========','', p_log_level_rec => p_log_level_rec);
14459 fa_debug_pkg.add(l_calling_fn, 'p_trans_rec.transaction_type_code',
14460 p_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
14461 fa_debug_pkg.add(l_calling_fn, 'l_trans_rec.transaction_type_code',
14462 l_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
14463 fa_debug_pkg.add(l_calling_fn, 'l_eofy_reserve_retired',
14464 l_eofy_reserve_retired, p_log_level_rec => p_log_level_rec);
14465 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_adj.eofy_reserve',
14466 l_asset_fin_rec_adj.eofy_reserve, p_log_level_rec => p_log_level_rec);
14467 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.eofy_reserve',
14468 l_asset_fin_rec_new.eofy_reserve, p_log_level_rec => p_log_level_rec);
14469 fa_debug_pkg.add(l_calling_fn, 'l_asset_deprn_rec.deprn_reserve',
14470 l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
14471 end if;
14472
14473 --tk_util.debug('4 rec_cost: '||to_char(px_asset_fin_rec_new.recoverable_cost));
14474 --
14475 -- if this is source line trx and there is no cost impact,
14476 -- do not call deprn basis function
14477 --
14478 if (not (l_invoice_transaction_id is not null and
14479 nvl(l_asset_fin_rec_old.cost, 0) = l_asset_fin_rec_new.cost)) then
14480
14481 if (p_log_level_rec.statement_level) then
14482 fa_debug_pkg.add(l_calling_fn, '========== Recalc Before Calling call_deprn_basis 1.1 ==========','', p_log_level_rec => p_log_level_rec);
14483 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.adjusted_cost', l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
14484 fa_debug_pkg.add(l_calling_fn, '++ l_dbr_event_type', l_dbr_event_type, p_log_level_rec => p_log_level_rec);
14485 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.adjusted_recoverable_cost', l_asset_fin_rec_new.adjusted_recoverable_cost, p_log_level_rec => p_log_level_rec);
14486 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.method_code', l_asset_fin_rec_new.deprn_method_code, p_log_level_rec => p_log_level_rec);
14487 end if;
14488 -- Bug 6704518 Populate the transaction_key for Extended method
14489 -- Bug 8211842: Pass trx_key as ES if extended has started else pass EN
14493 else
14490 if (l_asset_fin_rec_new.deprn_method_code = 'JP-STL-EXTND') then
14491 if p_period_rec.period_counter >= p_asset_fin_rec_old.extended_depreciation_period then
14492 l_trans_rec.transaction_key := 'ES';
14494 l_trans_rec.transaction_key := 'EN';
14495 end if;
14496 end if;
14497
14498 if (l_trans_rec.transaction_key = 'IM') then
14499 l_asset_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve + l_asset_deprn_rec.deprn_reserve;
14500 end if;
14501 -- bug 12929729 need to pass recoverable cost w.r.t current transaction being processed instead of w.r.t original trx
14502 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
14503 (p_event_type => l_dbr_event_type,
14504 p_asset_fin_rec_new => l_asset_fin_rec_new,
14505 p_asset_fin_rec_old => l_asset_fin_rec_old,
14506 p_asset_hdr_rec => p_asset_hdr_rec,
14507 p_asset_type_rec => p_asset_type_rec,
14508 p_asset_deprn_rec => l_asset_deprn_rec,
14509 p_asset_retire_rec => l_asset_retire_rec,
14510 p_trans_rec => p_trans_rec,
14511 p_trans_rec_adj => l_trans_rec,
14512 p_period_rec => l_period_rec,
14513 p_recoverable_cost => l_asset_fin_rec_new.recoverable_cost, -- bug 12929729 px_asset_fin_rec_new.recoverable_cost,
14514 p_current_total_rsv => l_asset_deprn_rec.deprn_reserve,
14515 p_current_rsv => l_asset_deprn_rec.deprn_reserve -
14516 l_asset_deprn_rec.bonus_deprn_reserve - nvl(l_asset_deprn_rec.impairment_reserve,0),
14517 p_current_total_ytd => l_asset_deprn_rec.ytd_deprn,
14518 p_adj_reserve => p_asset_deprn_rec_adj.deprn_reserve,
14519 p_reserve_retired => l_reserve_retired,
14520 p_hyp_basis => l_asset_fin_rec_new.adjusted_cost,
14521 p_hyp_total_rsv => l_asset_deprn_rec_raf.deprn_reserve,
14522 p_hyp_rsv => l_asset_deprn_rec_raf.deprn_reserve -
14523 l_asset_deprn_rec_raf.bonus_deprn_reserve - nvl(l_asset_deprn_rec_raf.impairment_reserve,0),
14524 p_eofy_recoverable_cost => l_eofy_rec_cost,
14525 p_eop_recoverable_cost => l_eop_rec_cost,
14526 p_eofy_salvage_value => l_eofy_sal_val,
14527 p_eop_salvage_value => l_eop_sal_val,
14528 p_mrc_sob_type_code => p_mrc_sob_type_code,
14529 p_adjusted_cost => l_asset_fin_rec_new.adjusted_cost, -- ADDED by ZZZZ
14530 p_used_by_adjustment => 'ADJUSTMENT',
14531 p_trx_adjustment_amount => px_asset_fin_rec_new.cost- nvl(p_asset_fin_rec_old.cost,0), --bug#16426081
14532 px_new_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
14533 px_new_raf => l_asset_fin_rec_new.rate_adjustment_factor,
14534 px_new_formula_factor => l_asset_fin_rec_new.formula_factor,
14535 p_log_level_rec => p_log_level_rec)) then
14536 if (p_log_level_rec.statement_level) then
14537 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14538 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
14539 end if;
14540
14541 raise calc_failed;
14542 end if;
14543
14544 if (l_trans_rec.transaction_key = 'IM') then
14545 l_asset_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve - l_asset_deprn_rec.deprn_reserve;
14546 end if;
14547
14548 --Bug6978180 Added the following code to run for full retirement after extnd deprn.
14549 if nvl(l_trans_rec.transaction_key,'X') = 'ES' and
14550 p_trans_rec.transaction_type_code = 'FULL RETIREMENT'
14551 and nvl(l_asset_fin_rec_new.recoverable_cost,0) <> 0
14552 and fa_cache_pkg.fazccmt_record.rate_source_rule = 'CALCULATED'
14553 and p_asset_type_rec.asset_type <> 'GROUP'
14554 and fa_cache_pkg.fazccmt_record.deprn_basis_rule = 'COST' then
14555
14556 l_asset_fin_rec_new.adjusted_cost := l_asset_fin_rec_new.cost - nvl(l_asset_deprn_rec.deprn_reserve,0)
14557 - nvl(l_asset_deprn_rec.impairment_reserve ,0);
14558
14559 end if;
14560
14561 if (p_log_level_rec.statement_level) then
14562 fa_debug_pkg.add(l_calling_fn, '========== Recalc After Calling CALL_DEPRN_BASIS 1 ==========','', p_log_level_rec => p_log_level_rec);
14563 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.adjusted_cost', l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
14564 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.rate_adjustment_factor', l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
14565 end if;
14566
14567 else
14568 l_asset_fin_rec_new.adjusted_cost := l_asset_fin_rec_old.adjusted_cost;
14569 l_asset_fin_rec_new.rate_adjustment_factor := l_asset_fin_rec_old.rate_adjustment_factor;
14573 if (p_log_level_rec.statement_level) then
14570 l_asset_fin_rec_new.formula_factor := l_asset_fin_rec_old.formula_factor;
14571 end if;
14572
14574
14575 fa_debug_pkg.add
14576 (fname => l_calling_fn,
14577 element => 'impairment_reserve',
14578 value => p_asset_deprn_rec.impairment_reserve, p_log_level_rec => p_log_level_rec);
14579
14580 fa_debug_pkg.add
14581 (fname => l_calling_fn,
14582 element => 'trx_type_code',
14583 value => p_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
14584 end if;
14585
14586 -- Fix for Bug #4940011. Need to set correct adjusted cost for
14587 -- reinstatement of an impairment
14588 if (nvl(p_asset_deprn_rec.impairment_reserve,0) <> 0) and
14589 (p_trans_rec.transaction_type_code = 'REINSTATEMENT') then
14590 l_asset_fin_rec_new.adjusted_cost := l_impair_adj_cost;
14591 l_asset_fin_rec_new.rate_adjustment_factor := l_impair_raf;
14592 l_asset_fin_rec_new.formula_factor := l_impair_formula_factor;
14593 end if;
14594
14595 --tk_util.debug('l_asset_fin_rec_new.cost: '||to_char(l_asset_fin_rec_new.cost));
14596 if (p_log_level_rec.statement_level) then
14597 fa_debug_pkg.add(l_calling_fn, 'Returned values from ',
14598 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
14599 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_cost',
14600 l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
14601 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.rate_adjustment_factor',
14602 l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
14603 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.formula_factor',
14604 l_asset_fin_rec_new.formula_factor, p_log_level_rec => p_log_level_rec);
14605 fa_debug_pkg.add(l_calling_fn, '====== ', '==============================', p_log_level_rec => p_log_level_rec);
14606 end if;
14607
14608 end if; -- (l_process_this_trx)
14609
14610 --++++++ Don't want to calculate depreciation this period +++++++
14611 if (l_calc_deprn_flag) then
14612 l_temp_adjusted_cost := l_asset_fin_rec_new.adjusted_cost;
14613 l_asset_fin_rec_new.adjusted_cost := 0;
14614 end if;
14615
14616 --
14617 -- Run Depreciation if:
14618 -- - next available transaction (in table) is NOT the same period
14619 -- - This is the last transaction to recalculate which is not in
14620 -- current period.
14621 -- - This is the last trnsaction because of the limit specified
14622 -- at BULK fetch above. (Inside of following if clause, try to get
14623 -- next transaction from database and determine if depreciation needs
14624 -- to be called or not.
14625 --
14626 if (p_log_level_rec.statement_level) then
14627 fa_debug_pkg.add(l_calling_fn, 'Run Depreciation ', i, p_log_level_rec => p_log_level_rec);
14628 fa_debug_pkg.add(l_calling_fn, 't_transaction_header_id.COUNT',
14629 t_transaction_header_id.COUNT, p_log_level_rec => p_log_level_rec);
14630 fa_debug_pkg.add(l_calling_fn, 'l_period_rec.period_counter',
14631 l_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
14632 fa_debug_pkg.add(l_calling_fn, 'p_period_rec.period_counter',
14633 p_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
14634 end if;
14635
14636 if (i < t_transaction_header_id.COUNT) then
14637
14638 --
14639 -- Get period informatioin for next period
14640 -- If the next transaction is not in the current period, call cache.
14641 -- Otherwise, copy current one to next period info local variable.
14642 --
14643 -- Bug6190904: there is a case that following amortized adjustment needs to be processed
14644 -- before moving on to the next period depending on prorate convention setting.
14645 -- l_end_date stores end date of prorate period where dpis falls in and if
14646 -- subsequent trx's amort date is before that, we want to process the trx
14647 -- before moving on to the next period.
14648 if (t_transaction_date_entered(i+1) > l_period_rec.calendar_period_close_date) and
14649 (t_transaction_date_entered(i+1) > l_end_date) then
14650
14651 if not GetPeriodInfo(to_number(to_char(t_transaction_date_entered(i+1), 'J')),
14652 p_asset_hdr_rec.book_type_code,
14653 p_mrc_sob_type_code,
14654 p_asset_hdr_rec.set_of_books_id,
14655 l_next_period_rec,
14656 p_log_level_rec) then
14657 if (p_log_level_rec.statement_level) then
14658 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14659 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
14660 end if;
14661
14662 raise calc_failed;
14663 end if;
14664
14665 else
14666 l_next_period_rec := l_period_rec;
14670
14667 end if; -- (t_transaction_date_entered(i+1) > l_period_rec.calendar_period_close_date)
14668
14669 --tk_util.DumpPerRec(l_next_period_rec, to_char(i));
14671 end if; -- (i < t_transaction_header_id.COUNT)
14672
14673 if (p_log_level_rec.statement_level) then
14674 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 8.0 : Checking whether to run Deprn ==========','', p_log_level_rec => p_log_level_rec);
14675 fa_debug_pkg.add(l_calling_fn, '++ i', i, p_log_level_rec => p_log_level_rec);
14676 fa_debug_pkg.add(l_calling_fn, '++ l_period_rec.period_counter', l_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
14677 fa_debug_pkg.add(l_calling_fn, '++ l_next_period_rec.period_counter', l_next_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
14678 fa_debug_pkg.add(l_calling_fn, '++ l_next_trx_trx_date_entered', to_char(l_next_trx_trx_date_entered,'MM/DD/YYYY'));
14679 fa_debug_pkg.add(l_calling_fn, '++ l_limit', l_limit, p_log_level_rec => p_log_level_rec);
14680 end if;
14681 --Bug6755649
14682 --If the transaction processed is partial retirement then save the calculated adj cost
14683 -- and cost frac.
14684 if l_trans_rec.transaction_type_code = G_TRX_TYPE_PAR_RET then
14685 if (p_asset_fin_rec_old.cost is null or p_asset_fin_rec_old.cost = 0) then
14686 l_old_cost_frac := null;
14687 else
14688 l_old_cost_frac := l_cost_retired / px_asset_fin_rec_new.cost;
14689 end if;
14690
14691 l_cur_adj_cost := l_asset_fin_rec_new.adjusted_cost;
14692 end if;
14693
14694 --Bug6755649 ends
14695
14696 if ((i < t_transaction_header_id.COUNT) and
14697 (l_period_rec.period_counter < l_next_period_rec.period_counter)) or
14698 ((i = t_transaction_header_id.COUNT) and
14699 (i < l_limit) and
14700 (l_period_rec.period_counter < p_period_rec.period_counter)) or
14701 (i = l_limit) then
14702 --
14703 -- Find out from db that next transaction is in the same period or not.
14704 --
14705 if (i = l_limit) then
14706 OPEN c_get_next_ths (t_transaction_date_entered(i), t_date_effective(i));
14707 FETCH c_get_next_ths INTO l_next_trx_trx_date_entered,
14708 l_next_trx_date_effective;
14709 CLOSE c_get_next_ths;
14710
14711 if (l_next_trx_trx_date_entered is not null) then
14712 if not GetPeriodInfo(to_number(to_char(l_next_trx_trx_date_entered, 'J')),
14713 p_asset_hdr_rec.book_type_code,
14714 p_mrc_sob_type_code,
14715 p_asset_hdr_rec.set_of_books_id,
14716 l_next_period_rec,
14717 p_log_level_rec) then
14718 if (p_log_level_rec.statement_level) then
14719 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14720 'GetPeriodInfo', p_log_level_rec => p_log_level_rec);
14721 end if;
14722
14723 raise calc_failed;
14724 end if;
14725 end if;
14726
14727 if (p_log_level_rec.statement_level) then
14728 fa_debug_pkg.add(l_calling_fn, 'Fetched next transaction information ', l_limit, p_log_level_rec => p_log_level_rec);
14729 end if;
14730
14731 end if; -- (i = l_limit)
14732
14733 --
14734 -- If there is no subsequent transaction or next transaction
14735 -- is in different period, complete runnning depreciation to close
14736 -- previous period or perivious period of the period that next transaction
14737 -- exists.
14738 --
14739 -- Bug3548724: Added l_is_this_void. Skip faxcde call if current trx is void.
14740 --
14741
14742 -- Fix for Bug #6190904.
14743 if (p_trans_rec.transaction_type_code like '%RETIREMENT') then
14744
14745 -- Bug 5726160
14746 declare
14747 cursor c_depreciate_flag is
14748 select bk.depreciate_flag
14749 from fa_books bk
14750 ,fa_deprn_periods dp
14751 where bk.asset_id = p_asset_hdr_rec.asset_id
14752 and bk.book_type_code = p_asset_hdr_rec.book_type_code
14753 and bk.date_effective <= nvl(dp.period_close_date, sysdate)
14754 and dp.book_type_code = p_asset_hdr_rec.book_type_code
14755 and dp.period_counter = l_period_rec.period_counter
14756 order by bk.date_effective desc;
14757 begin
14758 open c_depreciate_flag;
14759 fetch c_depreciate_flag into l_depreciate_flag;
14760 if (c_depreciate_flag%notfound) then
14761 if (l_asset_fin_rec_new.depreciate_flag = 'YES') then
14762 l_depreciate_flag := 'YES';
14763 else
14764 l_depreciate_flag := 'NO';
14765 end if;
14766 end if;
14767 close c_depreciate_flag;
14768 exception when others then null;
14769 end;
14770 else
14771 l_depreciate_flag := l_asset_fin_rec_new.depreciate_flag;
14772 end if;
14773
14774
14775 if (p_log_level_rec.statement_level) then
14779 fa_debug_pkg.add(l_calling_fn, 'l_period_rec.period_counter', l_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
14776 fa_debug_pkg.add(l_calling_fn, '========== Recalc Step 8.5 :Checking whether to run Deprn ==========','', p_log_level_rec => p_log_level_rec);
14777 fa_debug_pkg.add(l_calling_fn, 'l_next_trx_trx_date_entered', to_char(l_next_trx_trx_date_entered,'MM/DD/YYYY'));
14778 fa_debug_pkg.add(l_calling_fn, 'l_next_period_rec.period_counter', l_next_period_rec.period_counter, p_log_level_rec => p_log_level_rec);
14780 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_old.depreciate_flag', l_asset_fin_rec_old.depreciate_flag, p_log_level_rec => p_log_level_rec);
14781 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.depreciate_flag', l_asset_fin_rec_new.depreciate_flag, p_log_level_rec => p_log_level_rec);
14782 fa_debug_pkg.add(l_calling_fn, 'l_depreciate_flag', l_depreciate_flag, p_log_level_rec => p_log_level_rec);
14783 fa_debug_pkg.add(l_calling_fn, 'l_asset_deprn_rec.deprn_reserve', l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
14784 fa_debug_pkg.add(l_calling_fn, 'px_asset_fin_rec_new.depreciate_flag', px_asset_fin_rec_new.depreciate_flag, p_log_level_rec => p_log_level_rec);
14785 fa_debug_pkg.add(l_calling_fn, 'l_depreciate_flag', l_depreciate_flag, p_log_level_rec => p_log_level_rec);
14786 fa_debug_pkg.add(l_calling_fn, 'l_energy_member', l_energy_member, p_log_level_rec => p_log_level_rec);
14787 fa_debug_pkg.add(l_calling_fn, 'l_is_this_void', l_is_this_void, p_log_level_rec => p_log_level_rec);
14788 end if;
14789
14790 if (l_next_trx_trx_date_entered is null or
14791 l_next_period_rec.period_counter > l_period_rec.period_counter) and
14792 (not(l_is_this_void)) and
14793 (not(l_energy_member)) and
14794 --Bug 14837242 use l_depreciate_flag instead of px_asset_fin_rec_new.depreciate_flag
14795 -- (px_asset_fin_rec_new.depreciate_flag = 'YES') -- Bug6190904 for case5: Need to replace a line above
14796 (l_depreciate_flag = 'YES')
14797 then
14798
14799 l_dpr_in.y_begin := l_period_rec.fiscal_year;
14800 l_dpr_in.p_cl_begin := l_period_rec.period_num;
14801
14802 if (p_log_level_rec.statement_level) then
14803 fa_debug_pkg.add(l_calling_fn, 'Depreciation starts from period of ', l_dpr_in.p_cl_begin, p_log_level_rec => p_log_level_rec);
14804 fa_debug_pkg.add(l_calling_fn, 'and year of ', l_dpr_in.y_begin, p_log_level_rec => p_log_level_rec);
14805 end if;
14806
14807 if (i < t_transaction_header_id.COUNT) or (i = l_limit) then
14808 if (p_log_level_rec.statement_level) then
14809 fa_debug_pkg.add(l_calling_fn, 'Depreciate until ', 'Next Transaction', p_log_level_rec => p_log_level_rec);
14810 end if;
14811 --
14812 -- Find how many periods to depreciate until next transaction headers
14813 -- Set FA_STD_TYPES.dpr_struct for depreciation(faxcde) call.
14814 --
14815 if (nvl(l_next_period_rec.period_counter, p_period_rec.period_counter) = 1) then
14816 l_dpr_in.y_end := nvl(l_next_period_rec.fiscal_year, p_period_rec.fiscal_year) - 1;
14817 l_dpr_in.p_cl_end := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
14818 else
14819 l_dpr_in.y_end := nvl(l_next_period_rec.fiscal_year, p_period_rec.fiscal_year);
14820 l_dpr_in.p_cl_end := nvl(l_next_period_rec.period_num, p_period_rec.period_num) - 1;
14821 end if;
14822
14823 elsif (i = t_transaction_header_id.COUNT) then
14824 if (p_log_level_rec.statement_level) then
14825 fa_debug_pkg.add(l_calling_fn, 'Depreciate until ', 'Current period', p_log_level_rec => p_log_level_rec);
14826 end if;
14827 --
14828 -- This is the last transaction to process. So depreciate
14829 -- until last period.
14830 --
14831 if (p_period_rec.period_num = 1) then
14832 l_dpr_in.y_end := p_period_rec.fiscal_year - 1;
14833 l_dpr_in.p_cl_end := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
14834 else
14835 l_dpr_in.y_end := p_period_rec.fiscal_year;
14836 l_dpr_in.p_cl_end := p_period_rec.period_num - 1;
14837 end if;
14838
14839 end if; -- (i < t_transaction_header_id.COUNT) or (i = l_limit)
14840
14841 if (p_log_level_rec.statement_level) then
14842 fa_debug_pkg.add(l_calling_fn, 'Depreciation will end at period of ', l_dpr_in.p_cl_end, p_log_level_rec => p_log_level_rec);
14843 fa_debug_pkg.add(l_calling_fn, 'and year of ', l_dpr_in.y_end, p_log_level_rec => p_log_level_rec);
14844 end if;
14845
14846 if (l_period_rec.period_num <> 1) then
14847 l_dpr_in.deprn_rounding_flag := 'ADJ';
14848 end if;
14849
14850 l_dpr_in.prior_fy_exp := l_asset_deprn_rec.prior_fy_expense;
14851 l_dpr_in.ytd_deprn := l_asset_deprn_rec.ytd_deprn;
14852 l_dpr_in.deprn_rsv := l_asset_deprn_rec.deprn_reserve;
14853 l_dpr_in.adj_cost := l_asset_fin_rec_new.adjusted_cost;
14854 l_dpr_in.eofy_reserve := l_asset_fin_rec_new.eofy_reserve;
14855 l_dpr_in.rate_adj_factor := l_asset_fin_rec_new.rate_adjustment_factor;
14856 l_dpr_in.formula_factor := l_asset_fin_rec_new.formula_factor;
14857 l_dpr_in.super_group_id := l_asset_fin_rec_new.super_group_id;
14861
14858 l_dpr_in.cost := l_asset_fin_rec_new.cost;
14859 --Bug 6510877
14860 l_dpr_in.adj_capacity := l_asset_fin_rec_new.adjusted_capacity;
14862 -- manual override
14863 if fa_cache_pkg.fa_deprn_override_enabled then
14864 l_dpr_in.update_override_status := TRUE;
14865 end if;
14866
14867 -- Bug fix 5893429
14868 if l_trans_rec.transaction_type_code = G_TRX_TYPE_PAR_RET then
14869 if (p_asset_fin_rec_old.cost is null or p_asset_fin_rec_old.cost = 0) then
14870 l_cost_frac := null;
14871 else
14872 l_cost_frac := l_cost_retired / px_asset_fin_rec_new.cost;
14873 end if;
14874 else
14875 l_cost_frac := null;
14876 end if;
14877
14878 --Bug6755649
14879 --Added a condition to check if after all the transactions have been processed the value
14880 --of adjusted cost is same as the one calculated during partial retirement then
14881 --populate cost fraction with the old value.
14882 if (l_asset_fin_rec_new.adjusted_cost = l_cur_adj_cost) and (i = t_transaction_header_id.COUNT)then
14883 l_cost_frac := l_old_cost_frac;
14884 end if;
14885 --Bug6755649 ends
14886
14887 l_dpr_in.cost_frac := l_cost_frac;
14888
14889 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.cost_frac', l_dpr_in.cost_frac, p_log_level_rec => p_log_level_rec);
14890 -- End of bug fix 5893429
14891
14892 -- Bug 8398064: if current partial retirement is in same period as prev row in overlapping txns
14893 -- then reset deprn rsv if there are no amort adj or reval overlaps.
14894 -- Bug 10410325: ignore ytd_deprn completely.
14895 if (i > 1) and (NOT l_amort_adjusted_flag) then
14896 declare
14897 l_rem_frac number;
14898 l_b boolean;
14899 begin
14900 if t_transaction_period_ctr(i) = t_transaction_period_ctr(i-1) and
14901 t_transaction_type_code(i) like '%RETIREMENT'
14902 then
14903 l_overlapping_rets := TRUE;
14904 l_rem_frac := l_asset_fin_rec_new.cost / l_asset_fin_rec_old.cost;
14905 fa_debug_pkg.add(l_calling_fn, '++ OVERLAPPING TXNS 1', t_transaction_header_id(i) );
14906 fa_debug_pkg.add(l_calling_fn, '++ OVERLAPPING TXNS 2', t_transaction_header_id(i-1) );
14907 l_dpr_in.deprn_rsv := l_rem_frac * l_dpr_in.deprn_rsv;
14908 l_b := FA_UTILS_PKG.faxrnd(l_dpr_in.deprn_rsv, p_asset_hdr_rec.book_type_code, p_asset_hdr_rec.set_of_books_id,p_log_level_rec => p_log_level_rec);
14909 end if;
14910 end;
14911 end if;
14912 -- Bug 8398064
14913
14914 if (p_log_level_rec.statement_level) then
14915 fa_debug_pkg.add(l_calling_fn, '========== Recalc Before Calling faxcde 2 ==========','', p_log_level_rec => p_log_level_rec);
14916 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.cost',l_dpr_in.cost, p_log_level_rec => p_log_level_rec);
14917 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.adj_cost',l_dpr_in.adj_cost, p_log_level_rec => p_log_level_rec);
14918 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.rate_adj_factor',l_dpr_in.rate_adj_factor, p_log_level_rec => p_log_level_rec);
14919 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.prior_fy_exp',l_dpr_in.prior_fy_exp, p_log_level_rec => p_log_level_rec);
14920 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.eofy_reserve',l_dpr_in.eofy_reserve, p_log_level_rec => p_log_level_rec);
14921 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_in.deprn_rsv',l_dpr_in.deprn_rsv, p_log_level_rec => p_log_level_rec);
14922 end if;
14923
14924 -- 8211842 : faxcde will look for POSTED depreciation overrides
14925 -- for periods before override_period_counter
14926 l_dpr_in.override_period_counter := l_override_limit_period_rec.period_counter;
14927
14928 --
14929 -- +++++ faxcde will not be called if adjusted_cost is 0.
14930 --
14931 if not FA_CDE_PKG.faxcde(l_dpr_in,
14932 l_dpr_arr,
14933 l_dpr_out,
14934 l_running_mode, p_log_level_rec => p_log_level_rec) then
14935 if (p_log_level_rec.statement_level) then
14936 fa_debug_pkg.add(l_calling_fn, 'Error calling',
14937 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
14938 end if;
14939
14940 raise calc_failed;
14941 end if;
14942
14943 if (p_log_level_rec.statement_level) then
14944 fa_debug_pkg.add(l_calling_fn, '========== Recalc After Calling faxcde 2 ==========','', p_log_level_rec => p_log_level_rec);
14945 fa_debug_pkg.add(l_calling_fn, '++ Depreciation started from YEAR : PERIOD ', l_dpr_in.y_begin ||' : '|| l_dpr_in.p_cl_begin, p_log_level_rec => p_log_level_rec);
14946 fa_debug_pkg.add(l_calling_fn, '++ Depreciation ended at YEAR : PERIOD ', l_dpr_in.y_end ||' : '|| l_dpr_in.p_cl_end, p_log_level_rec => p_log_level_rec);
14947 fa_debug_pkg.add(l_calling_fn, '++ l_dpr_out.new_adj_cost', l_dpr_out.new_adj_cost, p_log_level_rec => p_log_level_rec);
14948 fa_debug_pkg.add(l_calling_fn, 'l_dpr_out.new_ytd_deprn', l_dpr_out.new_ytd_deprn, p_log_level_rec => p_log_level_rec);
14952 fa_debug_pkg.add(l_calling_fn, '++ AFTER: l_asset_deprn_rec.deprn_reserve (+ +)', l_asset_deprn_rec.deprn_reserve);
14949 fa_debug_pkg.add(l_calling_fn, 'l_dpr_out.new_deprn_rsv', l_dpr_out.new_deprn_rsv, p_log_level_rec => p_log_level_rec);
14950 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_cost',l_asset_fin_rec_new.adjusted_cost , p_log_level_rec => p_log_level_rec);
14951 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_recoverable_cost',l_asset_fin_rec_new.adjusted_recoverable_cost , p_log_level_rec => p_log_level_rec);
14953 end if;
14954
14955
14956 -- manual override
14957 if fa_cache_pkg.fa_deprn_override_enabled then
14958 p_trans_rec.deprn_override_flag := l_dpr_out.deprn_override_flag;
14959 end if;
14960
14961 if (l_asset_fin_rec_new.adjusted_cost <> 0)or
14962 --bug fix 4731687 added for the case when due to deprn limit adj_rec_cost is <>0 and adj_cost is 0
14963 (l_asset_fin_rec_new.adjusted_recoverable_cost <> 0) then
14964 l_asset_fin_rec_new.reval_amortization_basis := l_dpr_out.new_reval_amo_basis;
14965 l_asset_deprn_rec.deprn_reserve := l_dpr_out.new_deprn_rsv;
14966 l_asset_deprn_rec.ytd_deprn := l_dpr_out.new_ytd_deprn;
14967 l_asset_deprn_rec.reval_deprn_reserve := l_dpr_out.new_reval_rsv;
14968 -- bug 5336669
14969 -- l_asset_fin_rec_new.adjusted_capacity := l_dpr_out.new_adj_capacity;
14970 --
14971 l_asset_deprn_rec.ltd_production := l_dpr_out.new_ltd_prod;
14972 l_asset_fin_rec_new.eofy_reserve := l_dpr_out.new_eofy_reserve;
14973
14974 l_asset_deprn_rec.prior_fy_expense := l_dpr_out.new_prior_fy_exp;
14975 l_asset_deprn_rec.bonus_deprn_amount := l_dpr_out.bonus_deprn_exp;
14976 l_asset_deprn_rec.bonus_deprn_reserve := l_dpr_out.new_bonus_deprn_rsv;
14977 l_asset_deprn_rec.prior_fy_bonus_expense := l_dpr_out.new_prior_fy_bonus_exp;
14978 l_asset_deprn_rec.impairment_amount := l_dpr_out.impairment_exp;
14979 l_asset_deprn_rec.impairment_reserve := l_dpr_out.new_impairment_rsv;
14980 end if;
14981
14982 --++++++ Put adjusted cost back ++++++
14983 l_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
14984 l_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
14985
14986 l_out_deprn_exp := l_dpr_out.deprn_exp;
14987 l_out_reval_exp := l_dpr_out.reval_exp;
14988 l_out_reval_amo := l_dpr_out.reval_amo;
14989 l_out_prod := l_dpr_out.prod;
14990 l_out_ann_adj_exp := l_dpr_out.ann_adj_exp;
14991 l_out_ann_adj_reval_exp := l_dpr_out.ann_adj_reval_exp;
14992 l_out_ann_adj_reval_amo := l_dpr_out.ann_adj_reval_amo;
14993 l_out_bonus_rate_used := l_dpr_out.bonus_rate_used;
14994 l_out_full_rsv_flag := l_dpr_out.full_rsv_flag;
14995 l_out_life_comp_flag := l_dpr_out.life_comp_flag;
14996 l_out_deprn_override_flag := l_dpr_out.deprn_override_flag;
14997
14998 l_eop_rec_cost := l_asset_fin_rec_new.recoverable_cost;
14999 l_eop_sal_val := l_asset_fin_rec_new.salvage_value;
15000
15001 -- Bug 13620748 start
15002 -- we will override the reserve calcualted by faxcde2 call in case
15003 -- user has done amortized reserve change adjustment in POA
15004 -- in R12 and currently we are processing addition
15005 IF l_trans_rec.transaction_type_code = 'ADDITION'
15006 AND p_trans_rec.transaction_type_code <> 'ADDITION'
15007 AND (l_amort_res_adj_poa) then
15008
15009 l_asset_deprn_rec.deprn_reserve := p_asset_deprn_rec.deprn_reserve + p_asset_deprn_rec_adj.deprn_reserve;
15010 l_asset_deprn_rec.ytd_deprn := p_asset_deprn_rec.ytd_deprn + p_asset_deprn_rec_adj.ytd_deprn ;
15011 l_asset_fin_rec_new.eofy_reserve := l_asset_deprn_rec.deprn_reserve - l_asset_deprn_rec.ytd_deprn;
15012
15013 END IF;
15014 --Bug 13620748 end
15015
15016
15017 --+++++++++ Call member level maintenance for tracking +++++++
15018 if nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
15019
15020 if not FA_TRACK_MEMBER_PVT.member_eofy_rsv(p_asset_hdr_rec => p_asset_hdr_rec,
15021 p_dpr_in => l_dpr_in,
15022 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
15023 if (p_log_level_rec.statement_level) then
15024 fa_debug_pkg.add(l_calling_fn, 'Error calling',
15025 'FA_TRACK_MEMBER_PVT.member_eofy_rsv', p_log_level_rec => p_log_level_rec);
15026 end if;
15027
15028 raise calc_failed;
15029
15030 end if;
15031
15032 end if; -- nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE'
15033
15034 elsif (l_energy_member) then
15035 if (p_log_level_rec.statement_level) then
15036 fa_debug_pkg.add(l_calling_fn, 'This is energy member ',
15037 'No member level deprn calculation', p_log_level_rec => p_log_level_rec);
15038 end if;
15039
15040
15041
15042 else
15043 if (p_log_level_rec.statement_level) then
15044 fa_debug_pkg.add(l_calling_fn, 'There is another transactions to process this period',
15048 end if; -- (l_next_trx_period_counter is null or
15045 'or this is current period', p_log_level_rec => p_log_level_rec);
15046 end if;
15047
15049
15050 end if; -- (not ((i < l_limit) and
15051
15052 if (l_calc_deprn_flag) then
15053 l_asset_fin_rec_new.adjusted_cost := l_temp_adjusted_cost;
15054 end if;
15055
15056 l_process_this_trx := TRUE;
15057
15058
15059 if (p_log_level_rec.statement_level) then
15060 fa_debug_pkg.add(l_calling_fn, '++ calc_catchup: p_trans_rec.transaction_type_code', p_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
15061 end if;
15062
15063 -- Bug 5726160
15064 if p_running_mode = fa_std_types.FA_DPR_CATCHUP then
15065
15066 if p_trans_rec.transaction_type_code = 'REINSTATEMENT' then
15067
15068 if l_retirement_thid = l_trans_rec.transaction_header_id then
15069
15070 l_catchup_begin_deprn_rec.deprn_reserve := l_asset_deprn_rec.deprn_reserve;
15071 l_catchup_begin_deprn_rec.bonus_deprn_reserve := l_asset_deprn_rec.bonus_deprn_reserve;
15072 l_catchup_begin_deprn_rec.impairment_reserve := l_asset_deprn_rec.impairment_reserve;
15073
15074 if (p_log_level_rec.statement_level) then
15075 fa_debug_pkg.add(' '||l_calling_fn, 'SETTING l_catchup_begin_deprn_rec.deprn_reserve (+ +)', l_catchup_begin_deprn_rec.deprn_reserve);
15076 end if;
15077
15078 end if;
15079
15080 elsif p_trans_rec.transaction_type_code like '%RETIREMENT' then
15081
15082 if (p_log_level_rec.statement_level) then
15083 fa_debug_pkg.add(' '||l_calling_fn, '++ calc_catchup: l_trans_rec.transaction_type_code 1...', l_trans_rec.transaction_type_code, p_log_level_rec => p_log_level_rec);
15084 fa_debug_pkg.add(' '||l_calling_fn, '++ calc_catchup: l_entered_reserve 1...', l_entered_reserve, p_log_level_rec => p_log_level_rec);
15085 end if;
15086
15087 if l_trans_rec.transaction_type_code = 'ADDITION' and l_entered_reserve <> 0 then
15088
15089 -- reset deprn_reserve to the deprn_reserve in fa_deprn_summary
15090 select deprn_reserve
15091 into l_temp_reserve
15092 from fa_deprn_summary ds1
15093 where ds1.asset_id = p_asset_hdr_rec.asset_id
15094 and ds1.book_type_code = p_asset_hdr_rec.book_type_code
15095 and ds1.period_counter =
15096 (select ds2.period_counter + 1
15097 from fa_deprn_summary ds2
15098 where ds2.asset_id = p_asset_hdr_rec.asset_id
15099 and ds2.book_type_code = p_asset_hdr_rec.book_type_code
15100 and ds2.deprn_source_code = 'BOOKS');
15101
15102 l_asset_deprn_rec.deprn_reserve := l_temp_reserve;
15103
15104 if (p_log_level_rec.statement_level) then
15105 fa_debug_pkg.add(' '||l_calling_fn, '++ RESETTING l_asset_deprn_rec.deprn_reserve (+ +) ...', l_asset_deprn_rec.deprn_reserve);
15106 end if;
15107
15108 end if;
15109
15110 end if;
15111
15112 end if;
15113
15114 if (p_log_level_rec.statement_level) then
15115 fa_debug_pkg.add(' '||l_calling_fn, 'ytd_deprn', l_asset_deprn_rec.ytd_deprn, p_log_level_rec => p_log_level_rec);
15116 fa_debug_pkg.add(' '||l_calling_fn, 'deprn_reserve', l_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
15117 fa_debug_pkg.add(l_calling_fn, '++ AFTER 2: l_asset_deprn_rec.deprn_reserve (+ +)', l_asset_deprn_rec.deprn_reserve);
15118 end if;
15119
15120 END LOOP; -- FOR i IN 1..t_transaction_header_id.COUNT LOOP
15121
15122 EXIT WHEN c_get_ths_adj%NOTFOUND;
15123
15124 END LOOP; -- for transactions
15125
15126 CLOSE c_get_ths_adj;
15127
15128 if (p_log_level_rec.statement_level) then
15129 fa_debug_pkg.add(l_calling_fn, '++ Recalc Step 9 : End of c_get_ths_adj LOOP ------------------------------------------------','', p_log_level_rec => p_log_level_rec);
15130 end if;
15131
15132 if (p_log_level_rec.statement_level) then
15133 fa_debug_pkg.add(l_calling_fn, '+++++++++++ Recalc Step 9 : BEFORE calling CALL_DEPRN_BASIS ++++++++++','', p_log_level_rec => p_log_level_rec);
15134 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.cost',l_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
15135 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.adjusted_cost',l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
15136 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.rate_adjustment_factor',l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
15137 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.formula_factor',l_asset_fin_rec_new.formula_factor, p_log_level_rec => p_log_level_rec);
15138 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.prior_deprn_limit_amount',l_asset_fin_rec_new.prior_deprn_limit_amount, p_log_level_rec => p_log_level_rec);
15139 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.prior_deprn_limit',l_asset_fin_rec_new.prior_deprn_limit, p_log_level_rec => p_log_level_rec);
15140 end if;
15141
15142 -- Bug 9804275
15143 -- Basis reset not needed if FORMULA/NBV/Basis rule is used
15144 -- Call Depreciable Basis Rule for Formula/NBV Basis if necessary.
15145 -- We have backported Fix for Bug 7459910 so this logic is not
15146 -- needed for basis reset when deprn basis rule is used.
15150 (fa_cache_pkg.fazccmt_record.rate_source_rule = fa_std_types.FAD_RSR_FORMULA) and
15147 --
15148 if (
15149 (fa_cache_pkg.fazccmt_record.deprn_basis_rule = fa_std_types.FAD_DBR_NBV) and
15151 (fa_cache_pkg.fazccmt_record.deprn_basis_rule is null)
15152 )
15153 then
15154 -- Call Depreciable Basis Rule for Formula/NBV Basis
15155 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
15156 (p_event_type => 'AMORT_ADJ3',
15157 p_asset_fin_rec_new => l_asset_fin_rec_new,
15158 p_asset_fin_rec_old => l_asset_fin_rec_new,
15159 p_asset_hdr_rec => p_asset_hdr_rec,
15160 p_asset_type_rec => p_asset_type_rec,
15161 p_asset_deprn_rec => l_asset_deprn_rec,
15162 p_trans_rec => p_trans_rec,
15163 p_period_rec => l_period_rec,
15164 p_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
15165 p_current_total_rsv => l_asset_deprn_rec.deprn_reserve,
15166 p_current_rsv => l_asset_deprn_rec.deprn_reserve -
15167 l_asset_deprn_rec.bonus_deprn_reserve - nvl(l_asset_deprn_rec.impairment_reserve,0),
15168 p_current_total_ytd => l_asset_deprn_rec.ytd_deprn,
15169 p_hyp_basis => l_asset_fin_rec_new.adjusted_cost,
15170 p_hyp_total_rsv => l_asset_deprn_rec_raf.deprn_reserve,
15171 p_hyp_rsv => l_asset_deprn_rec_raf.deprn_reserve -
15172 l_asset_deprn_rec_raf.bonus_deprn_reserve - nvl(l_asset_deprn_rec_raf.impairment_reserve,0),
15173 p_eofy_recoverable_cost => l_eofy_rec_cost,
15174 p_eop_recoverable_cost => l_eop_rec_cost,
15175 p_eofy_salvage_value => l_eofy_sal_val,
15176 p_eop_salvage_value => l_eop_sal_val,
15177 p_mrc_sob_type_code => p_mrc_sob_type_code,
15178 p_used_by_adjustment => 'ADJUSTMENT',
15179 px_new_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
15180 px_new_raf => l_asset_fin_rec_new.rate_adjustment_factor,
15181 px_new_formula_factor => l_asset_fin_rec_new.formula_factor,
15182 p_log_level_rec => p_log_level_rec)) then
15183 if (p_log_level_rec.statement_level) then
15184 fa_debug_pkg.add(l_calling_fn, 'Error calling',
15185 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
15186 end if;
15187 raise calc_failed;
15188 end if; -- fix for Bug 9804275
15189 end if; -- (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
15190
15191 if (p_log_level_rec.statement_level) then
15192 fa_debug_pkg.add(l_calling_fn, '++ Recalc Step 10 : AFTER calling CALL_DEPRN_BASIS ------------------------------------------------','', p_log_level_rec => p_log_level_rec);
15193 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.cost',l_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
15194 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.adjusted_cost',l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
15195 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.rate_adjustment_factor',l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
15196 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.formula_factor',l_asset_fin_rec_new.formula_factor, p_log_level_rec => p_log_level_rec);
15197 end if;
15198
15199 if (p_log_level_rec.statement_level) then
15200 fa_debug_pkg.add(l_calling_fn, 'Returned values from ',
15201 'FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS AMORT_ADJ3', p_log_level_rec => p_log_level_rec);
15202 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.adjusted_cost',
15203 l_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
15204 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.rate_adjustment_factor',
15205 l_asset_fin_rec_new.rate_adjustment_factor, p_log_level_rec => p_log_level_rec);
15206 fa_debug_pkg.add(l_calling_fn, 'l_asset_fin_rec_new.formula_factor',
15207 l_asset_fin_rec_new.formula_factor, p_log_level_rec => p_log_level_rec);
15208 end if;
15209
15210 px_asset_fin_rec_new.cost := l_asset_fin_rec_new.cost;
15211 px_asset_fin_rec_new.recoverable_cost:= l_asset_fin_rec_new.recoverable_cost;
15212 px_asset_fin_rec_new.adjusted_recoverable_cost:= l_asset_fin_rec_new.adjusted_recoverable_cost;
15213 px_asset_fin_rec_new.salvage_value := l_asset_fin_rec_new.salvage_value;
15214 px_asset_fin_rec_new.allowed_deprn_limit_amount := l_asset_fin_rec_new.allowed_deprn_limit_amount;
15215 px_asset_fin_rec_new.percent_salvage_value := l_asset_fin_rec_new.percent_salvage_value;
15216 px_asset_fin_rec_new.allowed_deprn_limit := l_asset_fin_rec_new.allowed_deprn_limit;
15217 px_asset_fin_rec_new.unrevalued_cost := l_asset_fin_rec_new.unrevalued_cost;
15218 px_asset_fin_rec_new.production_capacity := l_asset_fin_rec_new.production_capacity;
15219 px_asset_fin_rec_new.reval_ceiling := l_asset_fin_rec_new.reval_ceiling;
15220 px_asset_fin_rec_new.adjusted_cost := l_asset_fin_rec_new.adjusted_cost;
15221 px_asset_fin_rec_new.rate_adjustment_factor := l_asset_fin_rec_new.rate_adjustment_factor;
15222 px_asset_fin_rec_new.reval_amortization_basis := l_asset_fin_rec_new.reval_amortization_basis;
15223 px_asset_fin_rec_new.adjusted_capacity := l_asset_fin_rec_new.adjusted_capacity;
15224 px_asset_fin_rec_new.formula_factor := l_asset_fin_rec_new.formula_factor;
15225 px_asset_fin_rec_new.eofy_reserve := l_asset_fin_rec_new.eofy_reserve;
15226
15227 --
15231 --
15228 -- When returning catch up expenses, amounts in p_asset_deprn_rec_adj need to be
15229 -- excluded because it was included at beginning to find correct catchup but
15230 -- these amounts cannot be expensed in this period.
15232 -- Bug3548724:if this is addition, there is no need to back out adj reserve
15233 -- because it is reserve from previous period
15234 --
15235
15236 -- Japan Bug 6645061 use period_counter_fully_extended for assets which
15237 -- have extended_deprn_flag set.
15238 begin
15239 -- Bug 8211842: Use pc_fully_extended only if the asset has started
15240 -- extended depreciation
15241 if p_period_rec.period_counter >=
15242 nvl(p_asset_fin_rec_old.extended_depreciation_period,999999) then
15243 l_start_extended := 'Y';
15244 end if;
15245
15246 select decode(nvl(p_asset_fin_rec_old.extended_deprn_flag,'N'),
15247 'Y', decode(l_start_extended,
15248 'Y', p_asset_fin_rec_old.period_counter_fully_extended,
15249 p_asset_fin_rec_old.period_counter_fully_reserved),
15250 p_asset_fin_rec_old.period_counter_fully_reserved),
15251 decode(nvl(l_asset_fin_rec_new.extended_deprn_flag,'N'),
15252 'Y', decode(l_start_extended,
15253 'Y', l_asset_fin_rec_new.period_counter_fully_extended,
15254 l_asset_fin_rec_new.period_counter_fully_reserved),
15255 l_asset_fin_rec_new.period_counter_fully_reserved)
15256 into l_old_pc_reserved,
15257 l_new_pc_reserved
15258 from dual;
15259
15260 end;
15261
15262 -- bug 5383699 nvl clause added
15263 if (l_old_pc_reserved is not null
15264 and l_new_pc_reserved is not null) then
15265
15266 -- Fix for Bug #6403182. If the period you are backdating the retirement
15267 -- too is before the period that the retirement occurs in, then you
15268 -- need to backout some reserve.
15269 -- Japan Bug 6645061
15270 if (nvl(l_period_rec.period_counter, 9999999) <= l_old_pc_reserved) then
15271
15272 x_deprn_expense := nvl(l_asset_deprn_rec.deprn_reserve, 0) -
15273 nvl(p_asset_deprn_rec.deprn_reserve, 0);
15274 x_bonus_expense := nvl(l_asset_deprn_rec.bonus_deprn_reserve, 0) -
15275 nvl(p_asset_deprn_rec.bonus_deprn_reserve, 0);
15276 x_impairment_expense := nvl(l_asset_deprn_rec.impairment_reserve, 0) -
15277 nvl(p_asset_deprn_rec.impairment_reserve, 0);
15278 else
15279 -- Bug 5377543
15280 x_deprn_expense := 0;
15281 x_bonus_expense := 0;
15282 x_impairment_expense := 0;
15283 end if;
15284
15285 elsif (p_trans_rec.transaction_type_code = 'ADDITION') then
15286 x_deprn_expense := nvl(l_asset_deprn_rec.deprn_reserve, 0) -
15287 nvl(p_asset_deprn_rec.deprn_reserve, 0);
15288 x_bonus_expense := nvl(l_asset_deprn_rec.bonus_deprn_reserve, 0) -
15289 nvl(p_asset_deprn_rec.bonus_deprn_reserve, 0);
15290 x_impairment_expense := nvl(l_asset_deprn_rec.impairment_reserve, 0) -
15291 nvl(p_asset_deprn_rec.impairment_reserve, 0);
15292
15293 --Bug 8398064:Begin
15294 elsif ((p_trans_rec.transaction_type_code LIKE '%RETIREMENT')
15295 and (NOT l_amort_adjusted_flag) and (l_overlapping_rets)) THEN
15296 --
15297 --
15298 -- If the overlaps is purely composed of partial retirements/retirements
15299 -- , we can charge the movement of ytd to expense
15300 --
15301 x_deprn_expense := nvl(l_asset_deprn_rec.ytd_deprn, 0) -
15302 nvl(p_asset_deprn_rec.ytd_deprn, 0) -
15303 nvl(p_asset_deprn_rec_adj.ytd_deprn, 0) ;
15304 x_bonus_expense := nvl(l_asset_deprn_rec.bonus_ytd_deprn, 0) -
15305 nvl(p_asset_deprn_rec.bonus_ytd_deprn, 0) -
15306 nvl(p_asset_deprn_rec_adj.bonus_ytd_deprn, 0);
15307 x_impairment_expense := nvl(l_asset_deprn_rec.ytd_impairment, 0) -
15308 nvl(p_asset_deprn_rec.ytd_impairment, 0) -
15309 nvl(p_asset_deprn_rec_adj.ytd_impairment, 0);
15310 if (p_log_level_rec.statement_level) then
15311 fa_debug_pkg.add(l_calling_fn, '++ Bug8398064: x_deprn_expense (back out expense) ', x_deprn_expense,p_log_level_rec => p_log_level_rec);
15312 end if;
15313 --Bug 8398064:End
15314 elsif (p_trans_rec.transaction_type_code = 'REINSTATEMENT') then
15315 -- Bug 5726160
15316 if p_running_mode = fa_std_types.FA_DPR_CATCHUP then
15317 x_deprn_expense := nvl(l_asset_deprn_rec.deprn_reserve, 0) -
15318 nvl(l_catchup_begin_deprn_rec.deprn_reserve, 0);
15319 x_bonus_expense := nvl(l_asset_deprn_rec.bonus_deprn_reserve, 0) -
15320 nvl(l_catchup_begin_deprn_rec.bonus_deprn_reserve, 0);
15321 x_impairment_expense := nvl(l_asset_deprn_rec.impairment_reserve, 0) -
15322 nvl(l_catchup_begin_deprn_rec.impairment_reserve, 0);
15323 else
15324 x_deprn_expense := nvl(l_asset_deprn_rec.deprn_reserve, 0) -
15325 nvl(p_asset_deprn_rec.deprn_reserve, 0);
15326 x_bonus_expense := nvl(l_asset_deprn_rec.bonus_deprn_reserve, 0) -
15327 nvl(p_asset_deprn_rec.bonus_deprn_reserve, 0);
15328 x_impairment_expense := nvl(l_asset_deprn_rec.impairment_reserve, 0) -
15329 nvl(p_asset_deprn_rec.impairment_reserve, 0);
15330 end if;
15331
15332 else
15333 x_deprn_expense := nvl(l_asset_deprn_rec.deprn_reserve, 0) -
15334 nvl(p_asset_deprn_rec.deprn_reserve, 0) -
15338 nvl(p_asset_deprn_rec_adj.bonus_deprn_reserve, 0);
15335 nvl(p_asset_deprn_rec_adj.deprn_reserve, 0);
15336 x_bonus_expense := nvl(l_asset_deprn_rec.bonus_deprn_reserve, 0) -
15337 nvl(p_asset_deprn_rec.bonus_deprn_reserve, 0) -
15339 x_impairment_expense := nvl(l_asset_deprn_rec.impairment_reserve, 0) -
15340 nvl(p_asset_deprn_rec.impairment_reserve, 0) -
15341 nvl(p_asset_deprn_rec_adj.impairment_reserve, 0);
15342 end if;
15343
15344 if (p_log_level_rec.statement_level) then
15345 fa_debug_pkg.add(l_calling_fn, '++++ Recalc Step 11 : Set x_deprn_expense ','...', p_log_level_rec => p_log_level_rec);
15346 fa_debug_pkg.add(l_calling_fn, '++ p_asset_fin_rec_old.period_counter_fully_reserved', p_asset_fin_rec_old.period_counter_fully_reserved, p_log_level_rec => p_log_level_rec);
15347 fa_debug_pkg.add(l_calling_fn, '++ l_asset_fin_rec_new.period_counter_fully_reserved', l_asset_fin_rec_new.period_counter_fully_reserved, p_log_level_rec => p_log_level_rec);
15348 fa_debug_pkg.add(l_calling_fn, '++ ++ p_asset_deprn_rec.deprn_reserve (INPUT)', p_asset_deprn_rec.deprn_reserve);
15349 fa_debug_pkg.add(l_calling_fn, '++ ++ p_asset_deprn_rec_adj.deprn_reserve (INPUT)', p_asset_deprn_rec_adj.deprn_reserve);
15350 fa_debug_pkg.add(l_calling_fn, '++ ++ l_asset_deprn_rec.deprn_reserve (NEW)', l_asset_deprn_rec.deprn_reserve);
15351 fa_debug_pkg.add(l_calling_fn, '++ ++ x_deprn_expense (INPUT-NEW=OUTPUT)', x_deprn_expense);
15352 end if;
15353
15354 --+++++++++ Call member level maintenance for tracking +++++++
15355 if nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
15356
15357 if not FA_TRACK_MEMBER_PVT.update_member_books(p_trans_rec=> p_trans_rec,
15358 p_asset_hdr_rec => p_asset_hdr_rec,
15359 p_dpr_in => l_dpr_in,
15360 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
15361 if (p_log_level_rec.statement_level) then
15362 fa_debug_pkg.add(l_calling_fn, 'Error calling',
15363 'FA_TRACK_MEMBER_PVT.update_member_books', p_log_level_rec => p_log_level_rec);
15364 end if;
15365
15366 raise calc_failed;
15367 end if;
15368
15369 fa_track_member_pvt.p_track_member_eofy_table.delete;
15370
15371 if (p_log_level_rec.statement_level) then
15372 fa_debug_pkg.add(l_calling_fn, 'fa_track_member_pvt.p_track_member_eofy_table',
15373 'deleted', p_log_level_rec => p_log_level_rec);
15374 end if;
15375
15376 end if; -- nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE'
15377
15378 if (p_log_level_rec.statement_level) then
15379 fa_debug_pkg.add(l_calling_fn, 'End',
15380 x_deprn_expense||':'||x_bonus_expense, p_log_level_rec => p_log_level_rec);
15381 end if;
15382
15383 return true;
15384
15385 EXCEPTION
15386 WHEN invalid_trx_to_overlap THEN
15387 if (p_log_level_rec.statement_level) then
15388 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'invalid_trx_to_overlap', p_log_level_rec => p_log_level_rec);
15389 end if;
15390
15391 if c_get_ths_adj%ISOPEN then
15392 CLOSE c_get_ths_adj;
15393 end if;
15394
15395 fa_srvr_msg.add_message(calling_fn => l_calling_fn,
15396 name => 'FA_INVALID_TRX_TO_OVERLAP', p_log_level_rec => p_log_level_rec);
15397 return false;
15398 WHEN calc_failed THEN
15399 if (p_log_level_rec.statement_level) then
15400 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'calc_failed', p_log_level_rec => p_log_level_rec);
15401 end if;
15402
15403 if c_get_ths_adj%ISOPEN then
15404 CLOSE c_get_ths_adj;
15405 end if;
15406
15407 -- Bug 8211842
15408 if c_get_retirement_pdate%ISOPEN then
15409 CLOSE c_get_retirement_pdate;
15410 end if;
15411
15412 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
15413 return false;
15414
15415 WHEN OTHERS THEN
15416 if (p_log_level_rec.statement_level) then
15417 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
15418 end if;
15419
15420 if c_check_overlap%ISOPEN then
15421 CLOSE c_check_overlap;
15422 end if;
15423
15424 if c_get_ths_adj%ISOPEN then
15425 CLOSE c_get_ths_adj;
15426 end if;
15427
15428 if c_get_next_ths%ISOPEN then
15429 CLOSE c_get_next_ths;
15430 end if;
15431
15432 if c_get_retirement%ISOPEN then
15433 CLOSE c_get_retirement;
15434 end if;
15435
15436 -- Bug 8211842
15437 if c_get_retirement_pdate%ISOPEN then
15438 CLOSE c_get_retirement_pdate;
15439 end if;
15440
15441 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
15442 raise;
15443 END Recalculate;
15444
15445 ---------------------------------------------------------------------------
15446
15447 FUNCTION faxama
15448 (px_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
15449 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type,
15450 p_asset_desc_rec IN FA_API_TYPES.asset_desc_rec_type,
15451 p_asset_cat_rec IN FA_API_TYPES.asset_cat_rec_type,
15452 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
15453 p_asset_fin_rec_old IN FA_API_TYPES.asset_fin_rec_type,
15454 p_asset_fin_rec_adj IN FA_API_TYPES.asset_fin_rec_type default null,
15458 p_period_rec IN FA_API_TYPES.period_rec_type,
15455 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
15456 p_asset_deprn_rec IN FA_API_TYPES.asset_deprn_rec_type,
15457 p_asset_deprn_rec_adj IN FA_API_TYPES.asset_deprn_rec_type default null,
15459 p_mrc_sob_type_code IN VARCHAR2,
15460 p_running_mode IN NUMBER,
15461 p_used_by_revaluation IN NUMBER,
15462 p_reclassed_asset_id NUMBER default null,
15463 p_reclass_src_dest VARCHAR2 default null,
15464 p_reclassed_asset_dpis DATE default null,
15465 x_deprn_exp OUT NOCOPY NUMBER,
15466 x_bonus_deprn_exp OUT NOCOPY NUMBER,
15467 x_impairment_exp OUT NOCOPY NUMBER
15468 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return boolean IS
15469
15470 l_calling_fn varchar2(50) := 'FA_AMORT_PVT.faxama';
15471 l_reval_deprn_rsv_adj number :=0;
15472 l_afn_zero number:=0;
15473
15474 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
15475 l_asset_deprn_rec_new FA_API_TYPES.asset_deprn_rec_type; -- Added to call calc_raf_adj
15476
15477 calc_err EXCEPTION;
15478
15479 /*
15480 err number;
15481
15482 cursor c_get_profiler is
15483 select runid,
15484 run_date,
15485 run_comment
15486 from plsql_profiler_runs;
15487 */
15488
15489 begin <<faxama>>
15490 --tk_util.debug('-');
15491 --tk_util.debug('-');
15492 --tk_util.debug('-');
15493 --tk_util.debug('-');
15494 --tk_util.debug('-');
15495 --tk_util.debug('-+++++-');
15496 if (p_log_level_rec.statement_level) then
15497 fa_debug_pkg.add(l_calling_fn, 'Begin', p_asset_type_rec.asset_type||':'||p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
15498 end if;
15499
15500
15501 -- err:=DBMS_PROFILER.START_PROFILER ('faxama:'||to_char(sysdate,'dd-Mon-YYYY hh:mi:ss'));
15502
15503 X_deprn_exp := 0;
15504 X_bonus_deprn_exp := 0;
15505 X_impairment_exp := 0;
15506
15507 if (p_asset_type_rec.asset_type='CIP') then
15508 if (p_log_level_rec.statement_level) then
15509 fa_debug_pkg.add(l_calling_fn, 'Nothing to calculate with CIP asset',' ', p_log_level_rec => p_log_level_rec);
15510 fa_debug_pkg.add(l_calling_fn, 'Exiting faxama immediately',
15511 p_asset_type_rec.asset_type||':'||p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
15512 end if;
15513 return true;
15514
15515 --FA_SRVR_MSG.ADD_MESSAGE
15516 -- (CALLING_FN => 'FA_AMORT_PKG.faxama',
15517 -- NAME => 'FA_AMT_CIP_NOT_ALLOWED',
15518 -- TOKEN1 => 'TYPE',
15519 -- VALUE1 => 'Amortized', p_log_level_rec => p_log_level_rec);
15520 --return FALSE;
15521 end if;
15522
15523 if (p_log_level_rec.statement_level) then
15524 FA_DEBUG_PKG.ADD
15525 (fname => 'FA_AMORT_PKG.faxama',
15526 element => 'First asset_type',
15527 value => p_asset_type_rec.asset_type, p_log_level_rec => p_log_level_rec);
15528 end if;
15529
15530 --
15531 -- Function call faxraf may be removed.
15532 --
15533 -- if (not faxraf
15534 -- (px_trans_rec => px_trans_rec,
15535 -- p_asset_hdr_rec => p_asset_hdr_rec,
15536 -- p_asset_desc_rec => p_asset_desc_rec,
15537 -- p_asset_cat_rec => p_asset_cat_rec,
15538 -- p_asset_type_rec => p_asset_type_rec,
15539 -- p_asset_fin_rec_old => p_asset_fin_rec_old,
15540 -- px_asset_fin_rec_new => px_asset_fin_rec_new,
15541 -- p_asset_deprn_rec => p_asset_deprn_rec,
15542 -- p_period_rec => p_period_rec,
15543 -- px_deprn_exp => x_deprn_exp,
15544 -- px_bonus_deprn_exp => x_bonus_deprn_exp,
15545 -- px_impairment_exp => x_impairment_exp,
15546 -- px_reval_deprn_rsv_adj => l_reval_deprn_rsv_adj,
15547 -- p_mrc_sob_type_code => p_mrc_sob_type_code,
15548 -- p_running_mode => p_running_mode,
15549 -- p_used_by_revaluation => p_used_by_revaluation)) then
15550 -- raise calc_err;
15551 -- end if;
15552
15553 --tk_util.DumpTrxRec(px_trans_rec, 'px_trans_rec');
15554 --tk_util.DumpFinRec(p_asset_fin_rec_old, 'old fin_rec');
15555 --tk_util.DumpFinRec(p_asset_fin_rec_adj, 'adj fin_rec');
15556 --tk_util.DumpFinRec(px_asset_fin_rec_new, 'new_fin_rec');
15557 --tk_util.DumpDeprnRec(p_asset_deprn_rec, 'old deprn');
15558 --tk_util.DumpDeprnRec(p_asset_deprn_rec_adj, 'adj deprn');
15559
15560 /*Bug#8652791- reverted changes done for #8417751 */
15561 if (px_trans_rec.transaction_type_code = 'REINSTATEMENT') then
15562 --Bug6401134
15563 px_asset_fin_rec_new := p_asset_fin_rec_old;
15564 end if;
15565
15566 --
15567 -- Energy: Need to reinstate member reserve entry cre
15568 if (nvl(p_asset_fin_rec_old.tracking_method, 'NO TRACK') = 'ALLOCATE') and -- ENERGY
15569 (fa_cache_pkg.fazcdrd_record.rule_name = 'ENERGY PERIOD END BALANCE') and -- ENERGY
15570 (px_trans_rec.transaction_type_code = 'REINSTATEMENT') then -- ENERGY
15571 if (p_log_level_rec.statement_level) then
15572 fa_debug_pkg.add(l_calling_fn, 'calling function ',
15573 'FA_AMORT_PVT.calc_raf_adj_cost', p_log_level_rec => p_log_level_rec);
15574 end if;
15575
15576 l_asset_deprn_rec_new := p_asset_deprn_rec;
15580 /* Added if condition for bug 8484007 */
15577 --Bug6401134 commented this code ass it has already been written before the if condition
15578 -- px_asset_fin_rec_new := p_asset_fin_rec_old;
15579 px_asset_fin_rec_new.cost := p_asset_fin_rec_old.cost + nvl(p_asset_fin_rec_adj.cost, 0);
15581 if (nvl(px_asset_fin_rec_new.percent_salvage_value,0) > 0) then
15582 px_asset_fin_rec_new.salvage_value := px_asset_fin_rec_new.cost * px_asset_fin_rec_new.percent_salvage_value;
15583 else
15584 px_asset_fin_rec_new.salvage_value := p_asset_fin_rec_old.salvage_value + nvl(p_asset_fin_rec_adj.salvage_value, 0);
15585 end if;
15586 px_asset_fin_rec_new.unrevalued_cost := px_asset_fin_rec_new.cost;
15587 /* End 8484007 */
15588 --Bug8425794 / 8244128 px_asset_fin_rec_new.salvage_value := px_asset_fin_rec_new.cost * .1;
15589 px_asset_fin_rec_new.recoverable_cost := px_asset_fin_rec_new.cost - px_asset_fin_rec_new.salvage_value;
15590 px_asset_fin_rec_new.adjusted_recoverable_cost := px_asset_fin_rec_new.recoverable_cost;
15591
15592 if not FA_AMORT_PVT.calc_raf_adj_cost
15593 (p_trans_rec => px_trans_rec,
15594 p_asset_hdr_rec => p_asset_hdr_rec,
15595 p_asset_desc_rec => p_asset_desc_rec,
15596 p_asset_type_rec => p_asset_type_rec,
15597 p_asset_fin_rec_old => p_asset_fin_rec_old,
15598 px_asset_fin_rec_new => px_asset_fin_rec_new,
15599 p_asset_deprn_rec_adj => p_asset_deprn_rec_adj,
15600 p_asset_deprn_rec_new => l_asset_deprn_rec_new,
15601 p_period_rec => p_period_rec,
15602 -- p_group_reclass_options_rec => p_group_reclass_options_rec,
15603 p_mrc_sob_type_code => p_mrc_sob_type_code
15604 , p_log_level_rec => p_log_level_rec) then
15605 raise calc_err;
15606 end if;
15607 else
15608 populate_fin_rec(
15609 p_trans_rec => px_trans_rec,
15610 p_asset_fin_rec_old => p_asset_fin_rec_old,
15611 p_asset_fin_rec_adj => p_asset_fin_rec_adj,
15612 p_asset_fin_rec_new => px_asset_fin_rec_new,
15613 x_asset_fin_rec_adj => l_asset_fin_rec_adj,
15614 p_log_level_rec => p_log_level_rec);
15615
15616 if (not Recalculate(
15617 p_trans_rec => px_trans_rec,
15618 p_asset_hdr_rec => p_asset_hdr_rec,
15619 p_asset_type_rec => p_asset_type_rec,
15620 p_asset_desc_rec => p_asset_desc_rec,
15621 p_asset_fin_rec_old => p_asset_fin_rec_old,
15622 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
15623 p_period_rec => p_period_rec,
15624 px_asset_fin_rec_new => px_asset_fin_rec_new,
15625 p_asset_deprn_rec => p_asset_deprn_rec,
15626 p_asset_deprn_rec_adj => p_asset_deprn_rec_adj,
15627 x_deprn_expense => x_deprn_exp,
15628 x_bonus_expense => x_bonus_deprn_exp,
15629 x_impairment_expense => x_impairment_exp,
15630 p_running_mode => p_running_mode,
15631 p_used_by_revaluation => p_used_by_revaluation,
15632 p_reclassed_asset_id => p_reclassed_asset_id,
15633 p_reclass_src_dest => p_reclass_src_dest,
15634 p_reclassed_asset_dpis => p_reclassed_asset_dpis,
15635 p_source_transaction_type_code
15636 => px_trans_rec.transaction_type_code,
15637 p_mrc_sob_type_code => p_mrc_sob_type_code,
15638 p_calling_fn => l_calling_fn,
15639 p_log_level_rec => p_log_level_rec)) then
15640 raise calc_err;
15641 end if;
15642
15643 end if;
15644 --tk_util.DumpFinRec(px_asset_fin_rec_new, 'Nfaxama');
15645
15646 if (p_log_level_rec.statement_level) then
15647 fa_debug_pkg.add(l_calling_fn, 'End', p_asset_type_rec.asset_type||':'||p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
15648 end if;
15649 --tk_util.debug('-+++++-');
15650 --tk_util.debug('-');
15651 --tk_util.debug('-');
15652 --tk_util.debug('-');
15653 --tk_util.debug('-');
15654 --tk_util.debug('-');
15655
15656 -- err:=DBMS_PROFILER.STOP_PROFILER;
15657
15658 /*
15659 for r_get_profiler in c_get_profiler loop
15660 null;
15661 --tk_util.debug('runid: '||to_char(r_get_profiler.runid));
15662 --tk_util.debug('run_date: '||to_char(r_get_profiler.run_date, 'DD-MON-YYYY HH24:MI:SS'));
15663 --tk_util.debug('run_comment: '||r_get_profiler.run_comment);
15664 end loop;
15665 */
15666
15667 return TRUE;
15668
15669 exception
15670 when calc_err then
15671 if (p_log_level_rec.statement_level) then
15672 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'calc_err', p_log_level_rec => p_log_level_rec);
15673 end if;
15674
15675 FA_SRVR_MSG.ADD_SQL_ERROR(CALLING_FN => l_calling_fn, p_log_level_rec => p_log_level_rec);
15676 return false;
15677
15678 when others then
15679 if (p_log_level_rec.statement_level) then
15680 fa_debug_pkg.add(l_calling_fn, 'EXCEPTION', 'others: '||sqlerrm, p_log_level_rec => p_log_level_rec);
15681 end if;
15682
15683 FA_SRVR_MSG.ADD_SQL_ERROR(CALLING_FN => l_calling_fn, p_log_level_rec => p_log_level_rec);
15684 return FALSE;
15685 end faxama;
15686
15687 ----------------------------------------------------------------------------
15688
15692 -- prorate period upto right before the amortization period
15689 -- backdate amortization enhancement - begin
15690 -- this function will get books row of addition transaction
15691 -- and call faxcde to calculate what the actual reserve is from the
15693
15694 FUNCTION get_reserve(px_trans_rec in out nocopy FA_API_TYPES.trans_rec_type,
15695 p_asset_hdr_rec in FA_API_TYPES.asset_hdr_rec_type,
15696 p_asset_desc_rec in FA_API_TYPES.asset_desc_rec_type,
15697 px_asset_fin_rec in out nocopy FA_API_TYPES.asset_fin_rec_type,
15698 p_add_txn_id in number,
15699 p_amortize_fy in integer,
15700 p_amortize_per_num in integer,
15701 p_pers_per_yr in integer,
15702 p_mrc_sob_type_code in varchar2,
15703 x_deprn_rsv out nocopy number,
15704 x_bonus_deprn_rsv out nocopy number,
15705 x_impairment_rsv out nocopy number, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
15706 return boolean is
15707
15708 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
15709 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
15710
15711 l_dpr_row FA_STD_TYPES.dpr_struct;
15712 l_dpr_arr FA_STD_TYPES.dpr_arr_type;
15713 l_dpr_out FA_STD_TYPES.dpr_out_struct;
15714
15715 l_cur_deprn_rsv number;
15716 l_cur_bonus_deprn_rsv number;
15717 l_cur_impairment_rsv number;
15718
15719 dummy_var varchar2(15);
15720 dummy_num number;
15721
15722 begin
15723
15724 l_asset_fin_rec := px_asset_fin_rec;
15725
15726 if p_mrc_sob_type_code = 'R' then
15727 select adjusted_cost,
15728 recoverable_cost,
15729 reval_amortization_basis,
15730 adjusted_rate,
15731 production_capacity,
15732 adjusted_capacity,
15733 adjusted_recoverable_cost,
15734 salvage_value,
15735 deprn_method_code,
15736 life_in_months,
15737 ceiling_name,
15738 bonus_rule,
15739 annual_deprn_rounding_flag,
15740 rate_adjustment_factor,
15741 prorate_date,
15742 deprn_start_date,
15743 date_placed_in_service
15744 into l_asset_fin_rec.adjusted_cost,
15745 l_asset_fin_rec.recoverable_cost,
15746 l_asset_fin_rec.reval_amortization_basis,
15747 l_asset_fin_rec.adjusted_rate,
15748 l_asset_fin_rec.production_capacity,
15749 l_asset_fin_rec.adjusted_capacity,
15750 l_asset_fin_rec.adjusted_recoverable_cost,
15751 l_asset_fin_rec.salvage_value,
15752 l_asset_fin_rec.deprn_method_code,
15753 l_asset_fin_rec.life_in_months,
15754 l_asset_fin_rec.ceiling_name,
15755 l_asset_fin_rec.bonus_rule,
15756 l_asset_fin_rec.annual_deprn_rounding_flag,
15757 l_asset_fin_rec.rate_adjustment_factor,
15758 l_asset_fin_rec.prorate_date,
15759 l_asset_fin_rec.deprn_start_date,
15760 l_asset_fin_rec.date_placed_in_service
15761 from fa_mc_books bk
15762 where bk.book_type_code = p_asset_hdr_rec.book_type_code
15763 and bk.asset_id = p_asset_hdr_rec.asset_id
15764 and bk.transaction_header_id_in = p_add_txn_id
15765 and bk.set_of_books_id = p_asset_hdr_rec.set_of_books_id;
15766 else
15767 select adjusted_cost,
15768 recoverable_cost,
15769 reval_amortization_basis,
15770 adjusted_rate,
15771 production_capacity,
15772 adjusted_capacity,
15773 adjusted_recoverable_cost,
15774 salvage_value,
15775 deprn_method_code,
15776 life_in_months,
15777 ceiling_name,
15778 bonus_rule,
15779 annual_deprn_rounding_flag,
15780 rate_adjustment_factor,
15781 prorate_date,
15782 deprn_start_date,
15783 date_placed_in_service
15784 into l_asset_fin_rec.adjusted_cost,
15785 l_asset_fin_rec.recoverable_cost,
15786 l_asset_fin_rec.reval_amortization_basis,
15787 l_asset_fin_rec.adjusted_rate,
15788 l_asset_fin_rec.production_capacity,
15789 l_asset_fin_rec.adjusted_capacity,
15790 l_asset_fin_rec.adjusted_recoverable_cost,
15791 l_asset_fin_rec.salvage_value,
15792 l_asset_fin_rec.deprn_method_code,
15793 l_asset_fin_rec.life_in_months,
15794 l_asset_fin_rec.ceiling_name,
15795 l_asset_fin_rec.bonus_rule,
15796 l_asset_fin_rec.annual_deprn_rounding_flag,
15797 l_asset_fin_rec.rate_adjustment_factor,
15798 l_asset_fin_rec.prorate_date,
15799 l_asset_fin_rec.deprn_start_date,
15800 l_asset_fin_rec.date_placed_in_service
15801 from fa_books bk
15802 where bk.book_type_code = p_asset_hdr_rec.book_type_code
15803 and bk.asset_id = p_asset_hdr_rec.asset_id
15804 and bk.transaction_header_id_in = p_add_txn_id;
15805 end if;
15806
15807 if not FA_EXP_PVT.faxbds
15808 (p_asset_hdr_rec => p_asset_hdr_rec,
15809 px_asset_fin_rec_new => l_asset_fin_rec,
15810 p_asset_deprn_rec => l_asset_deprn_rec,
15814 X_bonus_deprn_rsv => l_cur_bonus_deprn_rsv,
15811 p_asset_desc_rec => p_asset_desc_rec,
15812 X_dpr_ptr => l_dpr_row,
15813 X_deprn_rsv => l_cur_deprn_rsv,
15815 X_impairment_rsv => l_cur_impairment_rsv,
15816 p_amortized_flag => FALSE,
15817 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
15818 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
15819 return (FALSE);
15820 end if;
15821
15822 if (p_amortize_per_num = 1) then
15823 l_dpr_row.y_end := p_amortize_fy - 1;
15824 l_dpr_row.p_cl_end := p_pers_per_yr;
15825 else
15826 l_dpr_row.y_end := p_amortize_fy;
15827 l_dpr_row.p_cl_end := p_amortize_per_num - 1;
15828 end if;
15829
15830 l_dpr_row.bonus_rule := '';
15831 l_dpr_row.reval_rsv := 0;
15832 l_dpr_row.prior_fy_exp := 0;
15833 l_dpr_row.ytd_deprn := 0;
15834 l_dpr_row.mrc_sob_type_code := p_mrc_sob_type_code;
15835 l_dpr_row.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
15836
15837 if (not FA_CDE_PKG.faxcde(l_dpr_row,
15838 l_dpr_arr,
15839 l_dpr_out,
15840 FA_STD_TYPES.FA_DPR_NORMAL, p_log_level_rec => p_log_level_rec)) then
15841 FA_SRVR_MSG.ADD_MESSAGE
15842 (CALLING_FN=>'faxcde3', p_log_level_rec => p_log_level_rec);
15843 FA_SRVR_MSG.ADD_MESSAGE
15844 (CALLING_FN => 'FA_AMORT_PKG.get_reserve',
15845 NAME=>'FA_AMT_CAL_DP_EXP', p_log_level_rec => p_log_level_rec);
15846 return FALSE;
15847 end if;
15848
15849 px_trans_rec.deprn_override_flag := l_dpr_out.deprn_override_flag;
15850 x_deprn_rsv := l_dpr_out.new_deprn_rsv;
15851 x_bonus_deprn_rsv := l_dpr_out.new_bonus_deprn_rsv;
15852 x_impairment_rsv := l_dpr_out.new_impairment_rsv;
15853
15854 return TRUE;
15855
15856 exception
15857 when others then
15858 FA_SRVR_MSG.ADD_SQL_ERROR
15859 (CALLING_FN => 'FA_AMORT_PKG.get_reserve', p_log_level_rec => p_log_level_rec);
15860 return FALSE;
15861
15862 end get_reserve;
15863
15864 -- backdate amortization enhancement - end
15865
15866 -------------------------------------------------------------------------------
15867
15868 -- New function: faxnac
15869 -- Alternative flat rate depreciation calculation.
15870 -- If deprn_basis_formula = 'STRICT_FLAT', use the new adjustment method.
15871 -- When using a NBV based flat rate method, adjustment base amount will be
15872 -- the NBV of the beginning of the year, and when using a Cost based flat rate
15873 -- method, adjustment base amount will be the recoverable cost.
15874
15875 FUNCTION faxnac (p_method_code in varchar2,
15876 p_life in number,
15877 p_rec_cost in number,
15878 p_prior_fy_exp in number,
15879 p_deprn_rsv in number,
15880 p_ytd_deprn in number,
15881 px_adj_cost in out nocopy number, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return boolean is
15882
15883 l_deprn_basis_formula varchar2(30);
15884 l_rate_source_rule varchar2(10);
15885 l_deprn_basis_rule varchar2(4);
15886 l_dummy_bool boolean;
15887 l_dummy_int integer;
15888
15889 begin
15890
15891 if px_adj_cost is null then
15892 fa_srvr_msg.add_message(name => '***ADJ_COST_NULL***',
15893 calling_fn => 'FA_AMORT_PKG.faxnac', p_log_level_rec => p_log_level_rec);
15894 return false;
15895 end if;
15896
15897 if (not fa_cache_pkg.fazccmt(p_method_code,
15898 p_life, p_log_level_rec => p_log_level_rec)) then
15899 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac', p_log_level_rec => p_log_level_rec);
15900 return false;
15901 end if;
15902
15903 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule_id;
15904
15905 if l_deprn_basis_formula is null then
15906 return true;
15907 end if;
15908
15909 -- if l_deprn_basis_formula = fa_std_types.FAD_DBF_FLAT then
15910 if l_deprn_basis_formula = 'STRICT_FLAT' then
15911 if (not fa_cache_pkg.fazccmt(p_method_code,
15912 p_life, p_log_level_rec => p_log_level_rec)) then
15913 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac', p_log_level_rec => p_log_level_rec);
15914 return false;
15915 end if;
15916
15917 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
15918 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
15919
15920 if l_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT and
15921 l_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_COST then
15922 if p_rec_cost is null then
15923 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac', p_log_level_rec => p_log_level_rec);
15924 return false;
15925 end if;
15926 px_adj_cost := p_rec_cost;
15927 elsif l_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT and
15928 l_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_NBV then
15929 if p_rec_cost is null or
15930 not ((p_prior_fy_exp is not null) or
15931 (p_deprn_rsv is not null and p_ytd_deprn is not null) ) then
15932 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac', p_log_level_rec => p_log_level_rec);
15933 return false;
15934 end if;
15935
15939 px_adj_cost := p_rec_cost - p_prior_fy_exp;
15936 if p_prior_fy_exp is null then
15937 px_adj_cost := p_rec_cost - p_deprn_rsv + p_ytd_deprn;
15938 else
15940 end if;
15941 end if;
15942 end if;
15943 return true;
15944
15945 end faxnac;
15946
15947 FUNCTION faxraf
15948 (px_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
15949 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type,
15950 p_asset_desc_rec IN FA_API_TYPES.asset_desc_rec_type,
15951 p_asset_cat_rec IN FA_API_TYPES.asset_cat_rec_type,
15952 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
15953 p_asset_fin_rec_old IN FA_API_TYPES.asset_fin_rec_type,
15954 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
15955 p_asset_deprn_rec IN FA_API_TYPES.asset_deprn_rec_type,
15956 p_period_rec IN FA_API_TYPES.period_rec_type,
15957 px_deprn_exp IN OUT NOCOPY number,
15958 px_bonus_deprn_exp IN OUT NOCOPY number,
15959 px_impairment_exp IN OUT NOCOPY number,
15960 px_reval_deprn_rsv_adj IN out NOCOPY number,
15961 p_mrc_sob_type_code IN VARCHAR2,
15962 p_running_mode IN NUMBER,
15963 p_used_by_revaluation IN NUMBER
15964 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return boolean IS
15965
15966 l_dpr_row FA_STD_TYPES.dpr_struct;
15967 l_dpr_out FA_STD_TYPES.dpr_out_struct;
15968 l_dpr_arr FA_STD_TYPES.dpr_arr_type;
15969 l_add_txn_id number;
15970 l_deprn_basis_rule varchar2(25);
15971 l_rate_source_rule varchar2(25);
15972 l_excl_salvage_val_flag boolean;
15973 l_deprn_last_year_flag boolean;
15974 l_method_id integer;
15975 l_cur_rsv number;
15976 l_cur_bonus_rsv number;
15977 l_cur_impairment_rsv number;
15978 l_cur_ytd number;
15979 l_deprn_rsv number;
15980 l_temp number;
15981 l_err_string varchar2(500);
15982
15983 -- Added for Dated Adjustment
15984 l_fy_name varchar2(45);
15985 l_amortize_per_num integer;
15986 l_amortize_fy integer;
15987 l_start_jdate integer;
15988 l_pers_per_yr integer;
15989 l_amortization_start_jdate integer;
15990 l_cur_fy integer;
15991 l_cur_per_num integer;
15992 l_last_per_ctr integer;
15993 l_amortize_per_ctr integer;
15994 l_adjustment_amount number;
15995 l_rsv_amount number;
15996 l_deprn_summary fa_std_types.fa_deprn_row_struct;
15997 l_dummy_bool boolean; --Used to call QUERY_BALANCES_INT
15998
15999 l_temp_deprn_rsv number; -- reserve at the beginning of fy
16000 l_cur_total_rsv number;
16001
16002 -- Added for bonus rule
16003 l_bonus_rule FA_BONUS_RULES.Bonus_Rule%TYPE;
16004 l_bonus_deprn_rsv number;
16005
16006 l_impairment_rsv number;
16007
16008 -- Manual Override
16009 l_use_override boolean;
16010 l_running_mode number;
16011 l_used_by_revaluation number;
16012
16013 -- Depreciable Basis Rule
16014 l_deprn_used_by_adjustment varchar2(10):= null;
16015
16016 -- multiple backdate amortization enhancement - begin LSON
16017 cursor amort_date_before_add is
16018 select th.transaction_header_id
16019 from fa_transaction_headers th,
16020 fa_deprn_periods dp
16021 where th.book_type_code = p_asset_hdr_rec.book_type_code
16022 and th.asset_id = p_asset_hdr_rec.asset_id
16023 and th.transaction_type_code = 'ADDITION'
16024 and th.book_type_code = dp.book_type_code
16025 and th.date_effective between dp.period_open_date and
16026 nvl(dp.period_close_date,sysdate)
16027 and px_trans_rec.amortization_start_date < dp.calendar_period_open_date;
16028
16029 begin <<faxraf>>
16030
16031 -- override
16032 if p_running_mode = fa_std_types.FA_DPR_PROJECT then
16033 l_running_mode:= fa_std_types.FA_DPR_PROJECT;
16034 else
16035 l_running_mode:= fa_std_types.FA_DPR_NORMAL;
16036 end if;
16037 -- End of Manual Override
16038
16039 if (p_log_level_rec.statement_level) then
16040 FA_DEBUG_PKG.ADD
16041 (fname => 'FA_AMORT_PKG.faxraf',
16042 element => 'method code',
16043 value => px_asset_fin_rec_new.deprn_method_code, p_log_level_rec => p_log_level_rec);
16044 FA_DEBUG_PKG.ADD
16045 (fname => 'FA_AMORT_PKG.faxraf',
16046 element => 'life',
16047 value => px_asset_fin_rec_new.life_in_months, p_log_level_rec => p_log_level_rec);
16048 end if;
16049
16050 if (not FA_CACHE_PKG.fazccmt
16051 (px_asset_fin_rec_new.deprn_method_code,
16052 px_asset_fin_rec_new.life_in_months, p_log_level_rec => p_log_level_rec)) then
16053 FA_SRVR_MSG.ADD_MESSAGE(CALLING_FN => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
16054 return FALSE;
16055 end if;
16056
16057 l_method_id := fa_cache_pkg.fazccmt_record.method_id;
16058 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
16059 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
16060
16061 if fa_cache_pkg.fazccmt_record.exclude_salvage_value_flag = 'YES' then
16062 l_excl_salvage_val_flag := TRUE;
16063 else
16067 if fa_cache_pkg.fazccmt_record.depreciate_lastyear_flag = 'YES' then
16064 l_excl_salvage_val_flag := FALSE;
16065 end if;
16066
16068 l_deprn_last_year_flag := TRUE;
16069 else
16070 l_deprn_last_year_flag := FALSE;
16071 end if;
16072
16073 if (p_log_level_rec.statement_level) then
16074 FA_DEBUG_PKG.ADD
16075 (fname => 'FA_AMORT_PKG.faxraf',
16076 element => 'After fazccmt',
16077 value => 2, p_log_level_rec => p_log_level_rec);
16078 end if;
16079
16080 l_err_string := 'FA_AMT_BD_DPR_STRUCT';
16081
16082 if (p_log_level_rec.statement_level)then
16083 FA_DEBUG_PKG.ADD
16084 (fname =>' FA_AMORT_PKG.faxraf',
16085 element => 'deprn_rounding_flag- before faxbds',
16086 value => px_asset_fin_rec_new.annual_deprn_rounding_flag, p_log_level_rec => p_log_level_rec);
16087 FA_DEBUG_PKG.ADD
16088 (fname => 'FA_AMORT_PKG.faxraf',
16089 element => 'FA_STD TYPE deprn_rnd- before faxbds',
16090 value => FA_STD_TYPES.FA_DPR_ROUND_ADJ, p_log_level_rec => p_log_level_rec);
16091 end if;
16092
16093 if not FA_EXP_PVT.faxbds
16094 (p_asset_hdr_rec => p_asset_hdr_rec,
16095 px_asset_fin_rec_new => px_asset_fin_rec_new,
16096 p_asset_deprn_rec => p_asset_deprn_rec,
16097 p_asset_desc_rec => p_asset_desc_rec,
16098 X_dpr_ptr => l_dpr_row,
16099 X_deprn_rsv => l_cur_rsv,
16100 X_bonus_deprn_rsv => l_cur_bonus_rsv,
16101 X_impairment_rsv => l_cur_impairment_rsv,
16102 p_amortized_flag => TRUE,
16103 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
16104 fa_srvr_msg.add_message (calling_fn => 'fa_amort_pkg.faxraf', p_log_level_rec => p_log_level_rec);
16105 return (FALSE);
16106 end if;
16107
16108 l_cur_rsv := l_cur_rsv + px_reval_deprn_rsv_adj;
16109 l_cur_ytd := l_dpr_row.ytd_deprn;
16110
16111 -- override
16112 l_dpr_row.used_by_adjustment := TRUE;
16113 l_dpr_row.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
16114
16115 -- l_err_string := 'FA_AMT_CAL_DP_EXP';
16116 if (p_log_level_rec.statement_level) then
16117 FA_DEBUG_PKG.ADD
16118 (fname => 'FA_AMORT_PKG.faxraf',
16119 element => 'Before faxcde',
16120 value => 3, p_log_level_rec => p_log_level_rec);
16121 FA_DEBUG_PKG.ADD
16122 (fname => 'FA_AMORT_PKG.faxraf',
16123 element => 'l_dpr_row.deprn_rounding_flag ',
16124 value => l_dpr_row.deprn_rounding_flag, p_log_level_rec => p_log_level_rec);
16125 end if;
16126
16127 -- Added for Dated Adjustment
16128 if (px_trans_rec.amortization_start_date is not null) then
16129
16130 l_last_per_ctr := fa_cache_pkg.fazcbc_record.last_period_counter;
16131 l_cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
16132 l_cur_per_num := mod((l_last_per_ctr+1),l_cur_fy);
16133 l_fy_name := fa_cache_pkg.fazcbc_record.fiscal_year_name;
16134 l_amortization_start_jdate := to_number(to_char(px_trans_rec.amortization_start_date, 'J')); --BMR
16135
16136 if not fa_cache_pkg.fazccp(
16137 l_dpr_row.calendar_type,
16138 l_fy_name,
16139 l_amortization_start_jdate,
16140 l_amortize_per_num,
16141 l_amortize_fy,
16142 l_start_jdate, p_log_level_rec => p_log_level_rec) then
16143 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
16144 return (FALSE);
16145 end if;
16146
16147 if (not((l_cur_fy = l_amortize_fy) and
16148 (l_cur_per_num = l_amortize_per_num))) then
16149 if not fa_cache_pkg.fazcct (l_dpr_row.calendar_type, p_log_level_rec => p_log_level_rec) then
16150 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
16151 return (FALSE);
16152 end if;
16153
16154 -- if this transaction is not at current period, set ADJUSTMENT mode
16155 -- on Depreciable basis rule
16156 l_deprn_used_by_adjustment := 'ADJUSTMENT';
16157
16158 l_pers_per_yr := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
16159
16160 if (l_amortize_per_num = 1) then
16161 l_dpr_row.y_end := l_amortize_fy - 1;
16162 else
16163 l_dpr_row.y_end := l_amortize_fy;
16164 end if;
16165
16166 if (l_amortize_per_num = 1) then
16167 l_dpr_row.p_cl_end := l_pers_per_yr;
16168 else
16169 l_dpr_row.p_cl_end := l_amortize_per_num - 1;
16170 end if;
16171 end if; --if (not((l_cur_fy = l_amortize_fy) and (l_cur_per_num = l_amortize_per_num)))
16172 end if; --if (px_trans_rec.amortization_start_date is not null)
16173
16174 /* ER 14644811 */
16175 if nvl(px_trans_rec.transaction_key,'XX') = 'PR' then
16176 l_dpr_row.p_cl_end := mod((fa_cache_pkg.fazcbc_record.last_period_counter+1),fa_cache_pkg.fazcbc_record.current_fiscal_year);
16177 l_dpr_row.y_end := fa_cache_pkg.fazcbc_record.current_fiscal_year;
16178 end if;
16179
16180 -- End Added for Dated Adjustment
16181
16182 -- bonus: We need to exclude bonus amounts when calculating raf.
16183 -- proved that bonus_rule is excluded, if exist for asset.
16184 l_bonus_rule := l_dpr_row.bonus_rule;
16185 l_dpr_row.bonus_rule := '';
16186
16187 -- row below may not be needed.
16188 -- l_bonus_deprn_rsv := l_dpr_row.bonus_deprn_rsv;
16192 l_cur_total_rsv := l_cur_rsv;
16189 -- l_dpr_row.deprn_rsv is not used.
16190 -- l_deprn_total_rsv := l_dpr_row.deprn_rsv;
16191 -- l_dpr_row.deprn_rsv := l_dpr_row.deprn_rsv - l_dpr_row.bonus_deprn_rsv;
16193 l_cur_rsv := l_cur_rsv - nvl(l_dpr_row.bonus_deprn_rsv,0) -
16194 nvl(l_dpr_row.impairment_rsv,0);
16195
16196 l_used_by_revaluation:= 0;
16197
16198 if p_used_by_revaluation = 1 then
16199 l_used_by_revaluation:= 1;
16200 end if;
16201
16202 if l_used_by_revaluation = 1 then --16275774
16203 l_dpr_row.deprn_override_used_by := 'PRE';
16204 end if;
16205
16206 l_use_override := ((l_rate_source_rule = FA_STD_TYPES.FAD_RSR_FORMULA) or
16207 (((l_rate_source_rule = FA_STD_TYPES.FAD_RSR_CALC) or
16208 (l_rate_source_rule = FA_STD_TYPES.FAD_RSR_TABLE)) and
16209 (l_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_COST)));
16210
16211 -- Set Tracking related variables
16212 l_dpr_row.tracking_method := p_asset_fin_rec_old.tracking_method;
16213 l_dpr_row.allocate_to_fully_ret_flag := p_asset_fin_rec_old.allocate_to_fully_ret_flag;
16214 l_dpr_row.allocate_to_fully_rsv_flag := p_asset_fin_rec_old.allocate_to_fully_rsv_flag;
16215 l_dpr_row.excess_allocation_option := p_asset_fin_rec_old.excess_allocation_option;
16216 l_dpr_row.depreciation_option := p_asset_fin_rec_old.depreciation_option;
16217 l_dpr_row.member_rollup_flag := p_asset_fin_rec_old.member_rollup_flag;
16218 l_dpr_row.mrc_sob_type_code := p_mrc_sob_type_code;
16219 l_dpr_row.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
16220
16221 if (p_log_level_rec.statement_level) then
16222 FA_DEBUG_PKG.ADD(fname => 'FA_AMORT_PKG.faxraf',
16223 element => 'Before call to faxcde regular case',
16224 value => l_dpr_row.bonus_rule, p_log_level_rec => p_log_level_rec);
16225 end if;
16226
16227 if (not FA_CDE_PKG.faxcde
16228 (l_dpr_row,
16229 l_dpr_arr,
16230 l_dpr_out,
16231 FA_STD_TYPES.FA_DPR_NORMAL, p_log_level_rec => p_log_level_rec)) then
16232 FA_SRVR_MSG.ADD_MESSAGE
16233 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
16234 NAME=>'FA_AMT_CAL_DP_EXP', p_log_level_rec => p_log_level_rec);
16235 if (p_log_level_rec.statement_level) then
16236 FA_DEBUG_PKG.ADD
16237 (fname => 'FA_AMORT_PKG.faxraf',
16238 element => 'After faxcde',
16239 value => 'False', p_log_level_rec => p_log_level_rec);
16240 FA_DEBUG_PKG.ADD
16241 (fname => 'FA_AMORT_PKG.faxraf',
16242 element => 'l_dpr_out.rate_adj_factor',
16243 value => l_dpr_row.rate_adj_factor, p_log_level_rec => p_log_level_rec);
16244 FA_DEBUG_PKG.ADD
16245 (fname => 'FA_AMORT_PKG.faxraf',
16246 element => 'l_dpr_out.adj_capacity',
16247 value => l_dpr_row.adj_capacity, p_log_level_rec => p_log_level_rec);
16248 FA_DEBUG_PKG.ADD
16249 (fname => 'FA_AMORT_PKG.faxraf',
16250 element => 'l_dpr_out.capacity',
16251 value => l_dpr_row.capacity, p_log_level_rec => p_log_level_rec);
16252 end if;
16253 return FALSE;
16254 end if;
16255
16256 -- Override
16257 fa_std_types.deprn_override_trigger_enabled:= FALSE;
16258 if l_use_override then -- pass deprn_override_flag to faxiat
16259 px_trans_rec.deprn_override_flag:= l_dpr_out.deprn_override_flag;
16260 if (p_log_level_rec.statement_level) then
16261 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf',
16262 element=>'deprn_override_flag1',
16263 value=>l_dpr_out.deprn_override_flag, p_log_level_rec => p_log_level_rec);
16264 end if;
16265 else
16266 -- pass fa_no_override to faxiat
16267 px_trans_rec.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
16268 -- update the status fa_deprn_override from 'SELECTED' to 'POST'
16269 UPDATE FA_DEPRN_OVERRIDE
16270 SET status = 'POST'
16271 WHERE used_by = 'ADJUSTMENT'
16272 AND status = 'SELECTED'
16273 AND transaction_header_id is null;
16274 end if;
16275
16276 fa_std_types.deprn_override_trigger_enabled:= TRUE;
16277
16278 --
16279 -- In most cases, New Adjusted_Cost = New Net Book Value;
16280 -- New Rate_Adjustment_Factor = New Net Book Value / New Deprn_Reserve
16281 -- New Reval_Amortization_Basis = (dpr) Reval_Reserve
16282
16283 -- bonus between here and next, include bonus amounts.
16284 -- bonus: modified according to decision from domain experts:
16285 -- now using Cost - Total Reserve
16286 -- when calculating adjusted_cost for nbv assets and
16287 -- Cost - Regular Reserve (without bonus deprn res) for cost assets
16288
16289 -- new_raval_amo_basis and Production rate source rule are
16290 -- not calculated on Depreciable Basis Formula
16291
16292 px_asset_fin_rec_new.reval_amortization_basis := l_dpr_row.reval_rsv;
16293
16294 if (l_rate_source_rule = FA_STD_TYPES.FAD_RSR_PROD) then
16295 px_asset_fin_rec_new.rate_adjustment_factor := 1;
16296 px_asset_fin_rec_new.adjusted_capacity
16297 := px_asset_fin_rec_new.production_capacity -
16298 l_dpr_out.new_ltd_prod;
16299 px_asset_fin_rec_new.formula_factor := 1;
16300 end if;
16301 ----------------------------------------------
16302 -- Call Depreciable Basis Rule
16303 -- for Amortized Adjustment of current period
16304 ----------------------------------------------
16305 /*Bug8230037 - Added condition based on sorp_enabled_flag
16309 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS (
16306 - No need to call CALL_DEPRN_BASIS for Double Declining methods */
16307 if (not l_rate_source_rule = FA_STD_TYPES.FAD_RSR_CALC)
16308 and nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y' then
16310 p_event_type => 'AMORT_ADJ',
16311 p_asset_fin_rec_new => px_asset_fin_rec_new,
16312 p_asset_fin_rec_old => p_asset_fin_rec_old,
16313 p_asset_hdr_rec => p_asset_hdr_rec,
16314 p_asset_type_rec => p_asset_type_rec,
16315 p_asset_deprn_rec => p_asset_deprn_rec,
16316 p_trans_rec => px_trans_rec,
16317 p_period_rec => p_period_rec,
16318 p_current_total_rsv => l_cur_total_rsv,
16319 p_current_rsv => l_cur_rsv,
16320 p_current_total_ytd => l_cur_ytd,
16321 p_hyp_basis => l_dpr_out.new_adj_cost,
16322 p_hyp_total_rsv => l_dpr_out.new_deprn_rsv,
16323 p_hyp_rsv => l_dpr_out.new_deprn_rsv -
16324 l_dpr_out.new_bonus_deprn_rsv -
16325 nvl(l_dpr_out.new_impairment_rsv,0),
16326 p_mrc_sob_type_code => p_mrc_sob_type_code,
16327 p_used_by_adjustment => l_deprn_used_by_adjustment,
16328 px_new_adjusted_cost => px_asset_fin_rec_new.adjusted_cost,
16329 px_new_raf => px_asset_fin_rec_new.rate_adjustment_factor,
16330 px_new_formula_factor => px_asset_fin_rec_new.formula_factor,
16331 p_log_level_rec => p_Log_level_rec)) then
16332
16333 FA_SRVR_MSG.ADD_MESSAGE
16334 (CALLING_FN=>'CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
16335 FA_SRVR_MSG.ADD_MESSAGE
16336 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
16337 NAME=>'FA_AMT_CAL_DP_EXP', p_log_level_rec => p_log_level_rec);
16338 return false;
16339
16340 end if;
16341 else
16342 px_asset_fin_rec_new.adjusted_cost :=
16343 px_asset_fin_rec_new.recoverable_cost - l_cur_rsv;
16344 if (sign(px_asset_fin_rec_new.recoverable_cost)<>0)
16345 then
16346 l_temp := px_asset_fin_rec_new.recoverable_cost -
16347 l_dpr_out.new_deprn_rsv;
16348 px_asset_fin_rec_new.rate_adjustment_factor :=
16349 l_temp / px_asset_fin_rec_new.recoverable_cost;
16350 px_asset_fin_rec_new.formula_factor := 1;
16351 else
16352 px_asset_fin_rec_new.rate_adjustment_factor :=1;
16353 px_asset_fin_rec_new.formula_factor := 1;
16354 end if;
16355 end if;
16356
16357
16358 -- bonus: assigning bonus rule value back.
16359 l_dpr_row.bonus_rule := l_bonus_rule;
16360 -- not yet needed.
16361 -- l_deprn_row.bonus_deprn_rsv := l_bonus_deprn_rsv;
16362 -- l_dpr_row.deprn_rsv is not used.
16363 -- l_dpr_row.deprn_rsv := l_deprn_total_rsv;
16364
16365 l_cur_rsv := l_cur_total_rsv;
16366
16367 if (px_asset_fin_rec_new.rate_adjustment_factor < 0 OR
16368 px_asset_fin_rec_new.rate_adjustment_factor > 1)then
16369 FA_SRVR_MSG.ADD_MESSAGE
16370 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
16371 NAME=>'FA_AMT_RAF_OUT_OF_RANGE', p_log_level_rec => p_log_level_rec);
16372 return FALSE;
16373 end if;
16374
16375 -- Added for Dated Adjustment
16376 px_deprn_exp := 0;
16377
16378 if (px_trans_rec.amortization_start_date is not null) then
16379 if (not((l_cur_fy = l_amortize_fy) and
16380 (l_cur_per_num = l_amortize_per_num))) then
16381 l_dpr_row.y_begin := l_amortize_fy;
16382 l_dpr_row.p_cl_begin := l_amortize_per_num;
16383
16384 if (l_cur_per_num = 1) then
16385 l_dpr_row.y_end := l_cur_fy - 1;
16386 else
16387 l_dpr_row.y_end := l_cur_fy;
16388 end if;
16389
16390 if (l_cur_per_num = 1) then
16391 l_dpr_row.p_cl_end := l_pers_per_yr;
16392 else
16393 l_dpr_row.p_cl_end := l_cur_per_num - 1;
16394 end if;
16395
16396 l_dpr_row.rate_adj_factor := px_asset_fin_rec_new.rate_adjustment_factor;
16397
16398 if (l_cur_fy = l_amortize_fy) then
16399 l_amortize_per_ctr := (l_last_per_ctr + 1) -
16400 (l_cur_per_num - l_amortize_per_num);
16401 else
16402 l_amortize_per_ctr := (l_last_per_ctr + 1) -
16403 ((l_cur_fy - l_amortize_fy -1) * l_pers_per_yr +
16404 (l_pers_per_yr - l_amortize_per_num + l_cur_per_num));
16405 end if;
16406
16407 l_deprn_summary.asset_id := p_asset_hdr_rec.asset_id;
16408 l_deprn_summary.book := p_asset_hdr_rec.book_type_code;
16409 l_deprn_summary.period_ctr := l_amortize_per_ctr - 1;
16410 l_deprn_summary.dist_id := 0;
16411
16412 -- Enhancement for BT. YYOON - Start
16413 -- BUG#1148053: Ability to add assets with reserve
16414 -- and amortize over remaining useful life
16415
16416 if (p_asset_hdr_rec.period_of_addition = 'Y') then
16417 -- bonus added.
16418 if p_mrc_sob_type_code = 'R' then
16419 select deprn_reserve,
16420 bonus_deprn_reserve,
16421 ytd_deprn,
16422 impairment_reserve
16423 into l_deprn_summary.deprn_rsv,
16424 l_deprn_summary.bonus_deprn_rsv,
16428 where asset_id = p_asset_hdr_rec.asset_id
16425 l_deprn_summary.ytd_deprn,
16426 l_deprn_summary.impairment_rsv
16427 from fa_mc_deprn_summary
16429 and book_type_code = p_asset_hdr_rec.book_type_code
16430 and deprn_source_code = 'BOOKS'
16431 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
16432 else
16433 select deprn_reserve,
16434 bonus_deprn_reserve,
16435 ytd_deprn,
16436 impairment_reserve
16437 into l_deprn_summary.deprn_rsv,
16438 l_deprn_summary.bonus_deprn_rsv,
16439 l_deprn_summary.ytd_deprn,
16440 l_deprn_summary.impairment_rsv
16441 from fa_deprn_summary
16442 where asset_id = p_asset_hdr_rec.asset_id
16443 and book_type_code = p_asset_hdr_rec.book_type_code
16444 and deprn_source_code = 'BOOKS';
16445 end if;
16446 else
16447 -- backdate amortization enhancement - begin
16448 l_add_txn_id := 0;
16449 if px_trans_rec.amortization_start_date is not null then
16450 open amort_date_before_add;
16451 fetch amort_date_before_add
16452 into l_add_txn_id;
16453 close amort_date_before_add;
16454
16455 -- when amortization start date is before the addition date
16456 -- call get_reserve to get the actual reserve from the prorate period to before the
16457 -- amortization period
16458 if (l_add_txn_id > 0) then
16459 if not (get_reserve
16460 (px_trans_rec,
16461 p_asset_hdr_rec,
16462 p_asset_desc_rec,
16463 px_asset_fin_rec_new,
16464 l_add_txn_id,
16465 l_amortize_fy,
16466 l_amortize_per_num,
16467 l_pers_per_yr,
16468 p_mrc_sob_type_code,
16469 l_deprn_rsv,
16470 l_bonus_deprn_rsv,
16471 l_impairment_rsv,
16472 p_log_level_rec)) then
16473 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
16474 return FALSE;
16475 end if;
16476 l_deprn_summary.deprn_rsv := l_deprn_rsv;
16477 l_deprn_summary.bonus_deprn_rsv := l_bonus_deprn_rsv;
16478 l_deprn_summary.impairment_rsv := l_impairment_rsv;
16479 end if;
16480 end if;
16481
16482 if (px_trans_rec.amortization_start_date is null or l_add_txn_id = 0) then
16483 -- backdate amortization enhacement - end
16484 FA_QUERY_BALANCES_PKG.QUERY_BALANCES_INT (
16485 l_deprn_summary,
16486 'STANDARD',
16487 FALSE, -- DEBUG
16488 l_dummy_bool,
16489 'FA_AMORT_PKG.faxraf',
16490 -1, p_log_level_rec => p_log_level_rec);
16491
16492 if not (l_dummy_bool) then
16493 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
16494 return (FALSE);
16495 end if;
16496 end if;
16497 end if;
16498
16499 /**** Enhancement for BT. YYOON - End */
16500
16501 if p_mrc_sob_type_code = 'R' then
16502 SELECT NVL(SUM(DECODE(ADJUSTMENT_TYPE,
16503 'EXPENSE',
16504 DECODE(DEBIT_CREDIT_FLAG,
16505 'DR', ADJUSTMENT_AMOUNT,
16506 'CR', -1 * ADJUSTMENT_AMOUNT))),0),
16507 -- backdate amortization enhancement - begin
16508 NVL(SUM(DECODE(ADJUSTMENT_TYPE,
16509 'RESERVE',
16510 DECODE(DEBIT_CREDIT_FLAG,
16511 'DR', ADJUSTMENT_AMOUNT,
16512 'CR', -1 * ADJUSTMENT_AMOUNT))),0)
16513 -- backdate amortization enhancement - end
16514 INTO l_adjustment_amount,
16515 l_rsv_amount
16516 FROM FA_MC_ADJUSTMENTS
16517 WHERE asset_id = p_asset_hdr_rec.asset_id
16518 AND book_type_code = p_asset_hdr_rec.book_type_code
16519 AND period_counter_adjusted = l_amortize_per_ctr
16520 AND SET_OF_BOOKS_ID = p_asset_hdr_rec.set_of_books_id;
16521 else
16522 SELECT NVL(SUM(DECODE(ADJUSTMENT_TYPE,
16523 'EXPENSE',
16524 DECODE(DEBIT_CREDIT_FLAG,
16525 'DR', ADJUSTMENT_AMOUNT,
16526 'CR', -1 * ADJUSTMENT_AMOUNT))),0),
16527 -- backdate amortization enhancement - begin
16528 NVL(SUM(DECODE(ADJUSTMENT_TYPE,
16529 'RESERVE',
16530 DECODE(DEBIT_CREDIT_FLAG,
16531 'DR', ADJUSTMENT_AMOUNT,
16532 'CR', -1 * ADJUSTMENT_AMOUNT))),0)
16533 -- backdate amortization enhancement - end
16534 INTO l_adjustment_amount,
16535 l_rsv_amount
16539 AND period_counter_adjusted = l_amortize_per_ctr;
16536 FROM FA_ADJUSTMENTS
16537 WHERE asset_id = p_asset_hdr_rec.asset_id
16538 AND book_type_code = p_asset_hdr_rec.book_type_code
16540 end if;
16541
16542 l_temp_deprn_rsv := l_deprn_summary.deprn_rsv - l_deprn_summary.bonus_deprn_rsv - nvl(l_deprn_summary.impairment_rsv,0);
16543
16544 -- bonus
16545 l_deprn_summary.deprn_rsv := l_deprn_summary.deprn_rsv +
16546 l_adjustment_amount -
16547 l_rsv_amount;
16548
16549 -- alternative flat rate depreciation calculation
16550 if l_amortize_per_num = 1 then
16551 l_deprn_summary.ytd_deprn := l_adjustment_amount;
16552 else
16553 l_deprn_summary.ytd_deprn := l_deprn_summary.ytd_deprn + l_adjustment_amount;
16554 end if;
16555
16556 -- Add for the Depreciable Basis Formula.
16557
16558 ----------------------------------------------
16559 -- Call Depreciable Basis Rule
16560 -- for Amortized Adjustment with back dated.
16561 -- Before faxcde calling
16562 ----------------------------------------------
16563
16564 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS (
16565 p_event_type => 'AMORT_ADJ2',
16566 p_asset_fin_rec_new => px_asset_fin_rec_new,
16567 p_asset_fin_rec_old => p_asset_fin_rec_old,
16568 p_asset_hdr_rec => p_asset_hdr_rec,
16569 p_asset_type_rec => p_asset_type_rec,
16570 p_asset_deprn_rec => p_asset_deprn_rec,
16571 p_trans_rec => px_trans_rec,
16572 p_period_rec => p_period_rec,
16573 p_adjusted_cost => l_dpr_row.adj_cost,
16574 p_current_total_rsv => l_deprn_summary.deprn_rsv,
16575 p_current_rsv => l_deprn_summary.deprn_rsv -
16576 l_deprn_summary.bonus_deprn_rsv - nvl(l_deprn_summary.impairment_rsv,0),
16577 p_current_total_ytd => l_deprn_summary.ytd_deprn,
16578 p_hyp_basis => l_dpr_out.new_adj_cost,
16579 p_hyp_total_rsv => l_dpr_out.new_deprn_rsv,
16580 p_hyp_rsv => l_dpr_out.new_deprn_rsv -
16581 l_dpr_out.new_bonus_deprn_rsv - nvl(l_dpr_out.new_impairment_rsv,0),
16582 p_mrc_sob_type_code => p_mrc_sob_type_code,
16583 p_used_by_adjustment => 'ADJUSTMENT',
16584 px_new_adjusted_cost => l_dpr_row.adj_cost,
16585 px_new_raf => px_asset_fin_rec_new.rate_adjustment_factor,
16586 px_new_formula_factor => px_asset_fin_rec_new.formula_factor,
16587 p_log_level_rec => p_log_level_rec)) then
16588 FA_SRVR_MSG.ADD_MESSAGE
16589 (CALLING_FN=>'CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
16590 FA_SRVR_MSG.ADD_MESSAGE
16591 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
16592 NAME=>'FA_AMT_CAL_DP_EXP', p_log_level_rec => p_log_level_rec);
16593 return false;
16594
16595 end if;
16596
16597 --fix for 2197401. error out if new nbv result in
16598 -- opposite sign of new recoverable cost
16599 if (sign(px_asset_fin_rec_new.recoverable_cost)<>sign(l_dpr_row.adj_cost)) then
16600 FA_SRVR_MSG.ADD_MESSAGE
16601 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
16602 NAME=>'FA_WRONG_REC_COST', p_log_level_rec => p_log_level_rec);
16603 return FALSE;
16604 end if;
16605
16606 l_dpr_row.deprn_rsv := l_deprn_summary.deprn_rsv;
16607 l_dpr_row.adj_capacity := px_asset_fin_rec_new.adjusted_capacity;
16608
16609 -- Bonus: called when amortization_start_date is not null i.e. backdated
16610 -- adjustment.
16611 -- We probably need to modify to exclude bonus amounts.
16612 l_bonus_rule := l_dpr_row.bonus_rule;
16613
16614 l_cur_total_rsv := l_cur_rsv;
16615 l_cur_rsv := l_cur_rsv - nvl(l_dpr_row.bonus_deprn_rsv,0) -
16616 nvl(l_dpr_row.impairment_rsv,0);
16617 l_dpr_row.mrc_sob_type_code := p_mrc_sob_type_code;
16618 l_dpr_row.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
16619
16620 if (not FA_CDE_PKG.faxcde
16621 (l_dpr_row,
16622 l_dpr_arr,
16623 l_dpr_out,
16624 FA_STD_TYPES.FA_DPR_NORMAL, p_log_level_rec => p_log_level_rec)) then
16625 FA_SRVR_MSG.ADD_MESSAGE
16626 (CALLING_FN=>'faxcde2', p_log_level_rec => p_log_level_rec);
16627 FA_SRVR_MSG.ADD_MESSAGE
16628 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
16629 NAME => 'FA_AMT_CAL_DP_EXP', p_log_level_rec => p_log_level_rec);
16630 return FALSE;
16631 end if;
16632
16633 -- Override
16634 if (p_log_level_rec.statement_level) then
16635 FA_DEBUG_PKG.ADD
16636 (fname => 'FA_AMORT_PKG.faxraf',
16637 element => 'deprn_override_flag2',
16638 value => l_dpr_out.deprn_override_flag, p_log_level_rec => p_log_level_rec);
16639 end if;
16640
16644
16641 px_trans_rec.deprn_override_flag:= l_dpr_out.deprn_override_flag;
16642
16643 -- Added for Depreciable Basis Formula.
16645 ----------------------------------------------
16646 -- Call Depreciable Basis Rule
16647 -- for Amortized Adjustment with back dated.
16648 -- After faxcde calling
16649 ----------------------------------------------
16650
16651 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS (
16652 p_event_type => 'AMORT_ADJ3',
16653 p_asset_fin_rec_new => px_asset_fin_rec_new,
16654 p_asset_fin_rec_old => p_asset_fin_rec_old,
16655 p_asset_hdr_rec => p_asset_hdr_rec,
16656 p_asset_type_rec => p_asset_type_rec,
16657 p_asset_deprn_rec => p_asset_deprn_rec,
16658 p_trans_rec => px_trans_rec,
16659 p_period_rec => p_period_rec,
16660 p_adjusted_cost => l_dpr_row.adj_cost,
16661 p_current_rsv => l_temp_deprn_rsv,
16662 p_current_total_ytd => l_deprn_summary.ytd_deprn,
16663 p_hyp_basis => l_dpr_out.new_adj_cost,
16664 p_hyp_total_rsv => l_dpr_out.new_deprn_rsv,
16665 p_hyp_rsv => l_dpr_out.new_deprn_rsv
16666 - l_dpr_out.new_bonus_deprn_rsv - nvl(l_dpr_out.new_impairment_rsv,0),
16667 p_mrc_sob_type_code => p_mrc_sob_type_code,
16668 p_used_by_adjustment => 'ADJUSTMENT',
16669 px_new_adjusted_cost => px_asset_fin_rec_new.adjusted_cost,
16670 px_new_raf => px_asset_fin_rec_new.rate_adjustment_factor,
16671 px_new_formula_factor => px_asset_fin_rec_new.formula_factor,
16672 p_log_level_rec => p_log_level_rec)) then
16673 FA_SRVR_MSG.ADD_MESSAGE
16674 (CALLING_FN=>'CALL_DEPRN_BASIS', p_log_level_rec => p_log_level_rec);
16675 FA_SRVR_MSG.ADD_MESSAGE
16676 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
16677 NAME=>'FA_AMT_CAL_DP_EXP', p_log_level_rec => p_log_level_rec);
16678 return false;
16679
16680 end if;
16681
16682 -- bonus, added l_dpr_row.bonus_deprn_rsv field to calculation.
16683 px_deprn_exp := (l_dpr_out.new_deprn_rsv - l_deprn_summary.deprn_rsv) -
16684 (l_cur_rsv - l_deprn_summary.deprn_rsv) -
16685 nvl(l_dpr_row.bonus_deprn_rsv,0) -
16686 nvl(l_dpr_row.impairment_rsv,0);
16687
16688 -- bonus
16689 -- l_dpr_row.bonus_deprn_rsv arrives with value added for bonus_deprn_rsv.
16690 -- the new_bonus_deprn_rsv amount is not vanilla therefore the *2.
16691 -- if it turns out to be wrong calculation, it should be investigated
16692 -- why bonus_deprn_rsv doesn't arrive as expected.
16693 if (l_dpr_row.bonus_rule is not null) then
16694 px_bonus_deprn_exp :=
16695 (l_dpr_out.new_bonus_deprn_rsv -
16696 l_deprn_summary.bonus_deprn_rsv) -
16697 ( (l_dpr_row.bonus_deprn_rsv * 2) - l_deprn_summary.bonus_deprn_rsv);
16698
16699 if (p_log_level_rec.statement_level) then
16700 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
16701 element=>'px_bonus_deprn_exp ',
16702 value=>px_bonus_deprn_exp, p_log_level_rec => p_log_level_rec);
16703 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
16704 element=>'l_dpr_out.new_bonus_deprn_rsv ',
16705 value=>l_dpr_out.new_bonus_deprn_rsv, p_log_level_rec => p_log_level_rec);
16706 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
16707 element=>'l_dpr_row.bonus_deprn_rsv',
16708 value=>l_dpr_row.bonus_deprn_rsv, p_log_level_rec => p_log_level_rec);
16709 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
16710 element=>'l_dpr_row.bonus_deprn_rsv',
16711 value=>l_deprn_summary.bonus_deprn_rsv, p_log_level_rec => p_log_level_rec);
16712 end if;
16713 end if;
16714
16715 px_impairment_exp :=
16716 (l_dpr_out.new_impairment_rsv -
16717 l_deprn_summary.impairment_rsv) -
16718 ( (l_dpr_row.impairment_rsv * 2) - l_deprn_summary.impairment_rsv);
16719
16720 -- bonus: assigning bonus rule value back.
16721 l_dpr_row.bonus_rule := l_bonus_rule;
16722 l_cur_rsv := l_cur_total_rsv;
16723
16724 end if; --if (not((l_cur_fy = l_amortize_fy) and (l_cur_per_num = l_amortize_per_num)))
16725 end if; --if (px_trans_rec.amortization_start_date is not null)
16726
16727 return TRUE;
16728
16729 exception
16730 when others then
16731 FA_SRVR_MSG.ADD_SQL_ERROR
16732 (CALLING_FN => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
16733 return FALSE;
16734 end faxraf;
16735
16736 FUNCTION calc_raf_adj_cost
16737 (p_trans_rec IN FA_API_TYPES.trans_rec_type,
16738 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type,
16739 p_asset_desc_rec IN FA_API_TYPES.asset_desc_rec_type,
16740 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
16741 p_asset_fin_rec_old IN FA_API_TYPES.asset_fin_rec_type,
16742 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
16743 p_asset_deprn_rec_adj IN FA_API_TYPES.asset_deprn_rec_type,
16744 p_asset_deprn_rec_new IN FA_API_TYPES.asset_deprn_rec_type,
16745 p_period_rec IN FA_API_TYPES.period_rec_type,
16746 p_group_reclass_options_rec IN FA_API_TYPES.group_reclass_options_rec_type default null,
16747 p_mrc_sob_type_code IN VARCHAR2
16748 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
16749
16750
16751 l_calling_fn VARCHAR2(50) := 'fa_amort_pvt.calc_raf_adj_cost';
16752
16753 --+++++++ variables for Eofy Recoverable Cost/Salvage Value +++++++
16754 l_eofy_rec_cost NUMBER;
16755 l_eofy_sal_val NUMBER;
16756
16757 --++++++++ variables for EOP Recoverable Cost/Salvage Value ++++++++
16758 l_eop_rec_cost NUMBER;
16759 l_eop_sal_val NUMBER;
16760
16761 --++++++++ variables for manual override ++++++++
16762 l_rate_source_rule VARCHAR2(25);
16763 l_deprn_basis_rule VARCHAR2(25);
16764
16765 --+++++++++++++++ For calling faxcde +++++++++++++++
16766 l_dpr_in FA_STD_TYPES.dpr_struct;
16767 l_dpr_out FA_STD_TYPES.dpr_out_struct;
16768 l_dpr_arr FA_STD_TYPES.dpr_arr_type;
16769 l_running_mode NUMBER;
16770
16771 l_deprn_reserve NUMBER;
16772 l_temp_integer BINARY_INTEGER;
16773 l_temp_number number;
16774
16775 --+ HHIRAGA added on Oct/Nov in 2003
16776 --++++++++ variables for Trackking Member Feature ++++++++
16777 l_processed_flag BOOLEAN := FALSE;
16778 l_raf_processed_flag BOOLEAN := FALSE;
16779 l_current_period_counter NUMBER;
16780 l_mem_deprn_reserve NUMBER;
16781 l_mem_eofy_reserve NUMBER;
16782
16783 l_recalc_start_fy NUMBER;
16784 l_recalc_start_period_num NUMBER;
16785 l_recalc_start_period_counter NUMBER;
16786 l_no_allocation_for_last VARCHAR2(1);
16787 l_chk_bs_row_exists VARCHAR2(1);
16788
16789
16790 CURSOR c_chk_bs_row_exists IS
16791 select 'Y'
16792 from fa_books_summary
16793 where book_type_code = p_asset_hdr_rec.book_type_code
16794 and group_asset_id = p_asset_hdr_rec.asset_id
16798 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
16795 and asset_id <> group_asset_id
16796 and period_counter = l_recalc_start_period_counter - 1;
16797
16799
16800 --Bug6988399
16801 Cursor c_year_switch is
16802 select 'N'
16803 from fa_deprn_periods
16804 where book_type_code = p_asset_hdr_rec.book_type_code
16805 and period_counter = p_asset_fin_rec_old.period_counter_fully_reserved
16806 and fiscal_year = p_period_rec.fiscal_year;
16807
16808 l_year_switch varchar2(1); --Bug6988399
16809 l_last_trx_count NUMBER := 0; -- Bug 7138798
16810
16811 calc_err EXCEPTION;
16812
16813 -- Start bug 13086051
16814
16815 Cursor l_recal_ytd is
16816 Select count (1)
16817 from
16818 fa_deprn_periods fadp,
16819 fa_deprn_periods fadp1,
16820 fa_transaction_headers fatr,
16821 fa_deprn_summary fads
16822 where fadp.book_type_code = p_asset_hdr_rec.book_type_code
16823 and p_trans_rec.amortization_start_date between fadp.calendar_period_open_date and fadp.calendar_period_close_date
16824 and fatr.book_type_code = p_asset_hdr_rec.book_type_code
16825 and fatr.asset_id = p_asset_hdr_rec.asset_id
16826 and fatr.transaction_type_code = 'ADDITION'
16827 and fadp1.book_type_code = p_asset_hdr_rec.book_type_code
16828 and fatr.date_effective between fadp1.period_open_date and fadp1.period_close_date
16829 and fatr.transaction_date_entered < fadp1.calendar_period_open_date
16830 and fadp.fiscal_year = fadp1.fiscal_year
16831 and fads.book_type_code = p_asset_hdr_rec.book_type_code
16832 and fads.asset_id = p_asset_hdr_rec.asset_id
16833 and fads.deprn_source_code = 'BOOKS'
16834 and fads.deprn_reserve = 0;
16835
16836 l_recal_ytd_count number := 0;
16837 l_total_ytd number := 0;
16838
16839 -- End bug 13086051
16840
16841 BEGIN
16842
16843 if (p_log_level_rec.statement_level) then
16844 fa_debug_pkg.add(l_calling_fn, 'Begin', p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
16845 end if;
16846
16847 -- Skipping call to the function because it is not necessary for straight line
16848 -- or flat-cost with period end balance and use recoverable cost basis rules
16849 -- There are more cases which calling this function unnecessary but not include for this time.
16850 if (not( (fa_cache_pkg.fazccmt_record.rate_source_rule = fa_std_types.FAD_RSR_CALC)
16851 or ((fa_cache_pkg.fazccmt_record.rate_source_rule = fa_std_types.FAD_RSR_FLAT) and
16852 (fa_cache_pkg.fazccmt_record.deprn_basis_rule = fa_std_types.FAD_DBR_COST) and
16853 (fa_cache_pkg.fazcdbr_record.rule_name in ('PERIOD END BALANCE','USE RECOVERABLE COST'))))) then
16854
16855 -- Get Eofy/Eop Recovearble Cost and Salvage Value
16856 if (not FA_CALC_DEPRN_BASIS1_PKG.GET_EOFY_EOP (
16857 p_asset_id => p_asset_hdr_rec.asset_id,
16858 p_book_type_code => p_asset_hdr_rec.book_type_code,
16859 p_fiscal_year => p_period_rec.fiscal_year,
16860 p_asset_type => p_asset_type_rec.asset_type,
16861 p_period_num => p_period_rec.period_num,
16862 p_mrc_sob_type_code => p_mrc_sob_type_code,
16863 p_set_of_books_id => p_asset_hdr_rec.set_of_books_id,
16864 x_eofy_recoverable_cost => l_eofy_rec_cost,
16865 x_eofy_salvage_value => l_eofy_sal_val,
16866 x_eop_recoverable_cost => l_eop_rec_cost,
16867 x_eop_salvage_value => l_eop_sal_val, p_log_level_rec => p_log_level_rec)) then
16868 if (p_log_level_rec.statement_level) then
16869 fa_debug_pkg.add(l_calling_fn, 'Error calling',
16870 'FA_CALC_DEPRN_BASIS1_PKG.GET_EOFY_EOP', p_log_level_rec => p_log_level_rec);
16871 end if;
16872
16873 raise calc_err;
16874
16875 end if;
16876 end if;
16877
16878 if (l_eofy_rec_cost is null) then
16879 l_eofy_rec_cost := 0;
16880 l_eofy_sal_val := 0;
16881 end if;
16882
16883 if (l_eop_rec_cost is null) then
16884 l_eop_rec_cost := 0;
16885 l_eop_sal_val := 0;
16886 end if;
16887
16888 -- Skipping call to faxcde because it is unnecessary for flat-cost with period end balance,
16889 -- use recoverable cost, period average, and beginning balance basis rules
16890 -- There are more cases which calling this function unnecessary but not include for this time.
16891 if (not(((fa_cache_pkg.fazccmt_record.rate_source_rule = fa_std_types.FAD_RSR_FLAT) and
16892 (fa_cache_pkg.fazccmt_record.deprn_basis_rule = fa_std_types.FAD_DBR_COST) and
16893 (fa_cache_pkg.fazcdbr_record.rule_name in ('PERIOD END BALANCE', 'PERIOD END AVERAGE',
16894 'USE RECOVERABLE COST', 'BEGINNING PERIOD'))
16895 --Bug 6312866 or fa_cache_pkg.fazccmt_record.rate_source_rule = fa_std_types.FAD_RSR_PROD
16896 ))) then
16897
16898 l_dpr_in.asset_num := p_asset_desc_rec.asset_number;
16899 l_dpr_in.calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
16900 l_dpr_in.book := p_asset_hdr_rec.book_type_code;
16901 l_dpr_in.asset_id := p_asset_hdr_rec.asset_id;
16902 l_dpr_in.adj_cost := px_asset_fin_rec_new.recoverable_cost;
16903 l_dpr_in.rec_cost := px_asset_fin_rec_new.recoverable_cost;
16904 l_dpr_in.reval_amo_basis := px_asset_fin_rec_new.reval_amortization_basis;
16905 l_dpr_in.deprn_rsv := 0;
16906 l_dpr_in.reval_rsv := p_asset_deprn_rec_new.reval_deprn_reserve;
16907 l_dpr_in.adj_rate := px_asset_fin_rec_new.adjusted_rate;
16911 l_dpr_in.ltd_prod := 0;
16908 l_dpr_in.rate_adj_factor := px_asset_fin_rec_new.rate_adjustment_factor;
16909 l_dpr_in.capacity := px_asset_fin_rec_new.production_capacity;
16910 l_dpr_in.adj_capacity := px_asset_fin_rec_new.adjusted_capacity;
16912
16913 l_dpr_in.ceil_name := px_asset_fin_rec_new.ceiling_name;
16914 l_dpr_in.bonus_rule := px_asset_fin_rec_new.bonus_rule;
16915 l_dpr_in.method_code := px_asset_fin_rec_new.deprn_method_code;
16916 l_dpr_in.jdate_in_service :=
16917 to_number(to_char(px_asset_fin_rec_new.date_placed_in_service, 'J'));
16918 l_dpr_in.prorate_jdate := to_number(to_char(px_asset_fin_rec_new.prorate_date, 'J'));
16919 l_dpr_in.deprn_start_jdate := to_number(to_char(px_asset_fin_rec_new.deprn_start_date, 'J'));
16920 l_dpr_in.jdate_retired := 0; -- don't know this is correct or not
16921 l_dpr_in.ret_prorate_jdate := 0; -- don't know this is correct or not
16922 l_dpr_in.life := px_asset_fin_rec_new.life_in_months;
16923
16924 l_dpr_in.rsv_known_flag := TRUE;
16925 l_dpr_in.salvage_value := px_asset_fin_rec_new.salvage_value;
16926 l_dpr_in.pc_life_end := px_asset_fin_rec_new.period_counter_life_complete;
16927 l_dpr_in.adj_rec_cost := px_asset_fin_rec_new.adjusted_recoverable_cost;
16928 l_dpr_in.prior_fy_exp := p_asset_deprn_rec_new.prior_fy_expense;
16929 l_dpr_in.deprn_rounding_flag := px_asset_fin_rec_new.annual_deprn_rounding_flag;
16930 l_dpr_in.deprn_override_flag := p_trans_rec.deprn_override_flag;
16931 l_dpr_in.used_by_adjustment := TRUE;
16932 l_dpr_in.ytd_deprn := p_asset_deprn_rec_new.ytd_deprn;
16933 l_dpr_in.short_fiscal_year_flag := px_asset_fin_rec_new.short_fiscal_year_flag;
16934 l_dpr_in.conversion_date := px_asset_fin_rec_new.conversion_date;
16935 l_dpr_in.prorate_date := px_asset_fin_rec_new.prorate_date;
16936 l_dpr_in.orig_deprn_start_date := px_asset_fin_rec_new.orig_deprn_start_date;
16937 l_dpr_in.old_adj_cost := px_asset_fin_rec_new.old_adjusted_cost;
16938 l_dpr_in.formula_factor := nvl(px_asset_fin_rec_new.formula_factor,
16939 p_asset_fin_rec_old.formula_factor);
16940 l_dpr_in.bonus_deprn_exp := p_asset_deprn_rec_new.bonus_deprn_amount;
16941 l_dpr_in.bonus_ytd_deprn := p_asset_deprn_rec_new.bonus_ytd_deprn;
16942 l_dpr_in.bonus_deprn_rsv := p_asset_deprn_rec_new.bonus_deprn_reserve;
16943 l_dpr_in.prior_fy_bonus_exp := p_asset_deprn_rec_new.prior_fy_bonus_expense;
16944 l_dpr_in.impairment_exp := p_asset_deprn_rec_new.impairment_amount;
16945 l_dpr_in.ytd_impairment := p_asset_deprn_rec_new.ytd_impairment;
16946 l_dpr_in.impairment_rsv := p_asset_deprn_rec_new.impairment_reserve;
16947
16948 l_dpr_in.tracking_method := px_asset_fin_rec_new.tracking_method;
16949 l_dpr_in.allocate_to_fully_ret_flag := px_asset_fin_rec_new.allocate_to_fully_ret_flag;
16950 l_dpr_in.allocate_to_fully_rsv_flag := px_asset_fin_rec_new.allocate_to_fully_rsv_flag;
16951 l_dpr_in.excess_allocation_option := px_asset_fin_rec_new.excess_allocation_option;
16952 l_dpr_in.depreciation_option := px_asset_fin_rec_new.depreciation_option;
16953 l_dpr_in.member_rollup_flag := px_asset_fin_rec_new.member_rollup_flag;
16954 l_dpr_in.over_depreciate_option := px_asset_fin_rec_new.over_depreciate_option;
16955 l_dpr_in.mrc_sob_type_code := p_mrc_sob_type_code;
16956 l_dpr_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
16957
16958 --
16959 -- Not for what-if yet
16960 --
16961 l_running_mode := fa_std_types.FA_DPR_NORMAL;
16962
16963 if not fa_cache_pkg.fazccp(fa_cache_pkg.fazcbc_record.prorate_calendar,
16964 fa_cache_pkg.fazcbc_record.fiscal_year_name,
16965 l_dpr_in.prorate_jdate,
16966 l_temp_number,
16967 l_dpr_in.y_begin,
16968 l_temp_integer, p_log_level_rec => p_log_level_rec) then
16969 if (p_log_level_rec.statement_level) then
16970 fa_debug_pkg.add(l_calling_fn, 'Error calling',
16971 'fa_cache_pkg.fazccp', p_log_level_rec => p_log_level_rec);
16972 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.prorate_calendar',
16973 fa_cache_pkg.fazcbc_record.prorate_calendar, p_log_level_rec => p_log_level_rec);
16974 fa_debug_pkg.add(l_calling_fn, 'fa_cache_pkg.fazcbc_record.fiscal_year_name',
16975 fa_cache_pkg.fazcbc_record.fiscal_year_name, p_log_level_rec => p_log_level_rec);
16976 end if;
16977
16978 raise calc_err;
16979 end if;
16980
16981
16982 l_dpr_in.p_cl_begin := 1;
16983
16984 if (p_period_rec.period_num = 1) then
16985 l_dpr_in.y_end := p_period_rec.fiscal_year - 1;
16986 l_dpr_in.p_cl_end := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
16987 else
16988 l_dpr_in.y_end := p_period_rec.fiscal_year;
16989 l_dpr_in.p_cl_end := p_period_rec.period_num - 1;
16990 end if;
16991
16992 l_dpr_in.rate_adj_factor := 1;
16993
16994 -- manual override
16995 if fa_cache_pkg.fa_deprn_override_enabled then
16996 if (not fa_cache_pkg.fazccmt(
16997 px_asset_fin_rec_new.deprn_method_code,
16998 px_asset_fin_rec_new.life_in_months, p_log_level_rec => p_log_level_rec)) then
16999 if (p_log_level_rec.statement_level) then
17000 fa_debug_pkg.add(l_calling_fn, 'Error calling',
17001 'fa_cache_pkg.fazccmt', p_log_level_rec => p_log_level_rec);
17002 end if;
17003
17004 raise calc_err;
17005 end if;
17006
17007 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
17008 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
17009
17010 -- update override status only if satisfies condintion,
17011 -- otherwise do not update status when calculating RAF
17012 -- 1. formula; or
17013 -- 2. (calc or table) and cost
17014
17015 l_dpr_in.update_override_status :=
17016 ((l_rate_source_rule = fa_std_types.FAD_RSR_FORMULA)
17017 OR (((l_rate_source_rule = fa_std_types.FAD_RSR_CALC)
17018 OR (l_rate_source_rule = fa_std_types.FAD_RSR_TABLE))
17019 AND (l_deprn_basis_rule = fa_std_types.FAD_DBR_COST)));
17020 end if;
17021
17022 --* HHIRAGA modified on Oct/Nov in 2003.
17023 -- Changed parameter to period counter when the recalculation of
17024 -- RAF needs.
17025 -- This function will populates all member assets to be used to
17026 -- hypothetical allocation internally.
17027 --
17028 --+++++++ Call Tracking Function to populate Member in case ALLOCATE ++++++
17029 if p_asset_type_rec.asset_type = 'GROUP' and
17030 nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
17031
17032 l_raf_processed_flag := TRUE;
17033 l_dpr_in.tracking_method := NULL;
17034
17035 /*
17036 if not FA_TRACK_MEMBER_PVT.get_member_at_start(
17037 p_period_rec => l_period_rec,
17038 p_trans_rec => p_trans_rec,
17039 p_asset_hdr_rec => p_asset_hdr_rec,
17040 p_asset_fin_rec => px_asset_fin_rec_new,
17041 p_dpr_in => l_dpr_in,
17042 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
17043 if (p_log_level_rec.statement_level) then
17044 fa_debug_pkg.add(l_calling_fn, 'Error calling', 'FA_TRACK_MEMBER_PVT.get_member_at_start', p_log_level_rec => p_log_level_rec);
17045 end if;
17046
17047 raise calc_failed;
17048
17049 end if;
17050 */
17051 end if; -- nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE'
17052 -- End of HHIRAGA
17053
17054 --+++++++ Call Depreciation engine for rate adjustment factor +++++++
17055 if not FA_CDE_PKG.faxcde(l_dpr_in,
17056 l_dpr_arr,
17057 l_dpr_out,
17058 l_running_mode, p_log_level_rec => p_log_level_rec) then
17059 if (p_log_level_rec.statement_level) then
17060 fa_debug_pkg.add(l_calling_fn, 'Error calling',
17061 'FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
17062 end if;
17063
17064 raise calc_err;
17065 end if;
17066
17067 -- Bug 4129984.
17068
17069 if ((fa_cache_pkg.fazcbc_record.AMORTIZE_REVAL_RESERVE_FLAG='YES') and
17070 (px_asset_fin_rec_new.Reval_Amortization_Basis is not null) and
17071 (p_asset_type_rec.asset_type = 'CAPITALIZED') and
17072 (px_asset_fin_rec_new.group_asset_id is null)) then
17073
17074 px_asset_fin_rec_new.reval_amortization_basis := p_asset_deprn_rec_new.reval_deprn_reserve;
17075 end if;
17076
17077 else -- in the case of skipping faxcde call
17078 l_dpr_out.new_adj_cost := px_asset_fin_rec_new.recoverable_cost;
17079 l_dpr_out.new_deprn_rsv := p_asset_deprn_rec_new.deprn_reserve;
17080 l_dpr_out.new_bonus_deprn_rsv := p_asset_deprn_rec_new.bonus_deprn_reserve;
17081 l_dpr_out.new_impairment_rsv := p_asset_deprn_rec_new.impairment_reserve;
17082 end if;
17083
17084
17085 --
17086 -- Bug4213715: new reserve has already include adj_reserve in case of group
17087 -- reclass with enter option.
17088 --
17089 if (p_asset_type_rec.asset_type = 'GROUP') and
17090 (p_trans_rec.transaction_key = 'GC') then
17091 -- reclass w/ enter option at group level
17092
17093 l_deprn_reserve := nvl(p_asset_deprn_rec_new.deprn_reserve, 0);
17094
17095 elsif (p_asset_type_rec.asset_type <> 'GROUP') and
17096 (nvl(p_asset_fin_rec_old.group_asset_id, 0) <>
17097 nvl(px_asset_fin_rec_new.group_asset_id, 0)) then
17098
17099 l_deprn_reserve := nvl(p_asset_deprn_rec_new.deprn_reserve, 0);
17100 -- Bug 8605817: In case of Period of addition, p_asset_deprn_rec_new
17101 -- contains the new reserve
17102 elsif ( G_release <> 11 and p_asset_hdr_rec.period_of_addition = 'Y') then
17103 l_deprn_reserve := nvl(p_asset_deprn_rec_new.deprn_reserve, 0);
17104 else
17105 -- Ordinary behavior
17106 l_deprn_reserve := p_asset_deprn_rec_new.deprn_reserve +
17107 nvl(p_asset_deprn_rec_adj.deprn_reserve, 0);
17108 end if;
17109
17110
17111 -- code fix for bug no.3630495. added the following line to calculate the adjusted capacity
17112 if (nvl(px_asset_fin_rec_new.tracking_method, 'NO TRACK') = 'ALLOCATE') and -- ENERGY
17113 (fa_cache_pkg.fazcdrd_record.rule_name = 'ENERGY PERIOD END BALANCE') then -- ENERGY
17114 null;
17115 else
17116 px_asset_fin_rec_new.adjusted_capacity:=px_asset_fin_rec_new.production_capacity- nvl(l_dpr_out.new_ltd_prod, 0);
17117 end if;
17118
17119 if (p_asset_hdr_rec.period_of_addition = 'Y') and
17120 (p_asset_type_rec.asset_type = 'GROUP') then
17121 px_asset_fin_rec_new.eofy_reserve := nvl(px_asset_fin_rec_new.eofy_reserve,
17122 p_asset_deprn_rec_new.deprn_reserve -
17123 p_asset_deprn_rec_new.ytd_deprn);
17124 else
17125
17126 -- Bug 7138798: Check for any transaction in current fiscal year
17127 select count(*)
17128 into l_last_trx_count
17129 from fa_books bks,
17130 fa_deprn_periods dp
17131 where bks.asset_id = p_asset_hdr_rec.asset_id
17132 and bks.book_type_code = p_asset_hdr_rec.book_type_code
17133 and bks.date_ineffective is null
17134 and dp.book_type_code = p_asset_hdr_rec.book_type_code
17135 and bks.date_effective between
17136 dp.period_open_date and nvl(dp.period_close_date, sysdate)
17137 and dp.fiscal_year = fa_cache_pkg.fazcbc_record.current_fiscal_year;
17138
17139
17140 -- Fix for Bug#4541399: We have to activate this code
17141 -- only when px_asset_fin_rec_new.eofy_reserve is NULL
17142 -- Bug 7138798: If there are no transactions in curent fiscal year
17143 -- and if depreciate_flag is 'NO' then recalculate eofy_reserve
17144 if (px_asset_fin_rec_new.eofy_reserve is null) or
17145 ((l_last_trx_count = 0 ) and
17146 (px_asset_fin_rec_new.depreciate_flag = 'NO')) then
17147 px_asset_fin_rec_new.eofy_reserve := p_asset_deprn_rec_new.deprn_reserve -
17148 p_asset_deprn_rec_new.ytd_deprn;
17149 end if;
17150
17151 end if;
17152
17153 -- HHIRAGA
17154 --+++++++ Call Tracking Function to populate Member in case ALLOCATE ++++++
17155 if (l_raf_processed_flag) then
17156 l_dpr_in.tracking_method := 'ALLOCATE';
17157 l_raf_processed_flag := FALSE;
17158 end if;
17159
17160 -- HHIRAGA
17161 --+++++++ Call Populate_member_assets_table function
17162 if nvl(l_dpr_in.tracking_method,'OTHER') = 'ALLOCATE' then
17163 fa_track_member_pvt.p_track_member_table.delete;
17164 fa_track_member_pvt.p_track_mem_index_table.delete;
17165 if (p_log_level_rec.statement_level) then
17166 fa_debug_pkg.add(l_calling_fn, 'Delete p_track_member_table', '+++', p_log_level_rec => p_log_level_rec);
17167 end if;
17168 end if;
17169
17170 --Bug6988399 Added the code to populate the eofy reserve if the asset has become non fully reserved after
17171 -- deprn limit change. Note this has been done only for deprn limit change and the condition can be removed
17172 -- in future if other cases come
17173 if ((p_asset_fin_rec_old.period_counter_fully_reserved is not null)
17174 and ( p_asset_fin_rec_old.period_counter_fully_reserved <> nvl(px_asset_fin_rec_new.period_counter_fully_reserved,0) )
17175 and (p_asset_fin_rec_old.allowed_deprn_limit_amount <> px_asset_fin_rec_new.allowed_deprn_limit_amount)
17176 and fa_cache_pkg.fazccmt_record.deprn_basis_rule = 'NBV') then
17177 open c_year_switch;
17178 fetch c_year_switch into l_year_switch;
17179 if c_year_switch%NOTFOUND then
17180 px_asset_fin_rec_new.eofy_reserve := p_asset_deprn_rec_new.deprn_reserve;
17181 end if;
17182 close c_year_switch;
17183 end if;
17184
17185 -- Start Bug 13086051
17186
17187 l_total_ytd := p_asset_deprn_rec_new.ytd_deprn;
17188 if NVL(fa_cache_pkg.fazcdrd_record.use_eofy_reserve_flag,'N') = 'Y' then
17189 open l_recal_ytd;
17190 fetch l_recal_ytd into l_recal_ytd_count;
17191 close l_recal_ytd;
17192 IF ((l_recal_ytd_count > 0) and (l_total_ytd = l_deprn_reserve))then
17193 l_total_ytd := l_deprn_reserve - px_asset_fin_rec_new.eofy_reserve;
17194 END IF;
17195 end if;
17196
17197 -- End Bug 13086051
17198
17199 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
17200 (p_event_type => 'AMORT_ADJ',
17201 p_asset_fin_rec_new => px_asset_fin_rec_new,
17202 p_asset_fin_rec_old => p_asset_fin_rec_old,
17203 p_asset_hdr_rec => p_asset_hdr_rec,
17204 p_asset_type_rec => p_asset_type_rec,
17205 p_asset_deprn_rec => p_asset_deprn_rec_new,
17206 p_trans_rec => p_trans_rec,
17207 p_period_rec => p_period_rec,
17208 p_current_total_rsv => l_deprn_reserve,
17209 p_current_rsv => l_deprn_reserve -
17210 p_asset_deprn_rec_new.bonus_deprn_reserve - nvl(p_asset_deprn_rec_new.impairment_reserve,0),
17211 p_current_total_ytd => l_total_ytd, -- Bug 13086051 p_asset_deprn_rec_new.ytd_deprn,
17212 p_adj_reserve => p_asset_deprn_rec_adj.deprn_reserve,
17213 p_hyp_basis => l_dpr_out.new_adj_cost,
17214 p_hyp_total_rsv => l_dpr_out.new_deprn_rsv,
17215 p_hyp_rsv => l_dpr_out.new_deprn_rsv -
17216 l_dpr_out.new_bonus_deprn_rsv - nvl(l_dpr_out.new_impairment_rsv,0),
17217 p_eofy_recoverable_cost => l_eofy_rec_cost,
17218 p_eop_recoverable_cost => l_eop_rec_cost,
17219 p_eofy_salvage_value => l_eofy_sal_val,
17220 p_eop_salvage_value => l_eop_sal_val,
17221 p_mrc_sob_type_code => p_mrc_sob_type_code,
17222 p_used_by_adjustment => 'ADJUSTMENT',
17223 px_new_adjusted_cost => px_asset_fin_rec_new.adjusted_cost,
17224 px_new_raf => px_asset_fin_rec_new.rate_adjustment_factor,
17225 px_new_formula_factor => px_asset_fin_rec_new.formula_factor,
17226 p_log_level_rec => p_log_level_rec)) then
17227 raise calc_err;
17228 end if;
17229 /*Bug# 10106735 */
17230 if px_asset_fin_rec_new.rate_adjustment_factor = 0 then
17231 if (p_log_level_rec.statement_level) then
17232 fa_debug_pkg.add(l_calling_fn, 'After CALL_DEPRN_BASIS', 'New RAF is zero setting value of old RAF', p_log_level_rec => p_log_level_rec);
17233 end if;
17234 px_asset_fin_rec_new.rate_adjustment_factor := p_asset_fin_rec_old.rate_adjustment_factor;
17235 end if;
17236 --Bug6736655
17237 --Calling the createGroup function if the Group asset has been backdated during period of addition
17238 if (p_trans_rec.transaction_subtype = 'AMORTIZED') and
17239 (p_trans_rec.transaction_type_code = 'GROUP ADDITION' )
17240 and p_asset_fin_rec_old.date_placed_in_service > px_asset_fin_rec_new.date_placed_in_service
17241 then
17242
17243 if not createGroup(
17244 p_trans_rec => p_trans_rec,
17245 p_asset_hdr_rec => p_asset_hdr_rec,
17246 p_asset_type_rec => p_asset_type_rec,
17247 p_period_rec => p_period_rec,
17248 p_asset_fin_rec => px_asset_fin_rec_new,
17249 p_asset_deprn_rec => p_asset_deprn_rec_adj,
17250 p_mrc_sob_type_code => p_mrc_sob_type_code,
17251 p_calling_fn => l_calling_fn,
17252 p_log_level_rec => p_log_level_rec) then
17253
17254 if (p_log_level_rec.statement_level) then
17255 fa_debug_pkg.add(l_calling_fn, 'calling FA_AMORT_PVT.createGroup', 'FAILED', p_log_level_rec => p_log_level_rec);
17256 end if;
17257
17258 return (FALSE);
17259
17260 end if;
17261
17262
17263 end if;
17264 --++ HHIRAGA
17265 --++++++++ tracking is allocate case, create bs table
17266 if nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' then
17267
17268 if not FA_TRACK_MEMBER_PVT.update_member_books(p_trans_rec => p_trans_rec,
17269 p_asset_hdr_rec => p_asset_hdr_rec,
17270 p_dpr_in => l_dpr_in,
17271 p_mrc_sob_type_code => p_mrc_sob_type_code, p_log_level_rec => p_log_level_rec) then
17272 if (p_log_level_rec.statement_level) then
17273 fa_debug_pkg.add(l_calling_fn, 'Error calling',
17274 'FA_TRACK_MEMBER_PVT.update_member_books', p_log_level_rec => p_log_level_rec);
17275 end if;
17276
17277 raise calc_err;
17278 end if;
17279
17280 if (p_log_level_rec.statement_level) then
17281 fa_debug_pkg.add(l_calling_fn, 'fa_track_member_pvt.create_update_bs_table',
17282 'called', p_log_level_rec => p_log_level_rec);
17283 end if;
17284
17285 if not FA_TRACK_MEMBER_PVT.create_update_bs_table(p_trans_rec => p_trans_rec,
17286 p_book_type_code => p_asset_hdr_rec.book_type_code,
17287 p_group_asset_id => p_asset_hdr_rec.asset_id,
17288 p_mrc_sob_type_code => p_mrc_sob_type_code, --Bug 8941132
17289 p_sob_id => p_asset_hdr_rec.set_of_books_id, --Bug 8941132
17290 p_calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec) then
17291 if (p_log_level_rec.statement_level) then
17292 fa_debug_pkg.add(l_calling_fn, 'Error calling',
17293 'FA_TRACK_MEMBER_PVT.create_update_bs_table', p_log_level_rec => p_log_level_rec);
17294 end if;
17295
17296 raise calc_err;
17297 end if;
17298
17299 fa_track_member_pvt.p_track_member_eofy_table.delete;
17300 fa_track_member_pvt.p_track_member_table.delete;
17301 fa_track_member_pvt.p_track_mem_index_table.delete;
17302
17303 if (p_log_level_rec.statement_level) then
17304 fa_debug_pkg.add(l_calling_fn, 'fa_track_member_pvt.p_track_member_eofy_table/member_table',
17305 'deleted', p_log_level_rec => p_log_level_rec);
17306 end if;
17307
17308 end if; -- nvl(px_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE'
17309 -- End of HHIRAGA
17310
17311 -- Bug7715880: BP fix for bug7446301. Removed tracking method condition so that process
17312 -- will satisfy following if condition even if the asset type is not GROUP
17313 -- if (nvl(px_asset_fin_rec_new.tracking_method, 'NO TRACK') = 'ALLOCATE') and -- ENERGY
17314 IF (fa_cache_pkg.fazcdrd_record.rule_name = 'ENERGY PERIOD END BALANCE') and -- ENERGY
17315 (fa_cache_pkg.fazccmt_record.rate_source_rule = FA_STD_TYPES.FAD_RSR_PROD) then
17316 px_asset_fin_rec_new.adjusted_capacity := nvl(px_asset_fin_rec_new.production_capacity, 0) -
17317 nvl(p_asset_deprn_rec_new.ltd_production, 0);
17318 end if;
17319
17320 --
17321 -- Purpose of calling CurrentPeriodAdj is to reflect the trx to
17322 -- FA_BOOKS_SUMMARY. Not for calculating a catch-up.
17323 -- Call CurrentPeriodAdj if:
17324 -- This is group asset.
17325 -- This is current period trx
17326 -- This is not member ret/rein, group reclass or group reclas with enter.
17327 --
17328 if (p_asset_type_rec.asset_type = 'GROUP') and
17329 (nvl(p_trans_rec.amortization_start_date,
17330 p_trans_rec.transaction_date_entered) >=
17331 p_period_rec.calendar_period_open_date) and
17332 (p_trans_rec.transaction_key not in ('MR', 'MS', 'GC') or
17333 ((p_trans_rec.transaction_key = 'GC' and
17334 nvl(p_group_reclass_options_rec.group_reclass_type, 'NULL') = 'MANUAL'))) then
17335
17336 --tk_util.DumpTrxRec(p_trans_rec, 'p_trans_rec');
17337 --tk_util.DumpFinRec(p_asset_fin_rec_old, 'old fin_rec');
17338 --tk_util.DumpFinRec(px_asset_fin_rec_new, 'new_fin_rec');
17339 --tk_util.DumpDeprnRec(p_asset_deprn_rec_adj, 'adj deprn');
17340
17341 populate_fin_rec(
17342 p_trans_rec => p_trans_rec,
17343 p_asset_fin_rec_old => p_asset_fin_rec_old,
17344 p_asset_fin_rec_new => px_asset_fin_rec_new,
17345 x_asset_fin_rec_adj => l_asset_fin_rec_adj,
17346 p_log_level_rec => p_Log_level_rec);
17347
17348 if (not CurrentPeriodAdj(
17349 p_trans_rec => p_trans_rec,
17350 p_asset_hdr_rec => p_asset_hdr_rec,
17351 p_asset_type_rec => p_asset_type_rec,
17352 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
17353 p_asset_fin_rec_old => p_asset_fin_rec_old,
17354 px_asset_fin_rec_new => px_asset_fin_rec_new,
17355 p_period_rec => p_period_rec,
17356 p_asset_deprn_rec_adj => p_asset_deprn_rec_adj,
17357 p_proceeds_of_sale => 0,
17358 p_cost_of_removal => 0,
17359 p_calling_fn => l_calling_fn,
17360 p_mrc_sob_type_code => p_mrc_sob_type_code,
17361 p_log_level_rec => p_Log_level_rec)) then
17362 raise calc_err;
17363 end if;
17364
17365 end if; -- (p_asset_type_rec.asset_type = 'GROUP')
17366
17367 if (p_log_level_rec.statement_level) then
17368 fa_debug_pkg.add(l_calling_fn, 'End', px_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
17369 end if;
17370
17371 return true;
17372
17373 EXCEPTION
17374 when calc_err then
17375 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
17376 return false;
17377
17378 when others then
17379 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
17380 return false;
17381
17382 END calc_raf_adj_cost;
17383
17384 FUNCTION check_dpis_change (
17385 p_book_type_code VARCHAR2,
17386 p_transaction_header_id NUMBER,
17387 p_group_asset_id NUMBER,
17388 x_asset_fin_rec OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
17389 x_period_counter_out OUT NOCOPY NUMBER,
17390 p_mrc_sob_type_code VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
17391 RETURN BOOLEAN is
17392
17393 l_calling_fn varchar2(100) := 'FA_AMORT_PVT.check_dpis_change';
17394
17395 CURSOR c_check_dpis_change is
17396 select inbk.cost
17397 , inbk.cip_cost
17398 , inbk.salvage_value
17399 , inbk.allowed_deprn_limit_amount
17400 , bs.period_counter
17401 from fa_books inbk
17402 , fa_books outbk
17403 , fa_transaction_headers inth
17404 , fa_transaction_headers outth
17405 , fa_books_summary bs
17406 where inbk.transaction_header_id_in = p_transaction_header_id
17407 and outbk.asset_id = inbk.asset_id
17408 and outbk.book_type_code = p_book_type_code
17409 and outbk.transaction_header_id_out = p_transaction_header_id
17410 and outbk.transaction_header_id_in = outth.transaction_header_id
17411 and bs.asset_id = p_group_asset_id
17412 and bs.book_type_code = p_book_type_code
17413 and nvl(outth.amortization_start_date,
17414 outth.transaction_date_entered) between bs.calendar_period_open_date
17415 and bs.calendar_period_close_date
17416 and inbk.cost = outbk.cost
17417 and nvl(inbk.salvage_value, 0) = nvl(outbk.salvage_value, 0)
17418 and nvl(inbk.allowed_deprn_limit_amount, 0) = nvl(outbk.allowed_deprn_limit_amount, 0)
17419 and inbk.date_placed_in_service <> outbk.date_placed_in_service
17420 ;
17421 chk_err exception;
17422 BEGIN
17423 if (p_log_level_rec.statement_level) then
17424 fa_debug_pkg.add(l_calling_fn, 'Begin', p_transaction_header_id, p_log_level_rec => p_log_level_rec);
17425 end if;
17426
17427 OPEN c_check_dpis_change;
17428 FETCH c_check_dpis_change into x_asset_fin_rec.cost
17429 , x_asset_fin_rec.cip_cost
17430 , x_asset_fin_rec.salvage_value
17431 , x_asset_fin_rec.allowed_deprn_limit_amount
17432 , x_period_counter_out;
17433
17434 CLOSE c_check_dpis_change;
17435
17436 if (p_log_level_rec.statement_level) then
17437 fa_debug_pkg.add(l_calling_fn, 'x_period_counter_out', x_period_counter_out, p_log_level_rec => p_log_level_rec);
17438 end if;
17439
17440
17441 if (p_log_level_rec.statement_level) then
17442 fa_debug_pkg.add(l_calling_fn, 'x_period_counter_out', x_period_counter_out, p_log_level_rec => p_log_level_rec);
17443 fa_debug_pkg.add(l_calling_fn, 'x_asset_fin_rec.cost', x_asset_fin_rec.cost, p_log_level_rec => p_log_level_rec);
17444 fa_debug_pkg.add(l_calling_fn, 'End', x_asset_fin_rec.cost, p_log_level_rec => p_log_level_rec);
17445 end if;
17446
17447 return true;
17448
17449 EXCEPTION
17450 when chk_err then
17451 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
17452 return false;
17453
17454 when others then
17455 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
17456 return false;
17457
17458 END check_dpis_change;
17459
17460 FUNCTION check_member_existence (
17461 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
17462 RETURN BOOLEAN is
17463
17464 l_calling_fn varchar2(100) := 'FA_AMORT_PVT.check_member_existence';
17465
17466 CURSOR c_mem_exists IS
17467 select transaction_header_id_in
17468 from fa_books
17469 where group_asset_id = p_asset_hdr_rec.asset_id
17470 and book_type_code = p_asset_hdr_rec.book_type_code
17471 and transaction_header_id_out is null;
17472
17473 l_temp_thid NUMBER;
17474
17475 BEGIN
17476 if (p_log_level_rec.statement_level) then
17477 fa_debug_pkg.add(l_calling_fn, 'Begin', p_asset_hdr_rec.asset_id, p_log_level_rec => p_log_level_rec);
17478 end if;
17479
17480 OPEN c_mem_exists;
17481 FETCH c_mem_exists INTO l_temp_thid;
17482
17483 if (p_log_level_rec.statement_level) then
17484 fa_debug_pkg.add(l_calling_fn, 'Begin', c_mem_exists%notfound);
17485 end if;
17486
17487 if (c_mem_exists%notfound) then
17488 CLOSE c_mem_exists;
17489 return true;
17490 else
17491 CLOSE c_mem_exists;
17492 return false;
17493 end if;
17494
17495 EXCEPTION
17496 when others then
17497 if (p_log_level_rec.statement_level) then
17498 fa_debug_pkg.add(l_calling_fn, 'Error', sqlerrm, p_log_level_rec => p_log_level_rec);
17499 end if;
17500
17501 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
17502 return false;
17503
17504 END check_member_existence;
17505
17506
17507 END FA_AMORT_PVT;