DBA Data[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;