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