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