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