[Home] [Help]
PACKAGE BODY: APPS.FA_AMORT_PKG
Source
1 PACKAGE BODY FA_AMORT_PKG as
2 /* $Header: FAAMRT1B.pls 120.11 2005/07/25 10:05:02 yyoon ship $ */
3
4 adj_ptr_faxiat FA_ADJUST_TYPE_PKG.fa_adj_row_struct;
5
6
7 FUNCTION faxiat (X_fin_ptr FA_STD_TYPES.fin_info_struct,
8 X_deprn_exp number,
9 X_bonus_deprn_exp number,
10 X_ann_adj_amt number,
11 X_ccid number,
12 X_last_update_date date default sysdate,
13 X_last_updated_by number default -1,
14 X_last_update_login number default -1,
15 X_mrc_sob_type_code varchar2,
16 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
17 return boolean
18 is
19 h_book_type_code fa_book_controls.book_type_code%type;
20 h_category_id fa_category_books.category_id%type;
21 h_cost_source varchar2(30);
22 h_cost_acct_type varchar2(30);
23 h_clearing_acct_type varchar2(30);
24 h_cost_acct varchar2(30);
25 h_clearing_acct varchar2(30);
26 h_expense_acct_type varchar2(30);
27 h_expense_acct varchar2(30);
28 h_expense_source varchar2(30);
29 BEGIN <<faxiat>>
30 h_book_type_code:=X_fin_ptr.book;
31 h_category_id:=X_fin_ptr.category_id;
32 if (p_log_level_rec.statement_level)
33 then
34 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxiat',
35 element=>'X_last_update_date',
36 value=>X_last_update_date,
37 p_log_level_rec => p_log_level_rec);
38 end if;
39 adj_ptr_faxiat.transaction_header_id := X_fin_ptr.transaction_id;
40 adj_ptr_faxiat.asset_invoice_id := 0;
41 adj_ptr_faxiat.asset_id := X_fin_ptr.asset_id;
42 adj_ptr_faxiat.book_type_code := h_book_type_code;
43 adj_ptr_faxiat.period_counter_created
44 := X_fin_ptr.period_ctr;
45 adj_ptr_faxiat.period_counter_adjusted
46 := X_fin_ptr.period_ctr;
47 adj_ptr_faxiat.current_units := X_fin_ptr.units;
48 adj_ptr_faxiat.selection_mode
49 := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
50 adj_ptr_faxiat.selection_thid := 0;
51 adj_ptr_faxiat.selection_retid := 0;
52 adj_ptr_faxiat.flush_adj_flag := FALSE;
53 adj_ptr_faxiat.gen_ccid_flag := TRUE;
54 adj_ptr_faxiat.code_combination_id := 0;
55 adj_ptr_faxiat.distribution_id := 0;
56 adj_ptr_faxiat.last_update_date := X_last_update_date;
57 adj_ptr_faxiat.leveling_flag := TRUE;
58
59 -- override
60 adj_ptr_faxiat.deprn_override_flag := '';
61
62 if not fa_cache_pkg.fazccb(h_book_type_code,
63 h_category_id,
64 p_log_level_rec
65 )
66 then
67 FA_SRVR_MSG.ADD_MESSAGE
68 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
69 p_log_level_rec => p_log_level_rec);
70
71 return FALSE;
72 end if;
73
74 if (X_fin_ptr.asset_type = 'CIP')
75 then
76 h_cost_source := 'CIP ADJUSTMENT';
77 h_cost_acct_type := 'CIP_COST_ACCT';
78 h_clearing_acct_type := 'CIP_CLEARING_ACCT';
79 h_cost_acct := FA_CACHE_PKG.fazccb_record.cip_cost_acct;
80 h_clearing_acct := FA_CACHE_PKG.fazccb_record.cip_clearing_acct;
81 else
82 h_cost_source := 'ADJUSTMENT';
83 h_cost_acct_type := 'ASSET_COST_ACCT';
84 h_clearing_acct_type := 'ASSET_CLEARING_ACCT';
85 h_cost_acct := FA_CACHE_PKG.fazccb_record.asset_cost_acct;
86 h_clearing_acct:=FA_CACHE_PKG.fazccb_record.asset_clearing_acct;
87 end if;
88 adj_ptr_faxiat.annualized_adjustment:=0;
89 adj_ptr_faxiat.source_type_code := h_cost_source;
90 adj_ptr_faxiat.adjustment_amount
91 := X_fin_ptr.cost - X_fin_ptr.old_cost;
92 if (adj_ptr_faxiat.adjustment_amount) <>0
93 then
94 adj_ptr_faxiat.adjustment_type:='COST';
95 if (adj_ptr_faxiat.adjustment_amount) > 0
96 then
97 adj_ptr_faxiat.debit_credit_flag :='DR';
98 else
99 adj_ptr_faxiat.adjustment_amount
100 := (-1) * adj_ptr_faxiat.adjustment_amount;
101 adj_ptr_faxiat.debit_credit_flag :='CR';
102 end if;
103 adj_ptr_faxiat.account:=h_cost_acct;
104 adj_ptr_faxiat.account_type:=h_cost_acct_type;
105 adj_ptr_faxiat.mrc_sob_type_code := X_mrc_sob_type_code;
106
107 --if (p_log_level_rec.statement_level)
108 --then
109 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxiat',
110 element=>'Adjustment Amount.. before faxinaj',
111 value=>adj_ptr_faxiat.adjustment_amount,
112 p_log_level_rec => p_log_level_rec);
113 --end if;
114 if (not FA_INS_ADJUST_PKG.faxinaj(adj_ptr_faxiat,
115 X_last_update_date=>X_last_update_date,
116 X_last_updated_by=>X_last_updated_by,
117 X_last_update_login=>X_last_update_login,
118 p_log_level_rec => p_log_level_rec))
119 then
120 FA_SRVR_MSG.ADD_MESSAGE
121 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
122 p_log_level_rec => p_log_level_rec);
123 return FALSE;
124 end if;
125 if (p_log_level_rec.statement_level)
126 then
127 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxiat',
128 element=>'Amount Inserted',
129 value=>adj_ptr_faxiat.amount_inserted,
130 p_log_level_rec => p_log_level_rec);
131 end if;
132
133 adj_ptr_faxiat.adjustment_type:='COST CLEARING';
134 if (adj_ptr_faxiat.debit_credit_flag='DR')
135 then
136 adj_ptr_faxiat.debit_credit_flag :='CR';
137 else
138 adj_ptr_faxiat.debit_credit_flag :='DR';
139 end if;
140 adj_ptr_faxiat.account:=h_clearing_acct;
141 adj_ptr_faxiat.account_type:=h_clearing_acct_type;
142 adj_ptr_faxiat.mrc_sob_type_code := X_mrc_sob_type_code;
143
144 if (X_ccid<>0)
145 then
146 adj_ptr_faxiat.code_combination_id := X_ccid;
147 adj_ptr_faxiat.gen_ccid_flag :=FALSE;
148 end if;
149 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxiat',
150 element=>'Adjustment Amount.. before faxinaj CCLEARI',
151 value=>adj_ptr_faxiat.adjustment_amount,
152 p_log_level_rec => p_log_level_rec);
153
154 if (not FA_INS_ADJUST_PKG.faxinaj(adj_ptr_faxiat,
155 X_last_update_date=>X_last_update_date,
156 X_last_updated_by=>X_last_updated_by,
157 X_last_update_login=>X_last_update_login,
158 p_log_level_rec => p_log_level_rec))
159 then
160 FA_SRVR_MSG.ADD_MESSAGE
161 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
162 p_log_level_rec => p_log_level_rec);
163
164 return FALSE;
165 end if;
166
167 if (X_ccid<>0)
168 then
169 adj_ptr_faxiat.code_combination_id := 0;
170 adj_ptr_faxiat.gen_ccid_flag :=TRUE;
171 end if;
172 end if; /* adjustment_amount<>0 */
173
174 h_expense_acct_type := 'DEPRN_EXPENSE_ACCT';
175 h_expense_acct := FA_CACHE_PKG.fazccb_record.deprn_expense_acct;
176 h_expense_source:='DEPRECIATION';
177 adj_ptr_faxiat.source_type_code:=h_expense_source;
178 adj_ptr_faxiat.adjustment_type:='EXPENSE';
179 adj_ptr_faxiat.debit_credit_flag:='DR';
180 adj_ptr_faxiat.account:=h_expense_acct;
181 adj_ptr_faxiat.account_type:=h_expense_acct_type;
182 adj_ptr_faxiat.flush_adj_flag:=TRUE;
183 adj_ptr_faxiat.adjustment_amount:=X_deprn_exp;
184 adj_ptr_faxiat.annualized_adjustment:=X_ann_adj_amt;
185 adj_ptr_faxiat.mrc_sob_type_code := X_mrc_sob_type_code;
186
187 /* manual override */
188
189 if X_fin_ptr.deprn_override_flag in (fa_std_types.FA_OVERRIDE_DPR,
190 fa_std_types.FA_OVERRIDE_BONUS,
191 fa_std_types.FA_OVERRIDE_DPR_BONUS) then
192 adj_ptr_faxiat.deprn_override_flag := 'Y';
193 else
194 adj_ptr_faxiat.deprn_override_flag := '';
195 end if;
196 /* End of Manual override */
197
198 if (p_log_level_rec.statement_level)
199 then
200 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxiat',
201 element=>'Adj-AMOUNT-BEFORE DEPRN_EXPENSE',
202 value=>adj_ptr_faxiat.adjustment_amount,
203 p_log_level_rec => p_log_level_rec);
204 end if;
205 if (adj_ptr_faxiat.adjustment_amount<>0)
206 then
207 if (not FA_INS_ADJUST_PKG.faxinaj(adj_ptr_faxiat,
208 X_last_update_date=>X_last_update_date,
209 X_last_updated_by=>X_last_updated_by,
210 X_last_update_login=>X_last_update_login,
211 p_log_level_rec => p_log_level_rec))
212 then
213 FA_SRVR_MSG.ADD_MESSAGE
214 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
215 p_log_level_rec => p_log_level_rec);
216 return FALSE;
217 end if;
218 else
219 adj_ptr_faxiat.transaction_header_id:=0;
220 if (not FA_INS_ADJUST_PKG.faxinaj(adj_ptr_faxiat,
221 X_last_update_date=>X_last_update_date,
222 X_last_updated_by=>X_last_updated_by,
223 X_last_update_login=>X_last_update_login,
224 p_log_level_rec => p_log_level_rec))
225 then
226 FA_SRVR_MSG.ADD_MESSAGE
227 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
228 p_log_level_rec => p_log_level_rec);
229 return FALSE;
230 end if;
231 end if;
232
233
234
235 -- bonus. Verfied that this gets inserted.
236 -- Now need to calculate
237 -- always DR, if reduced cost adjustment, negative adjustment_amount.
238 -- IF statement evaluates if there is any bonus expense to insert into fa_adjustments.
239 if nvl(X_bonus_deprn_exp,0) <> 0 then
240
241 h_expense_acct_type := 'BONUS_DEPRN_EXPENSE_ACCT';
242 -- account could be derived from somewhere else, derive from account generat.
243 h_expense_acct := FA_CACHE_PKG.fazccb_record.bonus_deprn_expense_acct;
244 h_expense_source:='DEPRECIATION';
245 adj_ptr_faxiat.source_type_code:=h_expense_source;
246 adj_ptr_faxiat.adjustment_type:='BONUS EXPENSE';
247 adj_ptr_faxiat.debit_credit_flag:='DR';
248 adj_ptr_faxiat.account:=h_expense_acct;
249 adj_ptr_faxiat.account_type:=h_expense_acct_type;
250 adj_ptr_faxiat.flush_adj_flag:=TRUE;
251
252 -- override
253 if X_fin_ptr.deprn_override_flag in (
254 fa_std_types.FA_OVERRIDE_BONUS,
255 fa_std_types.FA_OVERRIDE_DPR_BONUS) then
256 adj_ptr_faxiat.deprn_override_flag := 'Y';
257 else
258 adj_ptr_faxiat.deprn_override_flag := '';
259 end if;
260
261 -- bonus
262 adj_ptr_faxiat.adjustment_amount:=X_bonus_deprn_exp;
263 adj_ptr_faxiat.annualized_adjustment:=X_ann_adj_amt;
264 adj_ptr_faxiat.mrc_sob_type_code := X_mrc_sob_type_code;
265
266 if (p_log_level_rec.statement_level)
267 then
268 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxiat',
269 element=>'Adj-AMOUNT-BEFORE BONUS DEPRN_EXPENSE',
270 value=>adj_ptr_faxiat.adjustment_amount,
271 p_log_level_rec => p_log_level_rec);
272 end if;
273 if (adj_ptr_faxiat.adjustment_amount<>0)
274 then
275 if (not FA_INS_ADJUST_PKG.faxinaj(adj_ptr_faxiat,
276 X_last_update_date=>X_last_update_date,
277 X_last_updated_by=>X_last_updated_by,
278 X_last_update_login=>X_last_update_login,
279 p_log_level_rec => p_log_level_rec))
280 then
281 FA_SRVR_MSG.ADD_MESSAGE
282 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
283 p_log_level_rec => p_log_level_rec);
284 return FALSE;
285 end if;
286 else
287 adj_ptr_faxiat.transaction_header_id:=0;
288 if (not FA_INS_ADJUST_PKG.faxinaj(adj_ptr_faxiat,
289 X_last_update_date=>X_last_update_date,
290 X_last_updated_by=>X_last_updated_by,
291 X_last_update_login=>X_last_update_login,
292 p_log_level_rec => p_log_level_rec))
293 then
294 FA_SRVR_MSG.ADD_MESSAGE
295 (CALLING_FN => 'FA_AMORT_PKG.faxiat',
296 p_log_level_rec => p_log_level_rec);
297 return FALSE;
298 end if;
299 end if;
300
301 end if;
302
303
304
305 if (p_log_level_rec.statement_level)
306 then
307 FA_DEBUG_PKG.ADD(fname =>'FA_AMORT_PKG.faxiat',
308 element =>'Amount Inserted',
309 value =>adj_ptr_faxiat.amount_inserted,
310 p_log_level_rec => p_log_level_rec);
311 end if;
312 return TRUE;
313 exception
314 when others then
315 FA_SRVR_MSG.ADD_SQL_ERROR (
316 CALLING_FN => 'FA_AMORT_PKG.faxiat'
317 ,p_log_level_rec => p_log_level_rec);
318 return FALSE;
319 END faxiat;
320
321 FUNCTION faxraf(X_fin_info_ptr in out nocopy FA_STD_TYPES.fin_info_struct,
322 X_new_raf in out nocopy number,
323 X_new_adj_cost in out nocopy number,
324 X_new_adj_capacity in out nocopy number,
325 X_new_reval_amo_basis in out nocopy number,
326 X_new_salvage_value in out nocopy number,
327 X_reval_deprn_rsv_adj in out nocopy number,
328 X_new_formula_factor in out nocopy number,
329 X_bonus_deprn_exp in out nocopy number,
330 X_mrc_sob_type_code in varchar2,
331 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
332
333 return boolean is
334 h_dpr_row FA_STD_TYPES.dpr_struct;
335 h_dpr_out FA_STD_TYPES.dpr_out_struct;
336 h_dpr_arr FA_STD_TYPES.dpr_arr_type;
337 h_add_txn_id number;
338 h_deprn_basis_rule varchar2(25);
339 h_rate_source_rule varchar2(25);
340 h_excl_salvage_val_flag boolean;
341 h_deprn_last_year_flag boolean;
342 h_method_id integer;
343 h_dist_book varchar2(15);
344 h_current_rsv number;
345 h_deprn_rsv number;
346 h_current_ytd number;
347 h_temp number;
348 h_user_id number;
349 h_login_id number;
350 h_err_string varchar2(500);
351 d_new_raf number;
352 d_new_adj_cost number;
353 d_new_reval_amo_basis number;
354 d_current_rsv number;
355 d_reval_deprn_rsv_adj number;
356 d_rec_cost number;
357 d_new_deprn_rsv number;
358 -- Added for Dated Adjustment
359 fy_name varchar2(45);
360 amortize_per_num integer;
361 amortize_fy integer;
362 start_jdate integer;
363 pers_per_yr integer;
364 amortization_start_jdate integer;
365 cur_fy integer;
366 cur_per_num integer;
367 last_per_ctr integer;
368 amortize_per_ctr integer;
369 adjustment_amount number;
370 h_rsv_amount number;
371 deprn_summary fa_std_types.fa_deprn_row_struct;
372 h_dummy_bool boolean;--Used to call QUERY_BALANCES_INT
373 -- End Added for Dated Adjustment
374 temp_deprn_rsv number; -- reserve at the beginning of fy
375 -- Added for bonus rule
376 h_bonus_rule FA_BONUS_RULES.Bonus_Rule%TYPE;
377 h_bonus_deprn_rsv number;
378 -- not used.
379 -- h_deprn_total_rsv number;
380 h_current_total_rsv number;
381
382 /**** Enhancement for BT. YYOON - Start */
383 check_flag varchar2(3);
384
385 /* Manual Override */
386 use_override boolean;
387 running_mode number;
388 used_by_revaluation number;
389
390 -- Added for Depreciable Basis Formula
391 h_rule_in FA_STD_TYPES.fa_deprn_rule_in_struct;
392 h_rule_out FA_STD_TYPES.fa_deprn_rule_out_struct;
393
394 cursor check_period_of_addition is
395 select 'Y' -- 'Y' if the current period of the asset is period of addition.
396 from dual
397 where not exists
398 (select 'x'
399 from fa_deprn_summary
400 where asset_id = X_fin_info_ptr.asset_id
401 and book_type_code = X_fin_info_ptr.book
402 and deprn_amount <> 0
403 and deprn_source_code = 'DEPRN'
404 );
405 /* Enhancement for BT. YYOON - End */
406
407
408 -- multiple backdate amortization enhancement - begin LSON
409 cursor amort_date_before_add is
410 select th.transaction_header_id
411 from fa_transaction_headers th, fa_deprn_periods dp
412 where th.book_type_code = X_fin_info_ptr.book
413 and th.asset_id = X_fin_info_ptr.asset_id
414 and th.transaction_type_code = 'ADDITION'
415 and th.book_type_code = dp.book_type_code
416 and th.date_effective between dp.period_open_date and
417 nvl(dp.period_close_date,sysdate)
418 and X_fin_info_ptr.amortization_start_date < dp.calendar_period_open_date;
422 --
419
420 -- multiple backdate amortization enhancement - end LSON
421
423 -- This is to check whether the backdated transaction
424 -- is dated in the same fy as fy of addition.
425 -- This is to determine whether BOOKS row of FA_DEPRN_SUMMARY
426 -- can be used or not
427 --
428 cursor c_check_fiscal_year (c_thid number) is
429 select 1
430 from fa_transaction_headers th
431 , fa_deprn_periods dp
432 , fa_fiscal_year fy
433 , fa_calendar_periods cp
434 where th.transaction_header_id = c_thid
435 and th.date_effective between dp.period_open_date and
436 nvl(dp.period_close_date,sysdate)
437 and dp.book_type_code = X_fin_info_ptr.book
438 and fy.fiscal_year_name = fa_cache_pkg.fazcbc_record.fiscal_year_name
439 and cp.start_date = fy.start_date
440 and cp.period_num = 1
441 and cp.calendar_type = fa_cache_pkg.fazcbc_record.deprn_calendar
442 and dp.calendar_period_open_date between fy.start_date and fy.end_date
443 and X_fin_info_ptr.amortization_start_date between fy.start_date and fy.end_date;
444
445 --
446 -- Following two cursorss are to get eofy_reserve
447 --
448 cursor c_get_reserve is
449 select deprn_reserve - ytd_deprn
450 , bonus_deprn_reserve - bonus_ytd_deprn
451 from fa_deprn_summary
452 where book_type_code = X_fin_info_ptr.book
453 and asset_id = X_fin_info_ptr.asset_id
454 and deprn_source_code = 'BOOKS';
455
456 cursor c_get_mc_reserve is
457 select deprn_reserve - ytd_deprn
458 , bonus_deprn_reserve - bonus_ytd_deprn
459 from fa_deprn_summary_mrc_v
460 where book_type_code = X_fin_info_ptr.book
461 and asset_id = X_fin_info_ptr.asset_id
462 and deprn_source_code = 'BOOKS';
463
464 l_same_fy NUMBER;
465
466 begin <<faxraf>>
467
468 -- override
469 if X_fin_info_ptr.running_mode = fa_std_types.FA_DPR_PROJECT then
470 running_mode:= fa_std_types.FA_DPR_PROJECT;
471 else
472 running_mode:= fa_std_types.FA_DPR_NORMAL;
473 end if;
474 -- End of Manual Override
475
476 if (p_log_level_rec.statement_level)
477 then
478 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
479 element=>'method code',
480 value=>X_fin_info_ptr.method_code,
481 p_log_level_rec => p_log_level_rec);
482 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
483 element=>'life',
484 value=>X_fin_info_ptr.life,
485 p_log_level_rec => p_log_level_rec);
486 end if;
487
488 if (not FA_CACHE_PKG.fazccmt(X_fin_info_ptr.method_code,
489 X_fin_info_ptr.life
490 ,p_log_level_rec => p_log_level_rec))
491 then
492 FA_SRVR_MSG.ADD_MESSAGE
493 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
494 p_log_level_rec => p_log_level_rec);
495 return FALSE;
496 end if;
497
498 h_method_id := fa_cache_pkg.fazccmt_record.method_id;
499 h_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
500 h_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
501
502 if fa_cache_pkg.fazccmt_record.exclude_salvage_value_flag = 'YES' then
503 h_excl_salvage_val_flag := TRUE;
504 else
505 h_excl_salvage_val_flag := FALSE;
506 end if;
507
508 if fa_cache_pkg.fazccmt_record.depreciate_lastyear_flag = 'YES' then
509 h_deprn_last_year_flag := TRUE;
510 else
511 h_deprn_last_year_flag := FALSE;
512 end if;
513
514 if (p_log_level_rec.statement_level)
515 then
516 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
517 element=>'After fazccmt',
518 value=>2,
519 p_log_level_rec => p_log_level_rec);
520 end if;
521
522 h_err_string := 'FA_AMT_BD_DPR_STRUCT';
523
524 if (p_log_level_rec.statement_level)
525 then
526 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
527 element=>'deprn_rounding_flag- before faxbds',
528 value=>X_fin_info_ptr.deprn_rounding_flag,
529 p_log_level_rec => p_log_level_rec);
530 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
531 element=>'FA_STD TYPE deprn_rnd- before faxbds',
532 value=>FA_STD_TYPES.FA_DPR_ROUND_ADJ,
533 p_log_level_rec => p_log_level_rec);
534 end if;
535
536 /*
537 if (not FA_EXP_PKG.faxbds(fin_info_ptr=>X_fin_info_ptr,
538 dpr_ptr=>h_dpr_row,
539 dist_book=>h_dist_book,
540 deprn_rsv=>h_current_rsv,
541 amortized_flag=>TRUE
542 ,p_log_level_rec => p_log_level_rec))
543 then
544 */
545 if (not fa_exp_pkg.faxbds(X_fin_info_ptr,
546 h_dpr_row,
547 h_dist_book,
548 h_current_rsv,
549 TRUE,
550 X_mrc_sob_type_code
551 ,p_log_level_rec => p_log_level_rec))
552 then
553 FA_SRVR_MSG.ADD_MESSAGE
554 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
555 NAME=>'FA_AMT_BD_DPR_STRUCT',
556 p_log_level_rec => p_log_level_rec);
557 return FALSE;
558 end if;
562
559 h_current_rsv := h_current_rsv + X_reval_deprn_rsv_adj;
560 h_current_ytd:= h_dpr_row.ytd_deprn;
561
563 -- override
564 h_dpr_row.used_by_adjustment := TRUE;
565 h_dpr_row.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
566 -- End of override
567
568 h_err_string := 'FA_AMT_CAL_DP_EXP';
569 if (p_log_level_rec.statement_level)
570 then
571 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
572 element=>'Before faxcde',
573 value=>3,
574 p_log_level_rec => p_log_level_rec);
575 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
576 element=>'h_dpr_row.deprn_rounding_flag ',
577 value=>h_dpr_row.deprn_rounding_flag,
578 p_log_level_rec => p_log_level_rec);
579 end if;
580
581 -- Added for Dated Adjustment
582 if (X_fin_info_ptr.amortization_start_date is not null) then
583 -- removed fazcbc cache call as it should already be loaded - BMR
584 last_per_ctr := fa_cache_pkg.fazcbc_record.last_period_counter;
585 cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
586 cur_per_num := mod((last_per_ctr+1),cur_fy);
587 amortization_start_jdate := to_number(to_char(X_fin_info_ptr.amortization_start_date, 'J'));
588 fy_name := fa_cache_pkg.fazcbc_record.fiscal_year_name;
589 if not fa_cache_pkg.fazccp (
590 h_dpr_row.calendar_type, fy_name,amortization_start_jdate,
591 amortize_per_num, amortize_fy, start_jdate, p_log_level_rec) then
592 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf',
593 p_log_level_rec => p_log_level_rec);
594 return (FALSE);
595 end if;
596 if (not((cur_fy = amortize_fy) and (cur_per_num = amortize_per_num))) then
597 if not fa_cache_pkg.fazcct (h_dpr_row.calendar_type) then
598 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf',
599 p_log_level_rec => p_log_level_rec);
600 return (FALSE);
601 end if;
602 pers_per_yr := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
603 if (amortize_per_num = 1) then
604 h_dpr_row.y_end := amortize_fy - 1;
605 else
606 h_dpr_row.y_end := amortize_fy;
607 end if;
608 if (amortize_per_num = 1) then
609 h_dpr_row.p_cl_end := pers_per_yr;
610 else
611 h_dpr_row.p_cl_end := amortize_per_num - 1;
612 end if;
613 end if; --if (not((cur_fy = amortize_fy) and (cur_per_num = amortize_per_num)))
614
615 end if; --if (X_fin_info_ptr.amortization_start_date is not null)
616 -- End Added for Dated Adjustment
617
618
619 -- bonus: We need to exclude bonus amounts when calculating raf.
620 -- proved that bonus_rule is excluded, if exist for asset.
621 h_bonus_rule := h_dpr_row.bonus_rule;
622 h_dpr_row.bonus_rule := '';
623 -- row below may not be needed.
624 -- h_bonus_deprn_rsv := h_dpr_row.bonus_deprn_rsv;
625 -- h_dpr_row.deprn_rsv is not used.
626 -- h_deprn_total_rsv := h_dpr_row.deprn_rsv;
627 -- h_dpr_row.deprn_rsv := h_dpr_row.deprn_rsv - h_dpr_row.bonus_deprn_rsv;
628 h_current_total_rsv := h_current_rsv;
629 h_current_rsv := h_current_rsv - nvl(h_dpr_row.bonus_deprn_rsv,0);
630
631 used_by_revaluation:= 0;
632 if X_fin_info_ptr.used_by_revaluation = 1 then
633 used_by_revaluation:= 1;
634 end if;
635
636 use_override := ((h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FORMULA) or
637 (((h_rate_source_rule = FA_STD_TYPES.FAD_RSR_CALC) or
638 (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_TABLE)) and
639 (h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_COST)) or
640 used_by_revaluation = 1);
641
642 if (p_log_level_rec.statement_level) then
643 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf',
644 element=>'Before call to faxcde regular case',
645 value=>h_dpr_row.bonus_rule,
646 p_log_level_rec => p_log_level_rec);
647 end if;
648
649 h_dpr_row.mrc_sob_type_code := X_mrc_sob_type_code;
650
651 if (not FA_CDE_PKG.faxcde(h_dpr_row,
652 h_dpr_arr,
653 h_dpr_out,
654 running_mode
655 ,p_log_level_rec => p_log_level_rec)) and (use_override)
656 then
657 FA_SRVR_MSG.ADD_MESSAGE
658 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
659 NAME=>'FA_AMT_CAL_DP_EXP',
660 p_log_level_rec => p_log_level_rec);
661 if (p_log_level_rec.statement_level)
662 then
663 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
664 element=>'After faxcde 1st time',
665 value=>'False',
666 p_log_level_rec => p_log_level_rec);
667 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
668 element=>'h_dpr_out.rate_adj_factor',
669 value=>h_dpr_row.rate_adj_factor,
670 p_log_level_rec => p_log_level_rec);
671 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
672 element=>'h_dpr_out.adj_capacity',
673 value=>h_dpr_row.adj_capacity,
674 p_log_level_rec => p_log_level_rec);
675 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
676 element=>'h_dpr_out.capacity',
677 value=>h_dpr_row.capacity,
678 p_log_level_rec => p_log_level_rec);
679 end if;
680 return FALSE;
684 fa_std_types.deprn_override_trigger_enabled:= FALSE;
681 end if;
682
683 -- Override
685 if use_override then -- pass deprn_override_flag to faxiat
686 X_fin_info_ptr.deprn_override_flag:= h_dpr_out.deprn_override_flag;
687 if (p_log_level_rec.statement_level) then
688 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf',
689 element=>'deprn_override_flag1',
690 value=>h_dpr_out.deprn_override_flag,
691 p_log_level_rec => p_log_level_rec);
692 end if;
693 else
694 -- pass fa_no_override to faxiat
695 X_fin_info_ptr.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
696 -- update the status fa_deprn_override from 'SELECTED' to 'POST'
697 UPDATE FA_DEPRN_OVERRIDE
698 SET status = 'POST'
699 WHERE
700 used_by = 'ADJUSTMENT' and
701 status = 'SELECTED' and
702 transaction_header_id is null;
703 end if;
704 fa_std_types.deprn_override_trigger_enabled:= TRUE;
705 -- End of Manual Override
706
707
708 -- In most cases, New Adjusted_Cost = New Net Book Value;
709 -- New Rate_Adjustment_Factor =
710 -- New Net Book Value / New Deprn_Reserve
711 -- New Reval_Amortization_Basis = (dpr) Reval_Reserve
712
713 -- bonus between here and next, include bonus amounts.
714
715
716 -- bonus: modified according to decision from domain experts:
717 -- now using Cost - Total Reserve
718 -- when calculating adjusted_cost for nbv assets and
719 -- Cost - Regular Reserve (without bonus deprn res) for cost assets
720
721 -- Add the calling Depreciable Basis Formula.
722 --if (nvl(fnd_profile.value('FA_ENABLED_DEPRN_BASIS_FORMULA'), 'N') = 'Y') then
723 if (fa_cache_pkg.fa_enabled_deprn_basis_formula)then
724 -- new_raval_amo_basis and Production rate source rule are
725 -- not calculated on Depreciable Basis Formula
726
727 X_new_reval_amo_basis := h_dpr_row.reval_rsv;
728 if (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_PROD)
729 then
730 X_new_raf :=1;
731 X_new_adj_capacity := X_fin_info_ptr.capacity - h_dpr_out.new_ltd_prod;
732 X_new_formula_factor := 1;
733 end if;
734
735 -- Depreciable Basis Formula
736 -- set h_rule_in paremters
737
738 h_rule_in.asset_id := X_fin_info_ptr.asset_id;
739 h_rule_in.group_asset_id := null;
740 h_rule_in.book_type_code := X_fin_info_ptr.book;
741 h_rule_in.asset_type := X_fin_info_ptr.asset_type;
742 h_rule_in.depreciate_flag := null;
743 h_rule_in.method_code := X_fin_info_ptr.method_code;
744 h_rule_in.life_in_months := X_fin_info_ptr.life;
745 h_rule_in.method_id := null;
746 h_rule_in.method_type := h_rate_source_rule;
747 h_rule_in.calc_basis := h_deprn_basis_rule;
748 h_rule_in.adjustment_amount := X_fin_info_ptr.cost
749 - X_fin_info_ptr.old_cost;
750 h_rule_in.transaction_flag := null;
751 h_rule_in.cost := X_fin_info_ptr.cost;
752 h_rule_in.salvage_value := X_new_salvage_value;
753 h_rule_in.recoverable_cost := X_fin_info_ptr.rec_cost;
754 h_rule_in.adjusted_cost := 0;
755 h_rule_in.current_total_rsv := h_current_total_rsv;
756 h_rule_in.current_rsv := h_current_rsv;
757 h_rule_in.current_total_ytd := h_current_ytd;
758 h_rule_in.current_ytd := 0;
759 h_rule_in.hyp_basis := h_dpr_out.new_adj_cost;
760 h_rule_in.hyp_total_rsv := h_dpr_out.new_deprn_rsv;
761 h_rule_in.hyp_rsv := h_dpr_out.new_deprn_rsv
762 - h_dpr_out.new_bonus_deprn_rsv;
763 h_rule_in.hyp_total_ytd := 0;
764 h_rule_in.hyp_ytd := 0;
765 h_rule_in.old_adjusted_cost := X_fin_info_ptr.adj_cost;
766 h_rule_in.old_total_adjusted_cost := X_fin_info_ptr.adj_cost;
767 h_rule_in.old_raf := X_fin_info_ptr.rate_adj_factor;
768 h_rule_in.old_formula_factor := X_fin_info_ptr.formula_factor;
769 h_rule_in.old_reduction_amount := 0;
770
771 h_rule_in.event_type := 'AMORT_ADJ';
772
773 -- Call Depreciable Basis Formula
774 if (p_log_level_rec.statement_level) then
775 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
776 element=>'Before Calling fa_calc_deprn_basis1_pkg.faxcdb',
777 value=> h_rule_in.event_type,
778 p_log_level_rec => p_log_level_rec);
779 end if;
780
781 if (not FA_CALC_DEPRN_BASIS1_PKG.faxcdb(
782 h_rule_in,
783 h_rule_out,
784 X_fin_info_ptr.amortization_start_date
785 ,p_log_level_rec => p_log_level_rec))
786 then
787 FA_SRVR_MSG.ADD_MESSAGE
788 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
789 NAME=>'FA_AMT_CAL_DP_EXP',
790 p_log_level_rec => p_log_level_rec);
791 return false;
792 end if;
793
794 -- set rule_out parameters
795 X_new_adj_cost := h_rule_out.new_adjusted_cost;
796 X_new_raf := h_rule_out.new_raf;
797 X_new_formula_factor := h_rule_out.new_formula_factor;
798
799 else -- Not use Depreciable Basis Formula
800
801
802 if (h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_COST) then
803 X_new_adj_cost := X_fin_info_ptr.rec_cost - h_current_rsv;
804 else -- implies NBV
808 -- end cost/nbv change
805 X_new_adj_cost := X_fin_info_ptr.rec_cost - h_current_total_rsv;
806 end if;
807
809 /* THE SIGN OF THE ADJUSTED COST SHOULD NEVER BE DIFFERENT */
810 /* THAN THE SIGN OF THE RECOVERABLE COST. IF THE ABOVE */
811 /* SUBTRACTION CAUSED THIS, SET THE ADJUSTED COST TO 0. */
812 /* FIX FOR PRODUCTION ASSETS THAT ARE COST ADJUSTED TO LESS*/
813 /* THAN THE CURRENT RESERVE. */
814
815 /* X_new_formula_factor is set for FORMULA-NBV assets.
816 X_new_formula_factor is 1 in all other cases */
817
818 if (p_log_level_rec.statement_level)
819 then
820 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
821 element=>'adj cost',
822 value=> x_new_adj_cost,
823 p_log_level_rec => p_log_level_rec);
824 end if;
825
826 if (sign(X_fin_info_ptr.rec_cost)<>sign(X_new_adj_cost))
827 then
828 X_new_adj_cost := 0;
829 end if;
830
831 if (sign(X_fin_info_ptr.rec_cost)<>0)
832 then
833 h_temp := X_fin_info_ptr.rec_cost - h_dpr_out.new_deprn_rsv;
834 X_new_raf := h_temp / X_fin_info_ptr.rec_cost;
835 if (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FORMULA AND
836 h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_NBV) then
837
838 X_new_formula_factor := h_dpr_out.new_adj_cost /
839 X_fin_info_ptr.rec_cost;
840 else
841 X_new_formula_factor := 1;
842 end if;
843 else
844 -- rec_cost == 0 ... Can't divide by it, so use RAF=1
845 -- (value doesn't really matter in this case)
846 X_new_raf :=1;
847 X_new_formula_factor := 1;
848 end if;
849
850 X_new_reval_amo_basis := h_dpr_row.reval_rsv;
851
852 -- If life-based NBV-based, then RAF = 1
853 -- If Flat-Rate Cost-Based, then RAF = 1, AC = Rec_Cost
854 -- If Flat-Rate NBV-Based, RAF = old RAF (should be 1)
855 -- If Production, then RAF = 1, Adj_Capacity = (Capacity-LTD_Prod)
856 -- Otherwise, RAF = (Rec_Cost - New_Deprn_Rsv) / Rec_Cost (as above)
857
858 if ((h_rate_source_rule = FA_STD_TYPES.FAD_RSR_CALC)
859 OR (h_rate_source_rule=FA_STD_TYPES.FAD_RSR_TABLE))
860 then
861 if (h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_NBV)
862 then
863 X_new_raf :=1;
864 X_new_formula_factor := 1;
865 end if;
866 end if;
867
868 if (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT)
869 then
870 if (h_deprn_basis_rule=FA_STD_TYPES.FAD_DBR_COST)
871 then
872 X_new_raf := 1;
873 X_new_adj_cost := X_fin_info_ptr.rec_cost;
874 X_new_formula_factor := 1;
875 else
876 X_new_raf := X_fin_info_ptr.rate_adj_factor;
877 X_new_formula_factor := 1;
878 end if;
879 elsif (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_PROD)
880 then
881 X_new_raf :=1;
882 X_new_adj_capacity := X_fin_info_ptr.capacity - h_dpr_out.new_ltd_prod;
883 X_new_formula_factor := 1;
884 end if;
885 if (p_log_level_rec.statement_level)
886 then
887 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
888 element=>'adj cost at end of not use deprn bas',
889 value=> x_new_adj_cost,
890 p_log_level_rec => p_log_level_rec);
891 end if;
892
893 END IF; -- End Not Use Depreciable Basis Formula
894
895 -- bonus: assigning bonus rule value back.
896 h_dpr_row.bonus_rule := h_bonus_rule;
897 -- not yet needed.
898 -- h_deprn_row.bonus_deprn_rsv := h_bonus_deprn_rsv;
899 -- h_dpr_row.deprn_rsv is not used.
900 -- h_dpr_row.deprn_rsv := h_deprn_total_rsv;
901 h_current_rsv := h_current_total_rsv;
902
903 -- alternative flat rate depreciation caclulation
904 -- call faxnac: new added function.
905 if (p_log_level_rec.statement_level)
906 then
907 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
908 element=>'bef. faxnac adj cost',
909 value=> x_new_adj_cost,
910 p_log_level_rec => p_log_level_rec);
911 end if;
912
913
914 -- Add for the Depreciable Basis Formula.
915 -- if (nvl(fnd_profile.value('FA_ENABLED_DEPRN_BASIS_FORMULA'), 'N') <> 'Y') then
916 if (not fa_cache_pkg.fa_enabled_deprn_basis_formula)then
917
918 if (not FA_AMORT_PKG.faxnac(X_fin_info_ptr.method_code,
919 X_fin_info_ptr.life,
920 X_fin_info_ptr.rec_cost,
921 null,
922 h_current_rsv,
923 h_current_ytd,
924 X_new_adj_cost
925 ,p_log_level_rec => p_log_level_rec))
926 then
927 FA_SRVR_MSG.ADD_MESSAGE
928 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
929 NAME=>'FA_AMT_CAL_DP_EXP',
930 p_log_level_rec => p_log_level_rec);
931 return false;
932 end if;
933 END IF;
934 if (p_log_level_rec.statement_level)
935 then
936 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
937 element=>'aft.faxnac adj cost',
938 value=> x_new_adj_cost,
939 p_log_level_rec => p_log_level_rec);
940 end if;
941
942 -- End Not Depreciable Basis Formula
943
944 if (p_log_level_rec.statement_level)
945 then
946 d_new_raf := X_new_raf;
947 d_new_adj_cost := X_new_adj_cost;
951 d_rec_cost := X_fin_info_ptr.rec_cost;
948 d_new_reval_amo_basis := X_new_reval_amo_basis;
949 d_current_rsv := h_current_rsv;
950 d_reval_deprn_rsv_adj := X_reval_deprn_rsv_adj;
952 d_new_deprn_rsv := h_dpr_out.new_deprn_rsv;
953 end if;
954 if (X_new_raf < 0 OR X_new_raf > 1)
955 then
956 FA_SRVR_MSG.ADD_MESSAGE
957 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
958 NAME=>'FA_AMT_RAF_OUT_OF_RANGE',
959 p_log_level_rec => p_log_level_rec);
960 return FALSE;
961 end if;
962 -- Added for Dated Adjustment
963 X_fin_info_ptr.adj_amount := 0;
964
965 fa_rx_conc_mesg_pkg.log('x_new_raf A: ' || to_char(x_new_raf));
966
967 if (X_fin_info_ptr.amortization_start_date is not null) then
968 fa_rx_conc_mesg_pkg.log('x_new_raf B: ' || to_char(x_new_raf));
969 if (not((cur_fy = amortize_fy) and (cur_per_num = amortize_per_num))) then
970
971 h_dpr_row.y_begin := amortize_fy;
972 h_dpr_row.p_cl_begin := amortize_per_num;
973 if (cur_per_num = 1) then
974 h_dpr_row.y_end := cur_fy - 1;
975 else
976 h_dpr_row.y_end := cur_fy;
977 end if;
978 if (cur_per_num = 1) then
979 h_dpr_row.p_cl_end := pers_per_yr;
980 else
981 h_dpr_row.p_cl_end := cur_per_num - 1;
982 end if;
983 h_dpr_row.rate_adj_factor := X_new_raf;
984
985 --
986 if (cur_fy = amortize_fy) then
987 amortize_per_ctr := (last_per_ctr + 1) -
988 (cur_per_num - amortize_per_num);
989 else
990 amortize_per_ctr := (last_per_ctr + 1) -
991 (
992 (cur_fy - amortize_fy -1) * pers_per_yr +
993 (pers_per_yr - amortize_per_num + cur_per_num)
994 );
995 end if;--if (cur_fy = amortize_fy)
996 deprn_summary.asset_id := X_fin_info_ptr.asset_id;
997 deprn_summary.book := X_fin_info_ptr.book;
998 deprn_summary.period_ctr := amortize_per_ctr - 1;
999 deprn_summary.dist_id := 0;
1000 deprn_summary.mrc_sob_type_code := X_mrc_sob_type_code;
1001
1002 /**** Commented out for BT Enhancement. YYOON ******
1003 FA_QUERY_BALANCES_PKG.QUERY_BALANCES_INT (
1004 deprn_summary,
1005 'STANDARD',
1006 FALSE,
1007 h_dummy_bool,
1008 'FA_AMORT_PKG.faxraf',
1009 -1,
1010 p_log_level_rec);
1011 ******************************************************/
1012
1013 /**** Enhancement for BT. YYOON - Start
1014 BUG#1148053: Ability to add assets with reserve
1015 and amortize over remaining useful life */
1016
1017 OPEN check_period_of_addition;
1018 FETCH check_period_of_addition INTO check_flag;
1019
1020
1021 if (check_period_of_addition%FOUND) then
1022
1023 CLOSE check_period_of_addition;
1024 -- bonus added.
1025 if x_mrc_sob_type_code = 'R' then
1026 select deprn_reserve, bonus_deprn_reserve, ytd_deprn
1027 into deprn_summary.deprn_rsv, deprn_summary.bonus_deprn_rsv,
1028 deprn_summary.ytd_deprn
1029 from fa_deprn_summary_mrc_v
1030 where asset_id = X_fin_info_ptr.asset_id
1031 and book_type_code = X_fin_info_ptr.book
1032 and deprn_source_code = 'BOOKS';
1033 else
1034 select deprn_reserve, bonus_deprn_reserve, ytd_deprn
1035 into deprn_summary.deprn_rsv, deprn_summary.bonus_deprn_rsv,
1036 deprn_summary.ytd_deprn
1037 from fa_deprn_summary
1038 where asset_id = X_fin_info_ptr.asset_id
1039 and book_type_code = X_fin_info_ptr.book
1040 and deprn_source_code = 'BOOKS';
1041 end if;
1042
1043 else
1044
1045 CLOSE check_period_of_addition;
1046
1047 -- backdate amortization enhancement - begin
1048 h_add_txn_id := 0;
1049 if x_fin_info_ptr.amortization_start_date is not null then
1050 open amort_date_before_add;
1051 fetch amort_date_before_add
1052 into h_add_txn_id;
1053 close amort_date_before_add;
1054
1055 -- when amortization start date is before the addition date
1056 -- call get_reserve to get the actual reserve from the prorate period to before the
1057 -- amortization period
1058 if (h_add_txn_id > 0) then
1059
1060 --
1061 -- Bug3281141:
1062 -- Get reserve from FA_DEPRN_SUMMARY. User RSV - YTD of BOOKS row
1063 -- if this is backdated to the beginning of fy and addition was
1064 -- performed in the same fy.
1065 --
1066 open c_check_fiscal_year (h_add_txn_id);
1067 fetch c_check_fiscal_year into l_same_fy;
1068 if (c_check_fiscal_year%FOUND) then
1069
1070 close c_check_fiscal_year;
1071
1072 if (X_mrc_sob_type_code = 'R') then
1073 open c_get_mc_reserve;
1074 fetch c_get_mc_reserve into deprn_summary.deprn_rsv,
1075 deprn_summary.bonus_deprn_rsv;
1076 close c_get_mc_reserve;
1080 deprn_summary.bonus_deprn_rsv;
1077 else
1078 open c_get_reserve;
1079 fetch c_get_reserve into deprn_summary.deprn_rsv,
1081 close c_get_reserve;
1082 end if;
1083 if (fa_cache_pkg.fa_print_debug) then
1084 fa_debug_pkg.add('FA_AMORT_PKG.faxraf',
1085 'Got reserve using BOOKS row', 'reserve - ytd',
1086 p_log_level_rec => p_log_level_rec);
1087 fa_debug_pkg.add('FA_AMORT_PKG.faxraf',
1088 'deprn_summary.deprn_rsv:deprn_summary.bonus_deprn_rsv',
1089 to_char(deprn_summary.deprn_rsv)||':'||
1090 to_char(deprn_summary.bonus_deprn_rsv),
1091 p_log_level_rec => p_log_level_rec);
1092 end if;
1093 else
1094
1095 close c_check_fiscal_year;
1096
1097 if not (get_reserve(X_fin_info_ptr,h_add_txn_id,amortize_fy,
1098 amortize_per_num, pers_per_yr,
1099 x_mrc_sob_type_code,
1100 h_deprn_rsv,
1101 h_bonus_deprn_rsv,
1102 p_log_level_rec)) then
1103 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf',
1104 p_log_level_rec => p_log_level_rec);
1105 return FALSE;
1106 end if;
1107
1108 deprn_summary.deprn_rsv := h_deprn_rsv;
1109 deprn_summary.bonus_deprn_rsv := h_bonus_deprn_rsv;
1110
1111 if (fa_cache_pkg.fa_print_debug) then
1112 fa_debug_pkg.add('FA_AMORT_PKG.faxraf',
1113 'Got reserve from get_reserve function', ' ',
1114 p_log_level_rec => p_log_level_rec);
1115 fa_debug_pkg.add('FA_AMORT_PKG.faxraf',
1116 'deprn_summary.deprn_rsv:deprn_summary.bonus_deprn_rsv',
1117 to_char(deprn_summary.deprn_rsv)||':'||
1118 to_char(deprn_summary.bonus_deprn_rsv),
1119 p_log_level_rec => p_log_level_rec);
1120 end if;
1121
1122 end if; -- (c_check_fiscal_year%FOUND)
1123 end if;
1124 end if;
1125
1126 if (x_fin_info_ptr.amortization_start_date is null or
1127 h_add_txn_id = 0) then
1128 -- backdate amortization enhacement - end
1129
1130 FA_QUERY_BALANCES_PKG.QUERY_BALANCES_INT (
1131 deprn_summary,
1132 'STANDARD',
1133 FALSE,
1134 h_dummy_bool,
1135 'FA_AMORT_PKG.faxraf',
1136 -1,
1137 p_log_level_rec);
1138
1139 if not (h_dummy_bool) then
1140 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.faxraf',
1141 p_log_level_rec => p_log_level_rec);
1142 return (FALSE);
1143 end if;--if not (h_dummy_bool)
1144 end if;
1145 end if;
1146 /**** Enhancement for BT. YYOON - End */
1147
1148 if x_mrc_sob_type_code = 'R' then
1149 SELECT NVL(SUM(DECODE(ADJUSTMENT_TYPE,
1150 'EXPENSE',
1151 DECODE(DEBIT_CREDIT_FLAG,
1152 'DR', ADJUSTMENT_AMOUNT,
1153 'CR', -1 * ADJUSTMENT_AMOUNT))),0),
1154 -- backdate amortization enhancement - begin
1155 NVL(SUM(DECODE(ADJUSTMENT_TYPE,
1156 'RESERVE',
1157 DECODE(DEBIT_CREDIT_FLAG,
1158 'DR', ADJUSTMENT_AMOUNT,
1159 'CR', -1 * ADJUSTMENT_AMOUNT))),0)
1160 -- backdate amortization enhancement - end
1161
1162 INTO adjustment_amount, h_rsv_amount
1163 FROM FA_ADJUSTMENTS_MRC_V
1164 WHERE asset_id = X_fin_info_ptr.asset_id
1165 AND book_type_code = X_fin_info_ptr.book
1166 AND period_counter_adjusted = amortize_per_ctr;
1167 else
1168 SELECT NVL(SUM(DECODE(ADJUSTMENT_TYPE,
1169 'EXPENSE',
1170 DECODE(DEBIT_CREDIT_FLAG,
1171 'DR', ADJUSTMENT_AMOUNT,
1172 'CR', -1 * ADJUSTMENT_AMOUNT))),0),
1173 -- backdate amortization enhancement - begin
1174 NVL(SUM(DECODE(ADJUSTMENT_TYPE,
1175 'RESERVE',
1176 DECODE(DEBIT_CREDIT_FLAG,
1177 'DR', ADJUSTMENT_AMOUNT,
1178 'CR', -1 * ADJUSTMENT_AMOUNT))),0)
1179 -- backdate amortization enhancement - end
1180
1181 INTO adjustment_amount, h_rsv_amount
1182 FROM FA_ADJUSTMENTS
1183 WHERE asset_id = X_fin_info_ptr.asset_id
1184 AND book_type_code = X_fin_info_ptr.book
1185 AND period_counter_adjusted = amortize_per_ctr;
1186 end if;
1187
1191 if (p_log_level_rec.statement_level) then
1188 temp_deprn_rsv := deprn_summary.deprn_rsv - deprn_summary.bonus_deprn_rsv;
1189
1190
1192 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1193 element=>'deprn_summary.deprn_rsv A',
1194 value=>deprn_summary.deprn_rsv,
1195 p_log_level_rec => p_log_level_rec);
1196 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1197 element=>'adjustment_amount A',
1198 value=>adjustment_amount,
1199 p_log_level_rec => p_log_level_rec);
1200 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1201 element=>'deprn_summary.bonus_deprn_rsv A',
1202 value=>deprn_summary.bonus_deprn_rsv,
1203 p_log_level_rec => p_log_level_rec);
1204 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1205 element=>'h_rsv_amount A',
1206 value=> h_rsv_amount,
1207 p_log_level_rec => p_log_level_rec);
1208 end if;
1209
1210 -- bug 2510999
1211 -- before
1212 -- deprn_summary.deprn_rsv := deprn_summary.deprn_rsv +
1213 -- adjustment_amount -
1214 -- nvl(deprn_summary.bonus_deprn_rsv,0)
1215 -- - h_rsv_amount;
1216 -- after
1217
1218 deprn_summary.deprn_rsv := deprn_summary.deprn_rsv +
1219 adjustment_amount -
1220 h_rsv_amount;
1221
1222
1223 if (p_log_level_rec.statement_level) then
1224 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1225 element=>'deprn_summary.deprn_rsv B',
1226 value=>deprn_summary.deprn_rsv,
1227 p_log_level_rec => p_log_level_rec);
1228 end if;
1229
1230 -- alternative flat rate depreciation calculation
1231 if amortize_per_num=1 then
1232 deprn_summary.ytd_deprn:= adjustment_amount;
1233 else
1234 deprn_summary.ytd_deprn:= deprn_summary.ytd_deprn+adjustment_amount;
1235 end if;
1236
1237 -- Add for the Depreciable Basis Formula.
1238 -- if (nvl(fnd_profile.value('FA_ENABLED_DEPRN_BASIS_FORMULA'), 'N') = 'Y') then
1239
1240 if (fa_cache_pkg.fa_enabled_deprn_basis_formula) then
1241 fa_rx_conc_mesg_pkg.log('x_new_raf D: ' || to_char(x_new_raf));
1242 -- Depreciable Basis Formula
1243 -- set h_rule_in paremters
1244
1245 h_rule_in.asset_id := X_fin_info_ptr.asset_id;
1246 h_rule_in.group_asset_id := null;
1247 h_rule_in.book_type_code := X_fin_info_ptr.book;
1248 h_rule_in.asset_type := X_fin_info_ptr.asset_type;
1249 h_rule_in.depreciate_flag := null;
1250 h_rule_in.method_code := X_fin_info_ptr.method_code;
1251 h_rule_in.life_in_months := X_fin_info_ptr.life;
1252 h_rule_in.method_id := null;
1253 h_rule_in.method_type := h_rate_source_rule;
1254 h_rule_in.calc_basis := h_deprn_basis_rule;
1255 h_rule_in.adjustment_amount := X_fin_info_ptr.cost - X_fin_info_ptr.old_cost;
1256 h_rule_in.transaction_flag := null;
1257 h_rule_in.cost := X_fin_info_ptr.cost;
1258 h_rule_in.salvage_value := X_new_salvage_value;
1259 h_rule_in.recoverable_cost := X_fin_info_ptr.rec_cost;
1260 h_rule_in.adjusted_cost := h_dpr_row.adj_cost;
1261 h_rule_in.current_total_rsv := deprn_summary.deprn_rsv;
1262 h_rule_in.current_rsv := deprn_summary.deprn_rsv
1263 - deprn_summary.bonus_deprn_rsv;
1264 h_rule_in.current_total_ytd := deprn_summary.ytd_deprn;
1265 h_rule_in.current_ytd := 0;
1266 h_rule_in.hyp_basis := h_dpr_out.new_adj_cost;
1267 h_rule_in.hyp_total_rsv := h_dpr_out.new_deprn_rsv;
1268 h_rule_in.hyp_rsv := h_dpr_out.new_deprn_rsv - h_dpr_out.new_bonus_deprn_rsv;
1269 h_rule_in.hyp_total_ytd := 0;
1270 h_rule_in.hyp_ytd := 0;
1271 h_rule_in.old_adjusted_cost := h_dpr_row.adj_cost;
1272 h_rule_in.old_total_adjusted_cost := h_dpr_row.adj_cost;
1273 h_rule_in.old_raf := x_new_raf;
1274 h_rule_in.old_formula_factor := x_new_formula_factor;
1275 h_rule_in.old_reduction_amount := 0;
1276
1277 h_rule_in.event_type := 'AMORT_ADJ2';
1278
1279 -- Call Depreciable Basis Formula
1280
1281 if (p_log_level_rec.statement_level) then
1282 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1283 element=>'Before Calling fa_calc_deprn_basis1_pkg.faxcdb',
1284 value=>h_rule_in.event_type,
1285 p_log_level_rec => p_log_level_rec);
1286 end if;
1287
1288 if (not FA_CALC_DEPRN_BASIS1_PKG.faxcdb (
1289 h_rule_in,
1290 h_rule_out,
1291 X_fin_info_ptr.amortization_start_date
1292 ,p_log_level_rec => p_log_level_rec))
1293 then
1294 FA_SRVR_MSG.ADD_MESSAGE
1295 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
1296 NAME=>'FA_AMT_CAL_DP_EXP',
1297 p_log_level_rec => p_log_level_rec);
1298 return false;
1299 end if;
1300
1301 -- set rule_out parameters
1302 h_dpr_row.adj_cost := h_rule_out.new_adjusted_cost;
1303 X_new_raf := h_rule_out.new_raf;
1304 X_new_formula_factor := h_rule_out.new_formula_factor;
1305
1306 else -- Not Use Depreciable Basis Formula
1307 fa_rx_conc_mesg_pkg.log('x_new_raf E: ' || to_char(x_new_raf));
1308 -- bug 2699656
1309 if (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT)
1310 and (h_deprn_basis_rule=FA_STD_TYPES.FAD_DBR_COST)
1311 then
1312 h_dpr_row.adj_cost := X_fin_info_ptr.rec_cost;
1313 else
1314
1318 if (p_log_level_rec.statement_level) then
1315 h_dpr_row.adj_cost := X_fin_info_ptr.rec_cost - deprn_summary.deprn_rsv;
1316 end if;
1317
1319 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1320 element=>'Before call to faxnac, adjusted_cost',
1321 value=>h_dpr_row.adj_cost,
1322 p_log_level_rec => p_log_level_rec);
1323 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1324 element=>'Before call to faxnac, x_fin_info_ptr.rec_cost',
1325 value=>x_fin_info_ptr.rec_cost,
1326 p_log_level_rec => p_log_level_rec);
1327 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1328 element=>'Before call to faxnac, deprn_summary.deprn_rsv',
1329 value=>deprn_summary.deprn_rsv,
1330 p_log_level_rec => p_log_level_rec);
1331 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1332 element=>'Before call to faxnac, bonus_deprn_rsv',
1333 value=> deprn_summary.bonus_deprn_rsv ,
1334 p_log_level_rec => p_log_level_rec);
1335 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1336 element=>'Before call to faxnac, h_rate_source_rule',
1337 value=> h_rate_source_rule,
1338 p_log_level_rec => p_log_level_rec);
1339 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1340 element=>'Before call to faxnac, h_deprn_basis_rule',
1341 value=> h_deprn_basis_rule,
1342 p_log_level_rec => p_log_level_rec);
1343 end if;
1344
1345
1346 if (not FA_AMORT_PKG.faxnac(X_fin_info_ptr.method_code,
1347 X_fin_info_ptr.life,
1348 X_fin_info_ptr.rec_cost,
1349 null,
1350 deprn_summary.deprn_rsv,
1351 deprn_summary.ytd_deprn,
1352 h_dpr_row.adj_cost
1353 ,p_log_level_rec => p_log_level_rec))
1354 then
1355 FA_SRVR_MSG.ADD_MESSAGE
1356 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
1357 NAME=>'FA_AMT_CAL_DP_EXP',
1358 p_log_level_rec => p_log_level_rec);
1359 return false;
1360 end if;
1361 end if; -- End Not Use Depreciable Basis Formula
1362
1363 --fix for 2197401. error out if new nbv result in
1364 -- opposite sign of new recoverable cost
1365 if (sign(X_fin_info_ptr.rec_cost)<>sign(h_dpr_row.adj_cost))
1366 then
1367 FA_SRVR_MSG.ADD_MESSAGE
1368 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
1369 NAME=>'FA_WRONG_REC_COST',
1370 p_log_level_rec => p_log_level_rec);
1371 return FALSE;
1372 end if;
1373
1374 h_dpr_row.deprn_rsv := deprn_summary.deprn_rsv;
1375 h_dpr_row.adj_capacity := X_new_adj_capacity;
1376 -- Bonus: called when amortization_start_date is not null i.e. backdated
1377 -- adjustment.
1378 -- keep the bonus rule value in h_bonus_rule due to amort..._start_date.
1379 h_bonus_rule := h_dpr_row.bonus_rule;
1380
1381 -- h_dpr_row.bonus_rule := '';
1382
1383 if (p_log_level_rec.statement_level) then
1384 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1385 element=>'Before call to faxcde, amort_start_date case:bonus_rule',
1386 value=>h_dpr_row.bonus_rule,
1387 p_log_level_rec => p_log_level_rec);
1388 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf ',
1389 element=>'Before call to faxcde, adjusted_cost',
1390 value=>h_dpr_row.adj_cost,
1391 p_log_level_rec => p_log_level_rec);
1392 end if;
1393
1394
1395 h_current_total_rsv := h_current_rsv;
1396 h_current_rsv := h_current_rsv - nvl(h_dpr_row.bonus_deprn_rsv,0);
1397
1398 h_dpr_row.mrc_sob_type_code := X_mrc_sob_type_code;
1399
1400 if (not FA_CDE_PKG.faxcde(h_dpr_row,
1401 h_dpr_arr,
1402 h_dpr_out,
1403 running_mode
1404 ,p_log_level_rec => p_log_level_rec))
1405 then
1406 FA_SRVR_MSG.ADD_MESSAGE
1407 (CALLING_FN => 'FA_AMORT_PKG.faxraf',
1408 NAME=>'FA_AMT_CAL_DP_EXP',
1409 p_log_level_rec => p_log_level_rec);
1410 return FALSE;
1411 end if;
1412
1413 -- Override
1414 if (p_log_level_rec.statement_level) then
1415 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.faxraf',
1416 element=>'deprn_override_flag2',
1417 value=>h_dpr_out.deprn_override_flag,
1418 p_log_level_rec => p_log_level_rec);
1419 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1420 element=>'h_dpr_out.new_bonus_deprn_rsv after faxcde',
1421 value=>h_dpr_out.new_bonus_deprn_rsv,
1422 p_log_level_rec => p_log_level_rec);
1423 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1424 element=>'h_dpr_out.new_bonus_deprn_rsv after faxcde',
1425 value=>h_dpr_out.new_bonus_deprn_rsv,
1426 p_log_level_rec => p_log_level_rec);
1427 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1428 element=>'h_dpr_out.new_deprn_rsv after faxcde',
1429 value=>h_dpr_out.new_deprn_rsv,
1430 p_log_level_rec => p_log_level_rec);
1431 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1432 element=>'h_dpr_out.new_adj_cost after faxcde',
1436 end if;
1433 value=>h_dpr_out.new_adj_cost,
1434 p_log_level_rec => p_log_level_rec);
1435
1437 X_fin_info_ptr.deprn_override_flag:= h_dpr_out.deprn_override_flag;
1438
1439 -- End of Manual Override
1440 -- Added for Depreciable Basis Formula.
1441 -- if (nvl(fnd_profile.value('FA_ENABLED_DEPRN_BASIS_FORMULA'), 'N') = 'Y') then
1442
1443
1444 if (fa_cache_pkg.fa_enabled_deprn_basis_formula) then
1445
1446 -- Depreciable Basis Formula
1447 -- set h_rule_in paremters
1448
1449 h_rule_in.asset_id := X_fin_info_ptr.asset_id;
1450 h_rule_in.group_asset_id := null;
1451 h_rule_in.book_type_code := X_fin_info_ptr.book;
1452 h_rule_in.asset_type := X_fin_info_ptr.asset_type;
1453 h_rule_in.depreciate_flag := null;
1454 h_rule_in.method_code := X_fin_info_ptr.method_code;
1455 h_rule_in.life_in_months := X_fin_info_ptr.life;
1456 h_rule_in.method_id := null;
1457 h_rule_in.method_type := h_rate_source_rule;
1458 h_rule_in.calc_basis := h_deprn_basis_rule;
1459 h_rule_in.adjustment_amount := X_fin_info_ptr.cost
1460 - X_fin_info_ptr.old_cost;
1461 h_rule_in.transaction_flag := null;
1462 h_rule_in.cost := X_fin_info_ptr.cost;
1463 h_rule_in.salvage_value := X_new_salvage_value;
1464 h_rule_in.recoverable_cost := X_fin_info_ptr.rec_cost;
1465 h_rule_in.adjusted_cost := h_dpr_out.new_adj_cost;
1466 h_rule_in.current_total_rsv := 0;
1467 h_rule_in.current_rsv := temp_deprn_rsv;
1468 h_rule_in.current_total_ytd := 0;
1469 h_rule_in.current_ytd := 0;
1470 h_rule_in.hyp_basis := h_dpr_out.new_adj_cost;
1471 h_rule_in.hyp_total_rsv := h_dpr_out.new_deprn_rsv;
1472 h_rule_in.hyp_rsv := h_dpr_out.new_deprn_rsv
1473 - h_dpr_out.new_bonus_deprn_rsv;
1474 h_rule_in.hyp_total_ytd := 0;
1475 h_rule_in.hyp_ytd := 0;
1476 h_rule_in.old_adjusted_cost := x_new_adj_cost;
1477 h_rule_in.old_total_adjusted_cost := x_new_adj_cost;
1478 h_rule_in.old_raf := x_new_raf;
1479 h_rule_in.old_formula_factor := x_new_formula_factor;
1480 h_rule_in.old_reduction_amount := 0;
1481
1482 h_rule_in.event_type := 'AMORT_ADJ3';
1483
1484 -- Call Depreciable Basis Formula
1485
1486 if (p_log_level_rec.statement_level) then
1487 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1488 element=>'Before Calling fa_calc_deprn_basis1_pkg.faxcdb',
1489 value=>h_rule_in.event_type,
1490 p_log_level_rec => p_log_level_rec);
1491 end if;
1492
1493 if (not FA_CALC_DEPRN_BASIS1_PKG.faxcdb (
1494 h_rule_in,
1495 h_rule_out,
1496 X_fin_info_ptr.amortization_start_date
1497 ,p_log_level_rec => p_log_level_rec))
1498 then
1499 FA_SRVR_MSG.ADD_MESSAGE
1500 (CALLING_FN=>'FA_AMORT_PKG.faxraf',
1501 NAME=>'FA_AMT_CAL_DP_EXP',
1502 p_log_level_rec => p_log_level_rec);
1503 return false;
1504 end if;
1505
1506 -- set rule_out parameters
1507 X_new_adj_cost := h_rule_out.new_adjusted_cost;
1508 X_new_raf := h_rule_out.new_raf;
1509 X_new_formula_factor := h_rule_out.new_formula_factor;
1510
1511 else -- Do Not Use Depreciable Basis Formula
1512
1513 if (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FORMULA AND
1514 h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_NBV) then
1515
1516 -- bug 2111490
1517 -- temp_deprn_rsv is not containing bonus_deprn_rsv
1518 X_new_adj_cost := X_fin_info_ptr.rec_cost -
1519 temp_deprn_rsv -
1520 nvl(deprn_summary.bonus_deprn_rsv,0);
1521 else
1522 X_new_adj_cost := h_dpr_out.new_adj_cost;
1523 end if;
1524
1525 if (p_log_level_rec.statement_level) then
1526 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1527 element=>'Before calc adj_amt, h_dpr_out.new_adj_cost',
1528 value=>h_dpr_out.new_adj_cost,
1529 p_log_level_rec => p_log_level_rec);
1530 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1531 element=>'Before calc adj_amt, x_new_adj_cost',
1532 value=>x_new_adj_cost,
1533 p_log_level_rec => p_log_level_rec);
1534 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1535 element=>'Before calc adj_amt, deprn_summary.bonus_deprn_rsv',
1536 value=>deprn_summary.bonus_deprn_rsv,
1537 p_log_level_rec => p_log_level_rec);
1538 end if;
1539
1540 end if; -- End Not Use Depreciable Basis Formala
1541
1542 -- bonus, added h_dpr_row.bonus_deprn_rsv field to calculation.
1543 -- bug 2510999
1544 -- original
1545 X_fin_info_ptr.adj_amount :=
1546 (h_dpr_out.new_deprn_rsv -
1547 deprn_summary.deprn_rsv) -
1548 (h_current_rsv - deprn_summary.deprn_rsv) -
1549 nvl(h_dpr_row.bonus_deprn_rsv,0);
1550
1551 -- a test, now excluded.
1552 -- X_fin_info_ptr.adj_amount :=
1553 -- ((h_dpr_out.new_deprn_rsv + nvl(deprn_summary.bonus_deprn_rsv,0)) -
1554 -- deprn_summary.deprn_rsv) -
1555 -- (h_current_rsv - deprn_summary.deprn_rsv) -
1556 -- nvl(h_dpr_row.bonus_deprn_rsv,0);
1557
1558 if (p_log_level_rec.statement_level) then
1559 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1560 element=>'x_fin_info_ptr.adj_amount ',
1561 value=>x_fin_info_ptr.adj_amount,
1562 p_log_level_rec => p_log_level_rec);
1566 p_log_level_rec => p_log_level_rec);
1563 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1564 element=>'h_dpr_out.new_deprn_rsv ',
1565 value=>h_dpr_out.new_deprn_rsv,
1567 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1568 element=>'deprn_summary.deprn_rsv',
1569 value=>deprn_summary.deprn_rsv,
1570 p_log_level_rec => p_log_level_rec);
1571 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1572 element=>'h_current_rsv',
1573 value=>h_current_rsv,
1574 p_log_level_rec => p_log_level_rec);
1575 end if;
1576 -- bonus
1577 -- h_dpr_row.bonus_deprn_rsv arrives with value added for bonus_deprn_rsv.
1578 -- the new_bonus_deprn_rsv amount is not vanilla therefore the *2.
1579 -- if it turns out to be wrong calculation, it should be investigated
1580 -- why bonus_deprn_rsv doesn't arrive as expected.
1581 if (h_dpr_row.bonus_rule is not null) then
1582
1583 X_bonus_deprn_exp :=
1584 (h_dpr_out.new_bonus_deprn_rsv -
1585 deprn_summary.bonus_deprn_rsv) -
1586 ( (h_dpr_row.bonus_deprn_rsv - deprn_summary.bonus_deprn_rsv) * 2);
1587
1588 if (p_log_level_rec.statement_level) then
1589 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1590 element=>'x_bonus_deprn_exp ',
1591 value=>x_bonus_deprn_exp,
1592 p_log_level_rec => p_log_level_rec);
1593 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1594 element=>'h_dpr_out.new_bonus_deprn_rsv ',
1595 value=>h_dpr_out.new_bonus_deprn_rsv,
1596 p_log_level_rec => p_log_level_rec);
1597 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1598 element=>'h_dpr_row.bonus_deprn_rsv',
1599 value=>h_dpr_row.bonus_deprn_rsv,
1600 p_log_level_rec => p_log_level_rec);
1601 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxraf',
1602 element=>'deprn_summary.bonus_deprn_rsv',
1603 value=>deprn_summary.bonus_deprn_rsv,
1604 p_log_level_rec => p_log_level_rec);
1605 end if;
1606 end if;
1607
1608 -- bonus: assigning bonus rule value back.
1609 h_dpr_row.bonus_rule := h_bonus_rule;
1610
1611 h_current_rsv := h_current_total_rsv;
1612
1613 end if;--if (not((cur_fy = amortize_fy) and (cur_per_num = amortize_per_num)))
1614 end if;--if (X_fin_info_ptr.amortization_start_date is not null)
1615
1616
1617 -- bug 3572689
1618 if (h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT AND
1619 h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_NBV) then
1620
1621 x_new_raf := 1;
1622 x_new_formula_factor := 1;
1623 end if;
1624
1625 return TRUE;
1626 exception
1627 when others then
1628 FA_SRVR_MSG.ADD_SQL_ERROR
1629 (CALLING_FN => 'FA_AMORT_PKG.faxraf'
1630 ,p_log_level_rec => p_log_level_rec);
1631 return FALSE;
1632 end faxraf;
1633 ---------------------------------------------------------------------------
1634 FUNCTION faxama (X_fin_info_ptr in out nocopy FA_STD_TYPES.fin_info_struct,
1635 X_new_raf in out nocopy number,
1636 X_new_adj_cost in out nocopy number,
1637 X_new_adj_capacity in out nocopy number,
1638 X_new_reval_amo_basis in out nocopy number,
1639 X_new_salvage_value in out nocopy number,
1640 X_new_formula_factor in out nocopy number,
1641 X_ccid in number,
1642 X_ins_adjust_flag in boolean,
1643 X_mrc_sob_type_code in varchar2,
1644 X_deprn_exp out nocopy number,
1645 X_bonus_deprn_exp out nocopy number,
1646 X_last_update_date date default sysdate,
1647 X_last_updated_by number default -1,
1648 X_last_update_login number default -1,
1649 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1650 return boolean is
1651 h_reval_deprn_rsv_adj number :=0;
1652 h_afn_zero number:=0;
1653 h_err_string varchar2(30);
1654 begin <<faxama>>
1655
1656 X_deprn_exp := 0; -- initialize
1657 X_bonus_deprn_exp := 0;
1658
1659 if (X_fin_info_ptr.asset_type='CIP')
1660 then
1661 FA_SRVR_MSG.ADD_MESSAGE
1662 (CALLING_FN => 'FA_AMORT_PKG.faxama',
1663 NAME=>'FA_AMT_CIP_NOT_ALLOWED',
1664 p_log_level_rec => p_log_level_rec);
1665 return FALSE;
1666 end if;
1667
1668 if (p_log_level_rec.statement_level)
1669 then
1670 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxama',
1671 element=>'First asset_type',
1672 value=>X_fin_info_ptr.asset_type,
1673 p_log_level_rec => p_log_level_rec);
1674 end if;
1675
1676 X_fin_info_ptr.used_by_revaluation:= 0;
1677
1678 if (not faxraf(X_fin_info_ptr,
1679 X_new_raf,
1680 X_new_adj_cost,
1681 X_new_adj_capacity,
1682 X_new_reval_amo_basis,
1683 X_new_salvage_value,
1684 h_reval_deprn_rsv_adj,
1685 X_new_formula_factor,
1686 X_bonus_deprn_exp,
1687 X_mrc_sob_type_code
1688 ,p_log_level_rec => p_log_level_rec))
1689 then
1690 FA_SRVR_MSG.ADD_MESSAGE
1691 (CALLING_FN => 'FA_AMORT_PKG.faxama',
1692 p_log_level_rec => p_log_level_rec);
1693 return FALSE;
1694 end if;
1695
1699 if (p_log_level_rec.statement_level)
1696 -- save deprn_exp to pass back to calling program
1697 x_deprn_exp := X_fin_info_ptr.adj_amount;
1698
1700 then
1701 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxama',
1702 element=>'Before faxiat-Cost',
1703 value=>X_fin_info_ptr.cost,
1704 p_log_level_rec => p_log_level_rec);
1705 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxama',
1706 element=>'Before faxiat-Old Cost',
1707 value=>X_fin_info_ptr.old_cost,
1708 p_log_level_rec => p_log_level_rec);
1709 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxama',
1710 element=>'x_new_adj Cost',
1711 value=> x_new_adj_cost,
1712 p_log_level_rec => p_log_level_rec);
1713 end if;
1714 -- syoung: SET_DEBUG_FLAG shouldn't be set randomly when using transaction
1715 -- engine.
1716 --FA_DEBUG_PKG.SET_DEBUG_FLAG(debug_flag=>'YES');
1717
1718 -- BUG# 2248362 - changing this logic as it was firing
1719 -- even when ins_adj was false
1720 if (X_ins_adjust_flag and
1721 ((X_fin_info_ptr.adj_amount <> 0) or
1722 (X_fin_info_ptr.cost <> X_fin_info_ptr.old_cost)))
1723 then
1724 h_afn_zero :=0;
1725 h_err_string := 'FA_AMT_FAXIAT_CALL';
1726 -- Bonus: BONUS EXPENSE row is created in fa_adjustments for
1727 -- backdated amortized adjustments. The only known case
1728 -- for amortized adjustments.
1729
1730 if (p_log_level_rec.statement_level)
1731 then
1732 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxama',
1733 element=>'Before faxiat- deprn_exp',
1734 value=>X_fin_info_ptr.adj_amount,
1735 p_log_level_rec => p_log_level_rec);
1736 FA_DEBUG_PKG.ADD (fname=>'FA_AMORT_PKG.faxama',
1737 element=>'Before faxiat-bonus_deprn_exp',
1738 value=>X_bonus_deprn_exp,
1739 p_log_level_rec => p_log_level_rec);
1740 end if;
1741 if (not faxiat(X_fin_info_ptr,
1742 X_fin_info_ptr.adj_amount,
1743 X_bonus_deprn_exp, -- bonus deprn exp.
1744 h_afn_zero,
1745 X_ccid,
1746 X_last_update_date,
1747 X_last_updated_by,
1748 X_last_update_login,
1749 X_mrc_sob_type_code
1750 ,p_log_level_rec => p_log_level_rec))
1751 then
1752 FA_SRVR_MSG.ADD_MESSAGE
1753 (CALLING_FN => 'FA_AMORT_PKG.faxama',
1754 NAME=>h_err_string,
1755 p_log_level_rec => p_log_level_rec);
1756 return FALSE;
1757 end if;
1758 end if; -- cost = old cost
1759 return TRUE;
1760 exception
1761 when others then
1762 FA_SRVR_MSG.ADD_SQL_ERROR
1763 (CALLING_FN => 'FA_AMORT_PKG.faxama'
1764 ,p_log_level_rec => p_log_level_rec);
1765
1766 return FALSE;
1767 end faxama;
1768
1769 ---------------------------------------------------------------------------
1770
1771 -- backdate amortization enhancement - begin
1772 -- this function will get books row of addition transaction
1773 -- and call faxcde to calculate what the actual reserve is from the
1774 -- prorate period upto right before the amortization period
1775 FUNCTION get_reserve(X_fin_info_ptr in out nocopy fa_std_types.fin_info_struct,
1776 x_add_txn_id in number,
1777 x_amortize_fy in integer,
1778 x_amortize_per_num in integer,
1779 x_pers_per_yr in integer,
1780 x_mrc_sob_type_code in varchar2,
1781 x_deprn_rsv out nocopy number,
1782 x_bonus_deprn_rsv out nocopy number,
1783 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1784 return boolean is
1785
1786 bk_rec fa_books%rowtype;
1787 l_fin_info FA_STD_TYPES.fin_info_struct;
1788 l_dpr_row FA_STD_TYPES.dpr_struct;
1789 l_dpr_arr FA_STD_TYPES.dpr_arr_type;
1790 l_dpr_out FA_STD_TYPES.dpr_out_struct;
1791 dummy_var varchar2(15);
1792 dummy_num number;
1793 running_mode number;
1794
1795 begin
1796
1797 -- Override for what-if adjustment
1798 if X_fin_info_ptr.running_mode = fa_std_types.FA_DPR_PROJECT then
1799 running_mode:= fa_std_types.FA_DPR_PROJECT;
1800 else
1801 running_mode:= fa_std_types.FA_DPR_NORMAL;
1802 end if;
1803 -- End of Manual Override
1804
1805 l_fin_info := X_fin_info_ptr;
1806
1807 if x_mrc_sob_type_code = 'R' then
1808 select bk.BOOK_TYPE_CODE ,
1809 bk.ASSET_ID ,
1810 bk.DATE_PLACED_IN_SERVICE ,
1811 bk.DATE_EFFECTIVE ,
1812 bk.DEPRN_START_DATE ,
1813 bk.DEPRN_METHOD_CODE ,
1814 bk.LIFE_IN_MONTHS ,
1815 bk.RATE_ADJUSTMENT_FACTOR ,
1816 bk.ADJUSTED_COST ,
1817 bk.COST ,
1818 bk.ORIGINAL_COST ,
1819 bk.SALVAGE_VALUE ,
1820 bk.PRORATE_CONVENTION_CODE ,
1821 bk.PRORATE_DATE ,
1822 bk.COST_CHANGE_FLAG ,
1823 bk.ADJUSTMENT_REQUIRED_STATUS ,
1827 bk.LAST_UPDATE_DATE ,
1824 bk.CAPITALIZE_FLAG ,
1825 bk.RETIREMENT_PENDING_FLAG ,
1826 bk.DEPRECIATE_FLAG ,
1828 bk.LAST_UPDATED_BY ,
1829 bk.DATE_INEFFECTIVE ,
1830 bk.TRANSACTION_HEADER_ID_IN ,
1831 bk.TRANSACTION_HEADER_ID_OUT ,
1832 bk.ITC_AMOUNT_ID ,
1833 bk.ITC_AMOUNT ,
1834 bk.RETIREMENT_ID ,
1835 bk.TAX_REQUEST_ID ,
1836 bk.ITC_BASIS ,
1837 bk.BASIC_RATE ,
1838 bk.ADJUSTED_RATE ,
1839 bk.BONUS_RULE ,
1840 bk.CEILING_NAME ,
1841 bk.RECOVERABLE_COST ,
1842 bk.LAST_UPDATE_LOGIN ,
1843 bk.ADJUSTED_CAPACITY ,
1844 bk.FULLY_RSVD_REVALS_COUNTER ,
1845 bk.IDLED_FLAG ,
1846 bk.PERIOD_COUNTER_CAPITALIZED ,
1847 bk.PERIOD_COUNTER_FULLY_RESERVED,
1848 bk.PERIOD_COUNTER_FULLY_RETIRED ,
1849 bk.PRODUCTION_CAPACITY ,
1850 bk.REVAL_AMORTIZATION_BASIS ,
1851 bk.REVAL_CEILING ,
1852 bk.UNIT_OF_MEASURE ,
1853 bk.UNREVALUED_COST ,
1854 bk.ANNUAL_DEPRN_ROUNDING_FLAG ,
1855 bk.PERCENT_SALVAGE_VALUE ,
1856 bk.ALLOWED_DEPRN_LIMIT ,
1857 bk.ALLOWED_DEPRN_LIMIT_AMOUNT ,
1858 bk.PERIOD_COUNTER_LIFE_COMPLETE ,
1859 bk.ADJUSTED_RECOVERABLE_COST ,
1860 bk.ANNUAL_ROUNDING_FLAG ,
1861 bk.GLOBAL_ATTRIBUTE1 ,
1862 bk.GLOBAL_ATTRIBUTE2 ,
1863 bk.GLOBAL_ATTRIBUTE3 ,
1864 bk.GLOBAL_ATTRIBUTE4 ,
1865 bk.GLOBAL_ATTRIBUTE5 ,
1866 bk.GLOBAL_ATTRIBUTE6 ,
1867 bk.GLOBAL_ATTRIBUTE7 ,
1868 bk.GLOBAL_ATTRIBUTE8 ,
1869 bk.GLOBAL_ATTRIBUTE9 ,
1870 bk.GLOBAL_ATTRIBUTE10 ,
1871 bk.GLOBAL_ATTRIBUTE11 ,
1872 bk.GLOBAL_ATTRIBUTE12 ,
1873 bk.GLOBAL_ATTRIBUTE13 ,
1874 bk.GLOBAL_ATTRIBUTE14 ,
1875 bk.GLOBAL_ATTRIBUTE15 ,
1876 bk.GLOBAL_ATTRIBUTE16 ,
1877 bk.GLOBAL_ATTRIBUTE17 ,
1878 bk.GLOBAL_ATTRIBUTE18 ,
1879 bk.GLOBAL_ATTRIBUTE19 ,
1880 bk.GLOBAL_ATTRIBUTE20 ,
1881 bk.GLOBAL_ATTRIBUTE_CATEGORY ,
1882 bk.EOFY_ADJ_COST ,
1883 bk.EOFY_FORMULA_FACTOR ,
1884 bk.SHORT_FISCAL_YEAR_FLAG ,
1885 bk.CONVERSION_DATE ,
1886 bk.ORIGINAL_DEPRN_START_DATE ,
1887 bk.REMAINING_LIFE1 ,
1888 bk.REMAINING_LIFE2 ,
1889 bk.OLD_ADJUSTED_COST ,
1890 bk.FORMULA_FACTOR ,
1891 bk.GROUP_ASSET_ID
1892 into bk_rec.BOOK_TYPE_CODE ,
1893 bk_rec.ASSET_ID ,
1894 bk_rec.DATE_PLACED_IN_SERVICE ,
1895 bk_rec.DATE_EFFECTIVE ,
1896 bk_rec.DEPRN_START_DATE ,
1897 bk_rec.DEPRN_METHOD_CODE ,
1898 bk_rec.LIFE_IN_MONTHS ,
1899 bk_rec.RATE_ADJUSTMENT_FACTOR ,
1900 bk_rec.ADJUSTED_COST ,
1901 bk_rec.COST ,
1902 bk_rec.ORIGINAL_COST ,
1903 bk_rec.SALVAGE_VALUE ,
1904 bk_rec.PRORATE_CONVENTION_CODE ,
1905 bk_rec.PRORATE_DATE ,
1906 bk_rec.COST_CHANGE_FLAG ,
1907 bk_rec.ADJUSTMENT_REQUIRED_STATUS ,
1908 bk_rec.CAPITALIZE_FLAG ,
1909 bk_rec.RETIREMENT_PENDING_FLAG ,
1910 bk_rec.DEPRECIATE_FLAG ,
1911 bk_rec.LAST_UPDATE_DATE ,
1912 bk_rec.LAST_UPDATED_BY ,
1913 bk_rec.DATE_INEFFECTIVE ,
1914 bk_rec.TRANSACTION_HEADER_ID_IN ,
1915 bk_rec.TRANSACTION_HEADER_ID_OUT ,
1916 bk_rec.ITC_AMOUNT_ID ,
1917 bk_rec.ITC_AMOUNT ,
1918 bk_rec.RETIREMENT_ID ,
1919 bk_rec.TAX_REQUEST_ID ,
1920 bk_rec.ITC_BASIS ,
1921 bk_rec.BASIC_RATE ,
1922 bk_rec.ADJUSTED_RATE ,
1923 bk_rec.BONUS_RULE ,
1924 bk_rec.CEILING_NAME ,
1925 bk_rec.RECOVERABLE_COST ,
1926 bk_rec.LAST_UPDATE_LOGIN ,
1927 bk_rec.ADJUSTED_CAPACITY ,
1931 bk_rec.PERIOD_COUNTER_FULLY_RESERVED,
1928 bk_rec.FULLY_RSVD_REVALS_COUNTER ,
1929 bk_rec.IDLED_FLAG ,
1930 bk_rec.PERIOD_COUNTER_CAPITALIZED ,
1932 bk_rec.PERIOD_COUNTER_FULLY_RETIRED ,
1933 bk_rec.PRODUCTION_CAPACITY ,
1934 bk_rec.REVAL_AMORTIZATION_BASIS ,
1935 bk_rec.REVAL_CEILING ,
1936 bk_rec.UNIT_OF_MEASURE ,
1937 bk_rec.UNREVALUED_COST ,
1938 bk_rec.ANNUAL_DEPRN_ROUNDING_FLAG ,
1939 bk_rec.PERCENT_SALVAGE_VALUE ,
1940 bk_rec.ALLOWED_DEPRN_LIMIT ,
1941 bk_rec.ALLOWED_DEPRN_LIMIT_AMOUNT ,
1942 bk_rec.PERIOD_COUNTER_LIFE_COMPLETE ,
1943 bk_rec.ADJUSTED_RECOVERABLE_COST ,
1944 bk_rec.ANNUAL_ROUNDING_FLAG ,
1945 bk_rec.GLOBAL_ATTRIBUTE1 ,
1946 bk_rec.GLOBAL_ATTRIBUTE2 ,
1947 bk_rec.GLOBAL_ATTRIBUTE3 ,
1948 bk_rec.GLOBAL_ATTRIBUTE4 ,
1949 bk_rec.GLOBAL_ATTRIBUTE5 ,
1950 bk_rec.GLOBAL_ATTRIBUTE6 ,
1951 bk_rec.GLOBAL_ATTRIBUTE7 ,
1952 bk_rec.GLOBAL_ATTRIBUTE8 ,
1953 bk_rec.GLOBAL_ATTRIBUTE9 ,
1954 bk_rec.GLOBAL_ATTRIBUTE10 ,
1955 bk_rec.GLOBAL_ATTRIBUTE11 ,
1956 bk_rec.GLOBAL_ATTRIBUTE12 ,
1957 bk_rec.GLOBAL_ATTRIBUTE13 ,
1958 bk_rec.GLOBAL_ATTRIBUTE14 ,
1959 bk_rec.GLOBAL_ATTRIBUTE15 ,
1960 bk_rec.GLOBAL_ATTRIBUTE16 ,
1961 bk_rec.GLOBAL_ATTRIBUTE17 ,
1962 bk_rec.GLOBAL_ATTRIBUTE18 ,
1963 bk_rec.GLOBAL_ATTRIBUTE19 ,
1964 bk_rec.GLOBAL_ATTRIBUTE20 ,
1965 bk_rec.GLOBAL_ATTRIBUTE_CATEGORY ,
1966 bk_rec.EOFY_ADJ_COST ,
1967 bk_rec.EOFY_FORMULA_FACTOR ,
1968 bk_rec.SHORT_FISCAL_YEAR_FLAG ,
1969 bk_rec.CONVERSION_DATE ,
1970 bk_rec.ORIGINAL_DEPRN_START_DATE ,
1971 bk_rec.REMAINING_LIFE1 ,
1972 bk_rec.REMAINING_LIFE2 ,
1973 bk_rec.OLD_ADJUSTED_COST ,
1974 bk_rec.FORMULA_FACTOR ,
1975 bk_rec.GROUP_ASSET_ID
1976 from fa_books_mrc_v bk
1977 where bk.book_type_code = X_fin_info_ptr.book
1978 and bk.asset_id = X_fin_info_ptr.asset_id
1979 and bk.transaction_header_id_in = x_add_txn_id;
1980 else
1981 select bk.*
1982 into bk_rec
1983 from fa_books bk
1984 where bk.book_type_code = X_fin_info_ptr.book
1985 and bk.asset_id = X_fin_info_ptr.asset_id
1986 and bk.transaction_header_id_in = x_add_txn_id;
1987 end if;
1988
1989 l_fin_info.adj_cost := bk_rec.adjusted_cost;
1990 l_fin_info.rec_cost := bk_rec.recoverable_cost;
1991 l_fin_info.reval_amo_basis := bk_rec.reval_amortization_basis;
1992 l_fin_info.adj_rate := bk_rec.adjusted_rate;
1993 l_fin_info.capacity := bk_rec.production_capacity;
1994 l_fin_info.adj_capacity := bk_rec.adjusted_capacity;
1995 l_fin_info.adj_rec_cost := bk_rec.adjusted_recoverable_cost;
1996 l_fin_info.salvage_value := bk_rec.salvage_value;
1997 l_fin_info.method_code := bk_rec.deprn_method_code;
1998 l_fin_info.life := bk_rec.life_in_months;
1999 l_fin_info.ceiling_name := bk_rec.ceiling_name;
2000 l_fin_info.bonus_rule := bk_rec.bonus_rule;
2001 l_fin_info.deprn_rounding_flag := bk_rec.annual_deprn_rounding_flag;
2002 l_fin_info.rate_adj_factor := bk_rec.rate_adjustment_factor;
2003 l_fin_info.prorate_date := bk_rec.prorate_date;
2004 l_fin_info.deprn_start_date := bk_rec.deprn_start_date;
2005 l_fin_info.date_placed_in_svc := bk_rec.date_placed_in_service;
2006
2007 if not (FA_EXP_PKG.faxbds(l_fin_info, l_dpr_row, dummy_var,dummy_num,FALSE,X_mrc_sob_type_code, p_log_level_rec)) then
2008 fa_srvr_msg.add_message (calling_fn => 'FA_AMORT_PKG.get_reserve',
2009 p_log_level_rec => p_log_level_rec);
2010 return FALSE;
2011 end if;
2012 if (x_amortize_per_num = 1) then
2013 l_dpr_row.y_end := x_amortize_fy - 1;
2014 l_dpr_row.p_cl_end := x_pers_per_yr;
2015 else
2016 l_dpr_row.y_end := x_amortize_fy;
2017 l_dpr_row.p_cl_end := x_amortize_per_num - 1;
2018 end if;
2019
2020 l_dpr_row.bonus_rule := '';
2021 l_dpr_row.reval_rsv := 0;
2022 l_dpr_row.prior_fy_exp := 0;
2023 l_dpr_row.ytd_deprn := 0;
2024 l_dpr_row.mrc_sob_type_code := x_mrc_sob_type_code;
2025
2029 running_mode
2026 if (not FA_CDE_PKG.faxcde(l_dpr_row,
2027 l_dpr_arr,
2028 l_dpr_out,
2030 ,p_log_level_rec => p_log_level_rec)) then
2031 -- FA_STD_TYPES.FA_DPR_NORMAL)) then
2032 FA_SRVR_MSG.ADD_MESSAGE
2033 (CALLING_FN => 'FA_AMORT_PKG.get_reserve',
2034 NAME=>'FA_AMT_CAL_DP_EXP',
2035 p_log_level_rec => p_log_level_rec);
2036
2037 return FALSE;
2038 end if;
2039
2040 X_fin_info_ptr.deprn_override_flag:= l_dpr_out.deprn_override_flag;
2041 if (p_log_level_rec.statement_level) then
2042 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.get_reserve ',
2043 element=>'l_dpr_out.new_deprn_rsv',
2044 value=>l_dpr_out.new_deprn_rsv,
2045 p_log_level_rec => p_log_level_rec);
2046 FA_DEBUG_PKG.ADD(fname=>'FA_AMORT_PKG.get_reserve ',
2047 element=>'l_dpr_out.new_bonus_deprn_rsv',
2048 value=>l_dpr_out.new_bonus_deprn_rsv,
2049 p_log_level_rec => p_log_level_rec);
2050 end if;
2051 x_deprn_rsv := l_dpr_out.new_deprn_rsv;
2052 x_bonus_deprn_rsv := l_dpr_out.new_bonus_deprn_rsv;
2053 return TRUE;
2054
2055 exception
2056 when others then
2057 FA_SRVR_MSG.ADD_SQL_ERROR
2058 (CALLING_FN => 'FA_AMORT_PKG.get_reserve'
2059 ,p_log_level_rec => p_log_level_rec);
2060 return FALSE;
2061
2062 end get_reserve;
2063 -- backdate amortization enhancement - end
2064
2065
2066 ---------------------------------------------------------------------------
2067
2068 -- New function: faxnac
2069 -- Alternative flat rate depreciation calculation.
2073 -- method, adjustment base amount will be the recoverable cost.
2070 -- If deprn_basis_formula = 'STRICT_FLAT', use the new adjustment method.
2071 -- When using a NBV based flat rate method, adjustment base amount will be
2072 -- the NBV of the beginning of the year, and when using a Cost based flat rate
2074
2075 FUNCTION faxnac (X_method_code in varchar2,
2076 X_life in number,
2077 X_rec_cost in number,
2078 X_prior_fy_exp in number,
2079 X_deprn_rsv in number,
2080 X_ytd_deprn in number,
2081 X_adj_cost in out nocopy number,
2082 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
2083 return boolean is
2084 h_deprn_basis_formula varchar2(30);
2085 h_rate_source_rule varchar2(10);
2086 h_deprn_basis_rule varchar2(4);
2087 h_dummy_bool boolean;
2088 h_dummy_int integer;
2089 begin
2090
2091 if X_adj_cost is null then return false;
2092 end if;
2093
2094 h_deprn_basis_formula := fa_cache_pkg.fazccmt_record.deprn_basis_formula;
2095
2096 if h_deprn_basis_formula is null then
2097 return true;
2098 end if;
2099
2100 -- following cache call is redundant as cache shoudl already be loaded - BMR (double check)
2101 -- if h_deprn_basis_formula = fa_std_types.FAD_DBF_FLAT then
2102 if h_deprn_basis_formula = 'STRICT_FLAT' then
2103 if ( not fa_cache_pkg.fazccmt(x_method_code,
2104 x_life
2105 ,p_log_level_rec => p_log_level_rec)) then
2106 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac',
2107 p_log_level_rec => p_log_level_rec);
2108 return false;
2109 end if;
2110
2111 h_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
2112 h_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
2113
2114 if h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT and h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_COST then
2115 if x_rec_cost is null then
2116 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac',
2117 p_log_level_rec => p_log_level_rec);
2118 return false;
2119 end if;
2120
2121 x_adj_cost := x_rec_cost;
2122
2123 elsif h_rate_source_rule = FA_STD_TYPES.FAD_RSR_FLAT and h_deprn_basis_rule = FA_STD_TYPES.FAD_DBR_NBV then
2124
2125 if x_rec_cost is null or
2126 not ( (x_prior_fy_exp is not null) or
2127 (x_deprn_rsv is not null and x_ytd_deprn is not null)) then
2128 fa_srvr_msg.add_message(calling_fn => 'FA_AMORT_PKG.faxnac',
2129 p_log_level_rec => p_log_level_rec);
2130 return false;
2131 end if;
2132
2133 if x_prior_fy_exp is null then
2134 x_adj_cost := x_rec_cost - x_deprn_rsv + x_ytd_deprn;
2135 else
2136 x_adj_cost := x_rec_cost - x_prior_fy_exp;
2137 end if;
2138 end if;
2139 end if;
2140
2141 return true;
2142 end faxnac;
2143
2144 END FA_AMORT_PKG;