[Home] [Help]
PACKAGE BODY: APPS.FA_EXP_PKG
Source
1 PACKAGE BODY FA_EXP_PKG as
2 /* $Header: FAEXADJB.pls 120.9 2005/07/25 10:05:43 yyoon ship $ */
3
4
5 Function faxbds
6 (
7 X_fin_info_ptr in out nocopy fa_std_types.fin_info_struct
8 ,X_dpr_ptr out nocopy fa_std_types.dpr_struct
9 ,X_dist_book out nocopy varchar2
10 ,X_deprn_rsv out nocopy number
11 ,X_amortized_flag boolean
12 ,X_mrc_sob_type_code varchar2
13 ,p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
14 return boolean is
15 rate_source_rule varchar2(40);
16 rate_calendar varchar2(48);
17 fy_name varchar2(45);
18 calendar_type varchar2(48);
19 period_num integer;
20 start_jdate integer;
21 prorate_jdate integer;
22 deprn_start_jdate integer;
23 jdate_in_svc integer;
24 use_jdate integer;
25 prorate_fy integer;
26 deprn_period integer;
27 deprn_fy integer;
28 pers_per_yr integer;
29 last_per_ctr integer;
30 cur_fy integer;
31 cur_per_num integer;
32 deprn_summary fa_std_types.fa_deprn_row_struct;
33 h_dummy_int integer;
34 h_dummy_bool boolean;
35 h_dummy_varch varchar2(16);
36 begin <<FAXBDS>>
37
38 if not fa_cache_pkg.fazccmt
39 (X_fin_info_ptr.method_code,
40 X_fin_info_ptr.life, p_log_level_rec) then
41 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds',
42 p_log_level_rec => p_log_level_rec);
43 return (FALSE);
44 end if;
45
46 rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
47
48
49 X_dpr_ptr.adj_cost := X_fin_info_ptr.adj_cost;
50 X_dpr_ptr.rec_cost := X_fin_info_ptr.rec_cost;
51 X_dpr_ptr.reval_amo_basis := X_fin_info_ptr.reval_amo_basis;
52 X_dpr_ptr.adj_rate := X_fin_info_ptr.adj_rate;
53 X_dpr_ptr.capacity := X_fin_info_ptr.capacity;
54 X_dpr_ptr.adj_capacity := X_fin_info_ptr.adj_capacity;
55 X_dpr_ptr.adj_rec_cost := X_fin_info_ptr.adj_rec_cost;
56 X_dpr_ptr.salvage_value := X_fin_info_ptr.salvage_value;
57
58 if (p_log_level_rec.statement_level) then
59 fa_debug_pkg.add('faxbds','faamrt1 2nd user exit new adj cost',
60 X_fin_info_ptr.adj_rec_cost, p_log_level_rec);
61 fa_debug_pkg.add('faxbds','faamrt1 3rd user exit salvage_value',
62 X_fin_info_ptr.salvage_value, p_log_level_rec);
63 end if;
64
65 X_dpr_ptr.deprn_rounding_flag := X_fin_info_ptr.deprn_rounding_flag;
66
67 X_dpr_ptr.ceil_name := X_fin_info_ptr.ceiling_name;
68 X_dpr_ptr.bonus_rule := X_fin_info_ptr.bonus_rule;
69 X_dpr_ptr.life := X_fin_info_ptr.life;
70 X_dpr_ptr.method_code := X_fin_info_ptr.method_code;
71 X_dpr_ptr.asset_num := X_fin_info_ptr.asset_number;
72
73 if (X_amortized_flag) then
74 X_dpr_ptr.rate_adj_factor := 1;
75 else
76 X_dpr_ptr.rate_adj_factor := X_fin_info_ptr.rate_adj_factor;
77 end if;
78
79 -- Bug 424489. When invoice lines are transferred between assets
80 -- immediately after running deprn then the destination asset has incorrect
81 -- DEPRN EXPENSE in fa_adjustments table. It happens when this is the
82 -- first adjustment in the period. It is suspected to be a caching problem
83 -- -hence we have an extra select statement as below here. This problem
84 -- is similar to bug 415719.
85 --
86 -- this is fixes with new caching mechanisms
87 -- reinstating the cache - BMR
88 --
89 -- note there is no need to call the cache again here as it would already be loaded
90 --
91
92 last_per_ctr := fa_cache_pkg.fazcbc_record.last_period_counter;
93 cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
94 cur_per_num := mod((last_per_ctr+1),cur_fy);
95 X_dpr_ptr.calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
96 calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
97 rate_calendar := fa_cache_pkg.fazcbc_record.prorate_calendar;
98 X_dist_book := fa_cache_pkg.fazcbc_record.distribution_source_book;
99
100 prorate_jdate := to_number(to_char(X_fin_info_ptr.prorate_date, 'J'));
101 deprn_start_jdate := to_number(to_char(X_fin_info_ptr.deprn_start_date, 'J'));
102 jdate_in_svc := to_number(to_char(X_fin_info_ptr.date_placed_in_svc, 'J'));
103
104 fy_name := fa_cache_pkg.fazcbc_record.fiscal_year_name;
105
106 if not fa_cache_pkg.fazccp (
107 rate_calendar, fy_name, prorate_jdate,
108 period_num, prorate_fy, start_jdate, p_log_level_rec) then
109 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds',
110 p_log_level_rec => p_log_level_rec);
111 return (FALSE);
112 end if;
113
114 if (rate_source_rule = fa_std_types.FAD_RSR_CALC) or
115 (rate_source_rule = fa_std_types.FAD_RSR_FORMULA) then
116 use_jdate := prorate_jdate;
117 else
118 use_jdate := deprn_start_jdate;
119 end if;
120
121 if not fa_cache_pkg.fazccp (
122 calendar_type, fy_name, use_jdate,
123 deprn_period, deprn_fy, start_jdate, p_log_level_rec) then
124 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds',
125 p_log_level_rec => p_log_level_rec);
126 return (FALSE);
127 end if;
128
129 if not fa_cache_pkg.fazcct (calendar_type, p_log_level_rec) then
130 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds',
131 p_log_level_rec => p_log_level_rec);
132 return (FALSE);
133 end if;
134 pers_per_yr := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
135
136 X_dpr_ptr.prorate_jdate := prorate_jdate;
137 X_dpr_ptr.deprn_start_jdate := deprn_start_jdate;
138 X_dpr_ptr.jdate_retired := 0;
139 X_dpr_ptr.ret_prorate_jdate := 0;
140 X_dpr_ptr.jdate_in_service := jdate_in_svc;
141 X_fin_info_ptr.jdate_in_svc := jdate_in_svc;
142 X_dpr_ptr.asset_id := X_fin_info_ptr.asset_id;
143 X_dpr_ptr.book := X_fin_info_ptr.book;
144 deprn_summary.asset_id := X_fin_info_ptr.asset_id;
145 deprn_summary.book := X_fin_info_ptr.book;
146 deprn_summary.period_ctr := 0;
147 deprn_summary.dist_id := 0;
148 deprn_summary.mrc_sob_type_code := X_mrc_sob_type_code;
149
150 FA_QUERY_BALANCES_PKG.QUERY_BALANCES_INT (
151 deprn_summary,
152 'STANDARD',
153 FALSE,
154 h_dummy_bool,
155 'fa_exp_pkg.faxbds',
156 -1,
157 p_log_level_rec);
158
159 if not (h_dummy_bool) then
160 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds',
161 p_log_level_rec => p_log_level_rec);
162 return (FALSE);
163 end if;
164
165 if (p_log_level_rec.statement_level) then
166 fa_debug_pkg.add('faxbds','after call to fauqadd: prior_fy_exp',
167 deprn_summary.prior_fy_exp, p_log_level_rec);
168 end if;
169
170 -- Send in 0 value in faxcde for deprn_rsv
171 X_deprn_rsv := deprn_summary.deprn_rsv;
172 X_dpr_ptr.reval_rsv := deprn_summary.reval_rsv;
173 -- bonus: bonus_deprn_rsv exists in dpr_struct.
174 X_dpr_ptr.bonus_deprn_rsv := deprn_summary.bonus_deprn_rsv;
175
176 --
177 -- Copy prior_fy_exp from deprn_row_struct to deprn_struct.
178 --
179 X_dpr_ptr.prior_fy_exp := deprn_summary.prior_fy_exp;
180 X_dpr_ptr.ytd_deprn := deprn_summary.ytd_deprn;
181 -- bonus: necessary? both variables below exist in struct.
182 X_dpr_ptr.bonus_ytd_deprn := deprn_summary.bonus_ytd_deprn;
183
184 --
185 -- Pass zero ltd_prod into faxcde(), just like
186 -- we do for deprn_rsv
187 --
188 X_dpr_ptr.ltd_prod := 0;
189
190 X_dpr_ptr.y_begin := prorate_fy;
191 if (cur_per_num = 1) then
192 X_dpr_ptr.y_end := cur_fy - 1;
193 else
194 X_dpr_ptr.y_end := cur_fy;
195 end if;
196
197 X_dpr_ptr.p_cl_begin := 1;
198 if (cur_per_num = 1) then
199 X_dpr_ptr.p_cl_end := pers_per_yr;
200 else
201 X_dpr_ptr.p_cl_end := cur_per_num - 1;
202 end if;
203
204 X_dpr_ptr.deprn_rsv := 0;
205 X_dpr_ptr.rsv_known_flag := TRUE;
206
207 -- Adding the following for short tax years and formula based
208
209 X_dpr_ptr.short_fiscal_year_flag := X_fin_info_ptr.short_fiscal_year_flag;
210 X_dpr_ptr.conversion_date := X_fin_info_ptr.conversion_date;
211 X_dpr_ptr.prorate_date := X_fin_info_ptr.prorate_date;
212 X_dpr_ptr.orig_deprn_start_date := X_fin_info_ptr.orig_deprn_start_date;
213 X_dpr_ptr.formula_factor := NVL(X_fin_info_ptr.formula_factor,1); -- bug2692127
214
215 return(TRUE);
216
217 exception
218 when others then
219 fa_srvr_msg.add_sql_error (calling_fn => 'fa_exp_pkg.faxbds'
220 ,p_log_level_rec => p_log_level_rec);
221 return (FALSE);
222 end FAXBDS;
223
224
225
226 Function faxexp
227 (
228 X_fin_info_ptr in out nocopy fa_std_types.fin_info_struct
229 ,X_new_adj_cost out nocopy number
230 ,X_ccid integer
231 ,X_sysdate_val date
232 ,X_last_updated_by number
233 ,X_last_update_login number
234 ,X_ins_adj_flag boolean
235 ,X_mrc_sob_type_code varchar2
236 ,X_deprn_exp out nocopy number
237 ,X_bonus_deprn_exp out nocopy number
238 ,X_new_formula_factor in out nocopy number
239 ,p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
240 return boolean is
241 dist_book varchar2(16);
242 cur_deprn_rsv number;
243 cur_bonus_deprn_rsv number;
244 h_deprn_exp number;
245 h_bonus_deprn_exp number;
246 rate_source_rule varchar2(40);
247 deprn_basis_rule varchar(40);
248 afn_zero number;
249 dpr fa_std_types.dpr_struct;
250 dpr_out fa_std_types.dpr_out_struct;
251 dpr_asset_num varchar2(16);
252 dpr_calendar_type varchar2(16);
253 dpr_ceil_name varchar2(31);
254 h_dummy_dpr_arr fa_std_types.dpr_arr_type;
255 h_dummy_int integer;
256 h_dummy_bool boolean;
257
258 -- NOTE: Fixed to bug#1583869 - hsugimot
259 -- This solve the problem that you do expensed adjustment
260 -- when the depreciation flag of the asset is off.
261
262 h_new_deprn_rsv number;
263 h_new_prior_fy_exp number;
264 h_new_adj_cost number;
265
266 -- Fixed to bug#1762518 - hsugimot
267 cur_fy integer;
268 cur_per_num integer;
269
270 -- Added for Depreciable Basis Formula
271 h_rule_in FA_STD_TYPES.fa_deprn_rule_in_struct;
272 h_rule_out FA_STD_TYPES.fa_deprn_rule_out_struct;
273
274 -- override for what if
275 running_mode number;
276
277 begin <<FAXEXP>>
278
279 -- bonus: function is also called from FAAMRT1B.pls, FATXRSVB.pls
280 --
281 if not faxbds(X_fin_info_ptr, dpr, dist_book,cur_deprn_rsv, FALSE, X_mrc_sob_type_code, p_log_level_rec) then
282 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp',
283 p_log_level_rec => p_log_level_rec);
284 return (FALSE);
285 end if;
286
287 --
288 -- Don't calculate expense for CIP/EXPENSED assets
289 --
290
291 X_fin_info_ptr.deprn_override_flag:= fa_std_types.FA_NO_OVERRIDE;
292
293 /*+++++++++++++++++++++++++++++++++++++++++++++++
294 + Bug 1952858 +
295 + Need to check if the asset cost = 0 and the +
296 + depreciate_flag = 'N'. This way we could +
297 + recalculate the expense after the user +
298 + adjusts the cost to 0. +
299 +++++++++++++++++++++++++++++++++++++++++++++++*/
300
301 if (X_fin_info_ptr.asset_type = 'CAPITALIZED') then
302 if (X_fin_info_ptr.dep_flag) OR
303 (X_fin_info_ptr.Cost = 0 and NOT(X_fin_info_ptr.dep_flag)) then
304 --
305 -- Call faxcde to get the recalculated expense
306 --
307 -- bonus: here is a solution for bringing cur_bonus_deprn_rsv
308 -- it may get necessary to add a new parameter to faxbds call,
309 -- and handle bonus deprn rsv simular as deprn rsv.
310 cur_bonus_deprn_rsv := dpr.bonus_deprn_rsv;
311 dpr.bonus_deprn_rsv := 0;
312
313 -- Manual Override
314 dpr.used_by_adjustment := TRUE;
315 dpr.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
316 if X_fin_info_ptr.running_mode = fa_std_types.FA_DPR_PROJECT then
317 running_mode:= fa_std_types.FA_DPR_PROJECT;
318 else
319 running_mode:= fa_std_types.FA_DPR_NORMAL;
320 end if;
321 dpr.mrc_sob_type_code := x_mrc_sob_type_code;
322 -- End of Manual Override
323
324 if not fa_cde_pkg.faxcde (dpr, h_dummy_dpr_arr, dpr_out,
325 running_mode, 0, p_log_level_rec) then
326 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp',
327 p_log_level_rec => p_log_level_rec);
328 return (FALSE);
329 end if;
330
331 --
332 -- Insert the difference into the FA_ADJUSTMENTS table
333 --
334 h_deprn_exp := dpr_out.new_deprn_rsv - cur_deprn_rsv;
335 -- bonus: new_bonus_deprn_rsv added to dpr_out_struct.
336 -- Investigate dpr.bonus_deprn_rsv if value is correct.==> YES!
337 -- Now new_bonus_deprn_rsv needs to be correctly calculated in faxcde.
338 if nvl(X_fin_info_ptr.bonus_rule, 'NONE') <> 'NONE' then
339 h_bonus_deprn_exp := dpr_out.new_bonus_deprn_rsv - cur_bonus_deprn_rsv;
340 else
341 h_bonus_deprn_exp := 0;
342 end if;
343
344 --Manual Override
345 if (p_log_level_rec.statement_level)
346 then
347 fa_debug_pkg.add (
348 fname => 'faxexp',
349 element=>'deprn_override_flag',
350 value=>dpr_out.deprn_override_flag,
351 p_log_level_rec => p_log_level_rec);
352 end if;
353 -- pass override_flag to faxiat
354 X_fin_info_ptr.deprn_override_flag:= dpr_out.deprn_override_flag;
355
356 -- End of manual override
357
358 else
359 h_deprn_exp := 0;
360 h_bonus_deprn_exp := 0;
361
362 end if;
363 end if;
364
365 /*
366 NOTE
367
368 This is incorrect; the annualized adjustment for this should not
369 be zero. The correct way to calculate this would be to
370 recalculate deprn under the old conditions, and determine what the
371 annualized deprn amount is for the current fiscal year. Then
372 compare that with the recalculation of deprn under the new
373 conditions. The difference is the annualized adjustment amount.
374 In order to calculate this, we would need a snapshot of the asset
375 before the transaction. Since this requires a significant change
376 to the fin_info_struct structure, we will defer the fix until a
377 later release. The impact of this is that if the user executes an
378 expensed change, and then a prior-period transfer or retirement
379 whose effective date is before the current date, the depreciation
380 expense transferred will not include any amount relevant to the
381 expensed change. -Dave
382 */
383 afn_zero := 0;
384
385 if X_ins_adj_flag then
386 if not fa_amort_pkg.faxiat (
387 X_fin_ptr => X_fin_info_ptr
388 ,X_deprn_exp => h_deprn_exp
389 ,X_bonus_deprn_exp => h_bonus_deprn_exp
390 ,X_ann_adj_amt => afn_zero
391 ,X_ccid => X_ccid
392 ,X_last_update_date => X_sysdate_val
393 ,X_last_updated_by => X_last_updated_by
394 ,X_last_update_login => X_last_update_login
395 ,X_mrc_sob_type_code => X_mrc_sob_type_code
396 ,p_log_level_rec => p_log_level_rec) then
397 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp',
398 p_log_level_rec => p_log_level_rec);
399 return (FALSE);
400 end if;
401 end if;
402
403 if not fa_cache_pkg.fazccmt (
404 X_fin_info_ptr.method_code,
405 X_fin_info_ptr.life,
406 p_log_level_rec) then
407
408 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp',
409 p_log_level_rec => p_log_level_rec);
410 return (FALSE);
411 end if;
412
413 rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
414 deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
415
416
417 -- Added for the Depreciable Basis Formula.
418 cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
419 cur_per_num := mod(X_fin_info_ptr.period_ctr,cur_fy);
420
421 if (fa_cache_pkg.fa_enabled_deprn_basis_formula) then
422 -- Depreciable Basis Formula
423 -- set h_rule_in paremters
424
425 h_rule_in.asset_id := X_fin_info_ptr.asset_id;
426 h_rule_in.group_asset_id := null;
427 h_rule_in.book_type_code := X_fin_info_ptr.book;
428 h_rule_in.asset_type := X_fin_info_ptr.asset_type;
429
430 if X_fin_info_ptr.dep_flag then
431 h_rule_in.depreciate_flag := 'YES';
432 else
433 h_rule_in.depreciate_flag := 'NO';
434 end if;
435
436 h_rule_in.method_code := x_fin_info_ptr.method_code;
437 h_rule_in.life_in_months := x_fin_info_ptr.life;
438 h_rule_in.method_id := null;
439 h_rule_in.method_type := rate_source_rule;
440 h_rule_in.calc_basis := deprn_basis_rule;
441 h_rule_in.adjustment_amount := 0;
442 h_rule_in.transaction_flag := null;
443 h_rule_in.cost := x_fin_info_ptr.cost;
444 h_rule_in.salvage_value := X_fin_info_ptr.salvage_value;
445 h_rule_in.recoverable_cost := dpr.rec_cost;
446 h_rule_in.adjusted_cost := X_fin_info_ptr.adj_cost;
447 h_rule_in.current_total_rsv := cur_deprn_rsv;
448 h_rule_in.current_rsv := 0;
449 h_rule_in.current_total_ytd := dpr.ytd_deprn;
450 h_rule_in.current_ytd := 0;
451 h_rule_in.hyp_basis := dpr_out.new_adj_cost;
452 h_rule_in.hyp_total_rsv :=dpr_out.new_deprn_rsv;
453 h_rule_in.hyp_rsv :=dpr_out.new_deprn_rsv
454 - dpr_out.new_bonus_deprn_rsv;
455 if (cur_per_num = 1) then
456 h_rule_in.hyp_total_ytd :=0;
457 else
458 -- change implemented due to problem found when STRICT_FLAT adjustments
459 -- new
460 h_rule_in.hyp_total_ytd :=
461 dpr_out.new_deprn_rsv - (dpr_out.new_prior_fy_exp - dpr.prior_fy_exp);
462
463 -- old
464 -- h_rule_in.hyp_total_ytd :=
465 -- dpr_out.new_deprn_rsv - dpr_out.new_prior_fy_exp;
466 end if;
467
468 h_rule_in.hyp_ytd :=0;
469 h_rule_in.old_adjusted_cost := 0;
470 h_rule_in.old_total_adjusted_cost := 0;
471 h_rule_in.old_raf := X_fin_info_ptr.rate_adj_factor;
472 h_rule_in.old_formula_factor := X_fin_info_ptr.formula_factor;
473 h_rule_in.old_reduction_amount := 0;
474
475 h_rule_in.event_type := 'EXP_ADJ';
476
477 -- Call Depreciable Basis Formula
478
479 If (not FA_CALC_DEPRN_BASIS1_PKG.faxcdb (
480 h_rule_in,
481 h_rule_out,
482 null,
483 p_log_level_rec))
484 then
485 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp',
486 p_log_level_rec => p_log_level_rec);
487 return false;
488 end if;
489
490 -- set rule_out parameters
491 X_new_adj_cost := h_rule_out.new_adjusted_cost;
492 X_new_formula_factor := h_rule_out.new_formula_factor;
493
494 else -- Not Use Depreciable Basis Formula
495
496 -- NOTE: Fixed to bug#1583869 - hsugimot
497 -- This solve the problem that you do expensed adjustment
498 -- when the depreciation flag of the asset is off.
499
500 /*+++++++++++++++++++++++++++++++++++++++++++++++
501 + Bug 1952858 +
502 + Need to check if the asset cost = 0 and the +
503 + depreciate_flag = 'N'. This way we could +
504 + recalculate the expense after the user +
505 + adjusts the cost to 0. +
506 +++++++++++++++++++++++++++++++++++++++++++++++*/
507
508 if (X_fin_info_ptr.asset_type = 'CAPITALIZED') then
509 if (X_fin_info_ptr.dep_flag) OR
510 (X_fin_info_ptr.Adj_cost = 0 and NOT(X_fin_info_ptr.dep_flag)) then
511
512 -- Fixed to bug#1762518 - hsugimot
513
514 -- cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
515 -- cur_per_num := mod(X_fin_info_ptr.period_ctr,cur_fy);
516
517 if (p_log_level_rec.statement_level) then
518 fa_debug_pkg.add('faxexp','X_fin_info_ptr.period_ctr',
519 X_fin_info_ptr.period_ctr, p_log_level_rec);
520 fa_debug_pkg.add('faxexp','cur_per_num',
521 cur_per_num, p_log_level_rec);
522 fa_debug_pkg.add('faxexp','dpr_out.new_deprn_rsv',
523 dpr_out.new_deprn_rsv, p_log_level_rec);
524 fa_debug_pkg.add('faxexp','dpr_out.new_prior_fy_exp',
525 dpr_out.new_prior_fy_exp, p_log_level_rec);
526 fa_debug_pkg.add('faxexp','dpr_out.new_adj_cost',
527 dpr_out.new_adj_cost, p_log_level_rec);
528 fa_debug_pkg.add('faxexp','X_fin_info_ptr.period_ctr',
529 X_fin_info_ptr.period_ctr, p_log_level_rec);
530 end if;
531
532 h_new_deprn_rsv := dpr_out.new_deprn_rsv;
533
534 -- h_new_prior_fy_exp := dpr_out.new_prior_fy_exp;
535 if (cur_per_num = 1) then
536 h_new_prior_fy_exp := h_new_deprn_rsv;
537 else
538 -- if/else/endif below implemented due to STRICT_FLAT adjustments
539 -- new_prior_fy_exp is returning value from faxcde that is
540 -- a summary of new calculated (correct) value and old backdated
541 -- value stored in fa_deprn_summary.
542 if (deprn_basis_rule = fa_std_types.FAD_DBR_NBV) then
543 h_new_prior_fy_exp := dpr_out.new_prior_fy_exp -
544 dpr.prior_fy_exp;
545 if (p_log_level_rec.statement_level) then
546 fa_debug_pkg.add('faxexp','dpr.prior_fy_exp',
547 dpr.prior_fy_exp, p_log_level_rec);
548 end if;
549 else
550 h_new_prior_fy_exp := dpr_out.new_prior_fy_exp;
551 end if;
552 -- original line.
553 -- ******h_new_prior_fy_exp := dpr_out.new_prior_fy_exp;
554 --
555 end if;
556
557 h_new_adj_cost := dpr_out.new_adj_cost;
558 else
559
560 if (p_log_level_rec.statement_level) then
561 fa_debug_pkg.add('faxexp','cur_deprn_rsv',
562 cur_deprn_rsv, p_log_level_rec);
563 fa_debug_pkg.add('faxexp','dpr.ytd_deprn',
564 dpr.ytd_deprn, p_log_level_rec);
565 fa_debug_pkg.add('faxexp','dpr.rec_cost',
566 dpr.rec_cost, p_log_level_rec);
567 fa_debug_pkg.add('faxexp','deprn_basis_rule',
568 deprn_basis_rule, p_log_level_rec);
569 end if;
570
571 h_new_deprn_rsv := cur_deprn_rsv;
572 h_new_prior_fy_exp := cur_deprn_rsv - dpr.ytd_deprn;
573
574 if (deprn_basis_rule = fa_std_types.FAD_DBR_NBV) then
575 h_new_adj_cost := dpr.rec_cost - h_new_prior_fy_exp;
576
577 else -- COST basis
578 h_new_adj_cost := dpr.rec_cost;
579 end if;
580
581 end if;
582 end if;
583
584
585 if (p_log_level_rec.statement_level) then
586 fa_debug_pkg.add('faxexp','h_new_deprn_rsv',
587 h_new_deprn_rsv, p_log_level_rec);
588 fa_debug_pkg.add('faxexp','h_new_prior_fy_exp',
589 h_new_prior_fy_exp, p_log_level_rec);
590 fa_debug_pkg.add('faxexp','h_new_adj_cost',
591 h_new_adj_cost, p_log_level_rec);
592 end if;
593
594
595 -- Calculate new adjusted cost differently for Diminishing-Value assets
596 -- with cost changes; use the new Net Book Value, in this case, as
597 -- opposed to the Net Book Value at the beginning of the current fiscal
598 -- year
599
600 -- X_new_formula_factor is set for FORMULA-NBV assets.
601 -- X_new_formula_factor is 1 in all other cases
602
603 if (deprn_basis_rule = fa_std_types.FAD_DBR_NBV and
604 X_fin_info_ptr.asset_type = 'CAPITALIZED') then
605 if (rate_source_rule <> fa_std_types.FAD_RSR_FORMULA) then
606 -- NOTE: Fixed to bug#1583869 - hsugimot
607 -- X_new_adj_cost := dpr.rec_cost - dpr_out.new_deprn_rsv;
608 X_new_adj_cost := dpr.rec_cost - h_new_deprn_rsv;
609 X_new_formula_factor := 1;
610 else
611 -- NOTE: Fixed to bug#1583869 - hsugimot
612 -- X_new_formula_factor := dpr_out.new_adj_cost /
613 -- X_fin_info_ptr.rec_cost;
614 X_new_formula_factor := h_new_adj_cost /
615 X_fin_info_ptr.rec_cost;
616 X_new_adj_cost := X_fin_info_ptr.adj_cost;
617 end if;
618 else
619 X_new_adj_cost := X_fin_info_ptr.adj_cost;
620 X_new_formula_factor := 1;
621 end if;
622
623
624 -- alternative calculation of flat depreciation adjustment.
625 -- added for 11.5.2
626
627 -- added CAPITALIZED condition for bugfix 2508385
628 if (X_fin_info_ptr.asset_type = 'CAPITALIZED') then
629
630 -- NOTE: Fixed to bug#1583869
631 -- Change parameter from dpr_out.new_prior_fy_exp to h_new_prior_fy_exp
632 if (not fa_amort_pkg.faxnac(X_fin_info_ptr.method_code,
633 X_fin_info_ptr.life,
634 dpr.rec_cost,
635 h_new_prior_fy_exp,
636 null, null,
637 X_new_adj_cost,
638 p_log_level_rec)) then
639 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp',
640 p_log_level_rec => p_log_level_rec);
641 return (FALSE);
642 end if;
643 end if;
644 end if; -- End NOT USE Depreciable Basis Formula
645
646 X_deprn_exp := h_deprn_exp;
647 -- bonus: Needed for whatif.
648 X_bonus_deprn_exp := h_bonus_deprn_exp;
649
650 return(TRUE);
651
652 exception
653 when others then
654 fa_srvr_msg.add_sql_error (calling_fn => 'fa_exp_pkg.faxexp'
655 ,p_log_level_rec => p_log_level_rec);
656 return (FALSE);
657 end FAXEXP;
658
659
660 END FA_EXP_PKG;