DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_EXP_PVT

Source


1 PACKAGE BODY FA_EXP_PVT as
2 /* $Header: FAVEXAJB.pls 120.12.12010000.1 2008/07/28 13:18:24 appldev ship $ */
3 
4 g_print_debug boolean := fa_cache_pkg.fa_print_debug;
5 
6 Function faxbds
7      (
8      p_asset_hdr_rec      IN     FA_API_TYPES.asset_hdr_rec_type,
9      px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
10      p_asset_deprn_rec    IN     FA_API_TYPES.asset_deprn_rec_type,
11      p_asset_desc_rec     IN     FA_API_TYPES.asset_desc_rec_type,
12      X_dpr_ptr               out NOCOPY fa_std_types.dpr_struct,
13      X_deprn_rsv             out NOCOPY number,
14      X_bonus_deprn_rsv       out NOCOPY number,
15      p_amortized_flag                   boolean,
16      p_extended_flag                    boolean default FALSE, -- Japan Tax Phase3
17      p_mrc_sob_type_code  IN     VARCHAR2,
18      p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type default null) return boolean is
19 
20    l_rate_source_rule   varchar2(40);
21    l_prorate_calendar      varchar2(48);
22    l_fy_name            varchar2(45);
23    l_deprn_calendar     varchar2(48);
24    l_period_num         integer;
25    l_start_jdate        integer;
26    l_prorate_jdate      integer;
27    l_deprn_start_jdate  integer;
28    l_jdate_in_svc       integer;
29    l_use_jdate          integer;
30    l_prorate_fy         integer;
31    l_deprn_period       integer;
32    l_deprn_fy           integer;
33    l_pers_per_yr        integer;
34    l_last_per_ctr       integer;
35    l_cur_fy             integer;
36    l_cur_per_num        integer;
37    l_start_per_num      integer := 1 ; -- Japan Tax Phase3
38    l_dummy_per_num      integer;
39    l_dummy_int          integer;
40    l_dummy_bool         boolean;
41    l_dummy_varch        varchar2(16);
42 
43 begin <<FAXBDS>>
44 
45    if (not FA_CACHE_PKG.fazccmt
46              (px_asset_fin_rec_new.deprn_method_code,
47               px_asset_fin_rec_new.life_in_months
48               ,p_log_level_rec => p_log_level_rec)) then
49       FA_SRVR_MSG.ADD_MESSAGE(CALLING_FN => 'FA_AMORT_PKG.faxraf'
50             ,p_log_level_rec => p_log_level_rec);
51       return FALSE;
52    end if;
53 
54    l_rate_source_rule      := fa_cache_pkg.fazccmt_record.rate_source_rule;
55 
56    X_dpr_ptr.adj_cost        := px_asset_fin_rec_new.adjusted_cost;
57    X_dpr_ptr.rec_cost        := px_asset_fin_rec_new.recoverable_cost;
58    X_dpr_ptr.reval_amo_basis := px_asset_fin_rec_new.reval_amortization_basis;
59    X_dpr_ptr.adj_rate        := px_asset_fin_rec_new.adjusted_rate;
60    X_dpr_ptr.capacity        := px_asset_fin_rec_new.production_capacity;
61    X_dpr_ptr.adj_capacity    := px_asset_fin_rec_new.adjusted_capacity;
62    X_dpr_ptr.adj_rec_cost    := px_asset_fin_rec_new.adjusted_recoverable_cost;
63    X_dpr_ptr.salvage_value   := px_asset_fin_rec_new.salvage_value;
64 
65    if (p_log_level_rec.statement_level) then
66       fa_debug_pkg.add('faxbds','faamrt1 2nd user exit new adj cost',
67            px_asset_fin_rec_new.adjusted_recoverable_cost
68            ,p_log_level_rec => p_log_level_rec);
69       fa_debug_pkg.add('faxbds','faamrt1 3rd user exit salvage_value',
70            px_asset_fin_rec_new.salvage_value
71            ,p_log_level_rec => p_log_level_rec);
72       fa_debug_pkg.add('faxbds','Japan Tax p_extended_flag',
73            p_extended_flag
74            ,p_log_level_rec => p_log_level_rec);
75    end if;
76 
77    X_dpr_ptr.deprn_rounding_flag := px_asset_fin_rec_new.annual_deprn_rounding_flag;
78    X_dpr_ptr.ceil_name           := px_asset_fin_rec_new.ceiling_name;
79    X_dpr_ptr.bonus_rule          := px_asset_fin_rec_new.bonus_rule;
80    X_dpr_ptr.life                := px_asset_fin_rec_new.life_in_months;
81    X_dpr_ptr.method_code         := px_asset_fin_rec_new.deprn_method_code;
82    X_dpr_ptr.asset_num           := p_asset_desc_rec.asset_number;
83 
84    if (p_amortized_flag) then
85       X_dpr_ptr.rate_adj_factor := 1;
86    else
87       X_dpr_ptr.rate_adj_factor := px_asset_fin_rec_new.rate_adjustment_factor;
88    end if;
89 
90    l_last_per_ctr            := fa_cache_pkg.fazcbc_record.last_period_counter;
91    l_cur_fy                  := fa_cache_pkg.fazcbc_record.current_fiscal_year;
92    l_cur_per_num             := mod((l_last_per_ctr+1),l_cur_fy);
93    l_deprn_calendar          := fa_cache_pkg.fazcbc_record.deprn_calendar;
94    l_prorate_calendar        := fa_cache_pkg.fazcbc_record.prorate_calendar;
95    l_prorate_jdate           := to_number(to_char(px_asset_fin_rec_new.prorate_date, 'J'));
96    l_deprn_start_jdate       := to_number(to_char(px_asset_fin_rec_new.deprn_start_date, 'J'));
97    l_jdate_in_svc            := to_number(to_char(px_asset_fin_rec_new.date_placed_in_service, 'J'));
98 
99    l_fy_name := fa_cache_pkg.fazcbc_record.fiscal_year_name;
100 
101    if not fa_cache_pkg.fazccp
102              (l_prorate_calendar,
103               l_fy_name,
104               l_prorate_jdate,
105               l_dummy_per_num,
106               l_prorate_fy,
107               l_start_jdate
108               ,p_log_level_rec => 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 
115    if (l_rate_source_rule = fa_std_types.FAD_RSR_CALC) or
116       (l_rate_source_rule = fa_std_types.FAD_RSR_FORMULA) then
117       l_use_jdate := l_prorate_jdate;
118    else
119       l_use_jdate := l_deprn_start_jdate;
120    end if;
121 
122    if not fa_cache_pkg.fazccp
123           (l_deprn_calendar,
124            l_fy_name,
125            l_use_jdate,
126            l_deprn_period,
127            l_deprn_fy,
128            l_start_jdate
129            ,p_log_level_rec => 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 
135    if not fa_cache_pkg.fazcct (l_deprn_calendar) then
136      fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds'
137           ,p_log_level_rec => p_log_level_rec);
138      return (FALSE);
139    end if;
140 
141    l_pers_per_yr               := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
142    X_dpr_ptr.calendar_type     := fa_cache_pkg.fazcbc_record.deprn_calendar;
143    X_dpr_ptr.prorate_jdate     := l_prorate_jdate;
144    X_dpr_ptr.deprn_start_jdate := l_deprn_start_jdate;
145    X_dpr_ptr.jdate_retired     := 0;
146    X_dpr_ptr.ret_prorate_jdate := 0;
147    X_dpr_ptr.jdate_in_service  := l_jdate_in_svc;
148    X_dpr_ptr.asset_id          := p_asset_hdr_rec.asset_id;
149    X_dpr_ptr.book              := p_asset_hdr_rec.book_type_code;
150 
151    -- no need to call query balances as it's been done
152    -- previously and contents are in deprn_rec
153 
154    -- Send in 0 value in faxcde for deprn_rsv and bonus_rsv
155    -- X_dpr_ptr.bonus_deprn_rsv   := p_asset_deprn_rec.bonus_deprn_rsv;
156    X_deprn_rsv                 := p_asset_deprn_rec.deprn_reserve;
157    X_bonus_deprn_rsv           := p_asset_deprn_rec.bonus_deprn_reserve;
158    X_dpr_ptr.reval_rsv         := p_asset_deprn_rec.reval_deprn_reserve;
159    X_dpr_ptr.prior_fy_exp      := p_asset_deprn_rec.prior_fy_expense;
160    X_dpr_ptr.ytd_deprn         := p_asset_deprn_rec.ytd_deprn;
161    X_dpr_ptr.bonus_ytd_deprn   := p_asset_deprn_rec.bonus_ytd_deprn;
162 
163    -- Pass zero ltd_prod into faxcde(), just like we do for deprn_rsv
164    X_dpr_ptr.ltd_prod := 0;
165 
166    -- Japan Tax Phase3
167    -- For extended transaction expense needs to be calculated
168    -- from extended_depreciation_period
169    if (p_extended_flag) then
170       if (px_asset_fin_rec_new.extended_depreciation_period < (l_last_per_ctr + 1 )) then
171          -- Extended Period
172          select fiscal_year, period_num
173          into   l_prorate_fy, l_start_per_num
174          from   fa_deprn_periods
175          where  period_counter = px_asset_fin_rec_new.extended_depreciation_period
176          and    book_type_code = p_asset_hdr_rec.book_type_code;
177       end if;
178    end if;
179 
180    X_dpr_ptr.y_begin := l_prorate_fy;
181    if (l_cur_per_num = 1) then
182       X_dpr_ptr.y_end := l_cur_fy - 1;
183    else
184       X_dpr_ptr.y_end := l_cur_fy;
185    end if;
186 
187    X_dpr_ptr.p_cl_begin := l_start_per_num; -- Japan Tax Phase3
188    if (l_cur_per_num = 1) then
189       X_dpr_ptr.p_cl_end := l_pers_per_yr;
190    else
191       X_dpr_ptr.p_cl_end := l_cur_per_num - 1;
192    end if;
193 
194    X_dpr_ptr.deprn_rsv      := 0;
195    X_dpr_ptr.rsv_known_flag := TRUE;
196 
197    -- Adding the following for short tax years and formula based
198    X_dpr_ptr.short_fiscal_year_flag := px_asset_fin_rec_new.short_fiscal_year_flag;
199    X_dpr_ptr.conversion_date        := px_asset_fin_rec_new.conversion_date;
200    X_dpr_ptr.prorate_date           := px_asset_fin_rec_new.prorate_date;
201    X_dpr_ptr.orig_deprn_start_date  := px_asset_fin_rec_new.orig_deprn_start_date;
202    X_dpr_ptr.formula_factor         := NVL(px_asset_fin_rec_new.formula_factor,1); --bug2692127
203 
204    return(TRUE);
205 
206 exception
207    when others then
208         fa_srvr_msg.add_sql_error (calling_fn => 'fa_exp_pkg.faxbds'
209                 ,p_log_level_rec => p_log_level_rec);
210         return (FALSE);
211 end FAXBDS;
212 
213 Function faxexp
214          (px_trans_rec         IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
215           p_asset_hdr_rec      IN     FA_API_TYPES.asset_hdr_rec_type,
216           p_asset_desc_rec     IN     FA_API_TYPES.asset_desc_rec_type,
217           p_asset_cat_rec      IN     FA_API_TYPES.asset_cat_rec_type,
218           p_asset_type_rec     IN     FA_API_TYPES.asset_type_rec_type,
219           p_asset_fin_rec_old  IN     FA_API_TYPES.asset_fin_rec_type,
220           px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
221           p_asset_deprn_rec    IN     FA_API_TYPES.asset_deprn_rec_type,
222           p_period_rec         IN     FA_API_TYPES.period_rec_type,
223           p_mrc_sob_type_code  IN     VARCHAR2,
224           p_running_mode         IN     NUMBER,
225           p_used_by_revaluation  IN     NUMBER,
226           x_deprn_exp             out NOCOPY number,
227           x_bonus_deprn_exp       out NOCOPY number,
228           x_ann_adj_deprn_exp     out NOCOPY number,
229           x_ann_adj_bonus_deprn_exp   out NOCOPY number,
230           p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type default null) return boolean is
231 
232    l_cur_deprn_rsv       number;
233    l_cur_bonus_deprn_rsv number;
234    l_rate_source_rule    varchar2(40);
235    l_deprn_basis_rule    varchar(40);
236    l_dpr                 fa_std_types.dpr_struct;
237    l_dpr_out             fa_std_types.dpr_out_struct;
238    l_dpr_asset_num       varchar2(16);
239    l_dpr_calendar_type   varchar2(16);
240    l_dpr_ceil_name       varchar2(31);
241    l_dummy_dpr_arr       fa_std_types.dpr_arr_type;
242    l_dummy_int           integer;
243    l_dummy_bool          boolean;
244 
245    -- NOTE: Fixed to bug#1583869 - hsugimot
246    -- This solve the problem that you do expensed adjustment
247    -- when the depreciation flag of the asset is off.
248 
249    l_new_deprn_rsv     number;
250    l_new_prior_fy_exp  number;
251    l_new_adj_cost      number;
252 
253    -- Fixed to bug#1762518 - hsugimot
254    l_cur_fy              integer;
255    l_cur_per_num         integer;
256 
257    --For Depreciable Basis Rule
258    l_hyp_total_ytd        number;
259 
260    -- override for what if
261    l_running_mode         number;
262 
263    -- Japan Tax Phase3
264    l_set_extend_flag      boolean := FALSE;
265    l_reset_extend_flag    boolean := FALSE;
266    l_asset_fin_rec        FA_API_TYPES.asset_fin_rec_type;
267 
268    --Bug7201421
269    CURSOR c_extend_get_original_adjcost (p_asset_id       number,
270                                        p_book_type_code varchar2) is
271       select bk_old.adjusted_cost
272       from fa_books bk_old, fa_books bk_extnd
273       where bk_old.book_type_code = p_book_type_code and
274             bk_old.asset_id = p_asset_id and
275             bk_old.extended_depreciation_period is null and
276             bk_extnd.book_type_code = p_book_type_code and
277             bk_extnd.asset_id = p_asset_id and
278             bk_extnd.extended_depreciation_period is not null and
279             bk_extnd.transaction_header_id_in = bk_old.transaction_header_id_out
280       order by bk_extnd.transaction_header_id_in desc;
281    l_adjusted_cost number;
282 
283 begin <<FAXEXP>>
284 
285    -- Japan Tax Phase3
286    l_asset_fin_rec := px_asset_fin_rec_new;
287    if ((nvl(px_asset_fin_rec_new.extended_deprn_flag,'N') = 'Y') and
288        (nvl(p_asset_fin_rec_old.extended_deprn_flag,'N') in ('N','D'))) then
289       l_set_extend_flag := TRUE;
290    elsif ((nvl(px_asset_fin_rec_new.extended_deprn_flag,'N') in ('N','D')) and
291           (nvl(p_asset_fin_rec_old.extended_deprn_flag,'N') = 'Y')) then
292       l_reset_extend_flag := TRUE;
293       -- While resetting extended_deprn_flag, catchup that needs to be reversed
294       -- should be calculated based on old fin rec.
295       l_asset_fin_rec := p_asset_fin_rec_old;
296    end if;
297 
298    -- bonus: function is also called from FAAMRT1B.pls, FATXRSVB.pls
299    if not faxbds
300           (p_asset_hdr_rec      => p_asset_hdr_rec,
301            px_asset_fin_rec_new => l_asset_fin_rec,
302            p_asset_deprn_rec    => p_asset_deprn_rec,
303            p_asset_desc_rec     => p_asset_desc_rec,
304            X_dpr_ptr            => l_dpr,
305            X_deprn_rsv          => l_cur_deprn_rsv,
306            X_bonus_deprn_rsv    => l_cur_bonus_deprn_rsv,
307            p_amortized_flag     => FALSE,
308            p_extended_flag      => (l_set_extend_flag or l_reset_extend_flag),
309            p_mrc_sob_type_code  => p_mrc_sob_type_code
310            ,p_log_level_rec => p_log_level_rec) then
311       fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp'
312             ,p_log_level_rec => p_log_level_rec);
313       return (FALSE);
314    end if;
315 
316    --
317    -- Bug3379855: ytd needs to be 0 for expense adjustment since rsv is 0
318    --      in faxbds as well bonus rsv is not 0 so keep bonus ytd as it is.
319    --
320    l_dpr.ytd_deprn         := 0;
321 
322    px_trans_rec.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
323 
324    -- Don't calculate expense for CIP/EXPENSED assets
325    --
326    -- Bug 1952858
327    -- Need to check if the asset cost = 0 and the
328    -- depreciate_flag = 'N'. This way we could
329    -- recalculate the expense after the user
330    -- adjusts the cost to 0.
331 
332    if (p_asset_type_rec.asset_type = 'CAPITALIZED') then
333       if (px_asset_fin_rec_new.depreciate_flag = 'YES')  OR
334          (px_asset_fin_rec_new.cost = 0 and
335           px_asset_fin_rec_new.depreciate_flag = 'NO') then
336          -- Call faxcde to get the recalculated expense
337          -- bonus: here is a solution for bringing cur_bonus_deprn_rsv
338          -- it may get necessary to add a new parameter to faxbds call,
339          -- and handle bonus deprn rsv simular as deprn rsv.
340 
341          -- Bug#5032680 No reason to reset this:  l_cur_bonus_deprn_rsv := l_dpr.bonus_deprn_rsv;
342          l_dpr.bonus_deprn_rsv := 0;
343 
344          -- Manual Override
345          l_dpr.used_by_adjustment  := TRUE;
346          l_dpr.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
347          l_dpr.mrc_sob_type_code := p_mrc_sob_type_code;
348          l_dpr.update_override_status := TRUE;
349 
350          if p_running_mode = fa_std_types.FA_DPR_PROJECT then
351             l_running_mode:= fa_std_types.FA_DPR_PROJECT;
352          else
353             l_running_mode:= fa_std_types.FA_DPR_NORMAL;
354          end if;
355          -- End of Manual Override
356 
357          -- this will not be called from projections
358          -- so running mode is always running_mode:= fa_std_types.FA_DPR_NORMAL;
359 
360          -- Japan Tax phase3 Start
361          if (l_set_extend_flag) then
362 
363              px_asset_fin_rec_new.adjusted_cost := px_asset_fin_rec_new.cost - p_asset_deprn_rec.deprn_reserve - 1;
364              X_deprn_exp       := 0;
365              X_bonus_deprn_exp := 0;
366 
367              if (px_asset_fin_rec_new.extended_depreciation_period < p_period_rec.period_counter) then
368 
369                 l_dpr.adj_cost := px_asset_fin_rec_new.adjusted_cost ;
370 
371                 if (p_log_level_rec.statement_level) then
372                    fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 1st faxcde l_dpr.y_begin', l_dpr.y_begin
373                                     ,p_log_level_rec => p_log_level_rec);
374                    fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 1st faxcde l_dpr.y_end', l_dpr.y_end
375                                     ,p_log_level_rec => p_log_level_rec);
376                    fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 1st faxcde l_dpr.p_cl_begin', l_dpr.p_cl_begin
377                                     ,p_log_level_rec => p_log_level_rec);
378                    fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 1st faxcde l_dpr.p_cl_end', l_dpr.p_cl_end
379                                     ,p_log_level_rec => p_log_level_rec);
380                    fa_debug_pkg.add('faxexp', 'Japan Tax:5 Calling 2nd faxcde ', 'here'
381                                     ,p_log_level_rec => p_log_level_rec);
382                    fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 1st faxcde px_asset_fin_rec_new.adjusted_cost',
383                                     px_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
384                    fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 1st faxcde p_asset_deprn_rec.deprn_reserve',
385                                     p_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
386                    fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 1st faxcde px_asset_fin_rec_new.cost ',
387                                      px_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
388                    fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 1st faxcde px_asset_fin_rec_new.allowed_deprn_limit_amount',
389                                     px_asset_fin_rec_new.allowed_deprn_limit_amount, p_log_level_rec => p_log_level_rec);
390                    fa_debug_pkg.add('faxexp', 'Japan Tax:6 Before 1st faxcde px_asset_fin_rec_new.adjusted_recoverable_cost ',
391                                     px_asset_fin_rec_new.adjusted_recoverable_cost, p_log_level_rec => p_log_level_rec);
392                 end if;
393 
394                 if not fa_cde_pkg.faxcde
395                           (l_dpr,
396                            l_dummy_dpr_arr,
397                            l_dpr_out,
398                            fa_std_types.FA_DPR_NORMAL
399                            ,p_log_level_rec => p_log_level_rec) then
400                    fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp');
401                    return (FALSE);
402                 end if;
403 
404                 X_deprn_exp := l_dpr_out.new_deprn_rsv;
405                 X_bonus_deprn_exp := l_dpr_out.new_bonus_deprn_rsv;
406 
407                 if (p_log_level_rec.statement_level) then
408                    fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 1st faxcde l_dpr_out.new_deprn_rsv', l_dpr_out.new_deprn_rsv
409                                     ,p_log_level_rec => p_log_level_rec);
410                    fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 1st faxcde l_dpr_out.deprn_exp', l_dpr_out.deprn_exp
411                                     ,p_log_level_rec => p_log_level_rec);
412                 end if;
413 
414              end if;
415          elsif (l_reset_extend_flag) then
416 
417             fa_debug_pkg.add('faxexp', 'Japan Tax:3 Adjustment logic', 'Reset extnded asset'
418                              ,p_log_level_rec => p_log_level_rec);
419             -- Bug 6624784 Reverse the catchup taken during extended depreciation.
420             if p_period_rec.period_counter > p_asset_fin_rec_old.extended_depreciation_period then
421                if (p_log_level_rec.statement_level) then
422                    fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 2nd faxcde l_dpr.y_begin', l_dpr.y_begin
423                                     ,p_log_level_rec => p_log_level_rec);
424                    fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 2nd faxcde l_dpr.y_end', l_dpr.y_end
425                                     ,p_log_level_rec => p_log_level_rec);
426                    fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 2nd faxcde l_dpr.p_cl_begin', l_dpr.p_cl_begin
427                                     ,p_log_level_rec => p_log_level_rec);
428                    fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 2nd faxcde l_dpr.p_cl_end', l_dpr.p_cl_end
429                                     ,p_log_level_rec => p_log_level_rec);
430                    fa_debug_pkg.add('faxexp', 'Japan Tax:5 Calling 2nd faxcde ', 'here'
431                                     ,p_log_level_rec => p_log_level_rec);
432                    fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 2nd faxcde px_asset_fin_rec_new.adjusted_cost',
433                                     px_asset_fin_rec_new.adjusted_cost, p_log_level_rec => p_log_level_rec);
434                    fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 2nd faxcde p_asset_deprn_rec.deprn_reserve',
435                                     p_asset_deprn_rec.deprn_reserve, p_log_level_rec => p_log_level_rec);
436                    fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 2nd faxcde px_asset_fin_rec_new.cost ',
437                                      px_asset_fin_rec_new.cost, p_log_level_rec => p_log_level_rec);
438                    fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 2nd faxcde px_asset_fin_rec_new.allowed_deprn_limit_amount',
439                                     px_asset_fin_rec_new.allowed_deprn_limit_amount, p_log_level_rec => p_log_level_rec);
440                    fa_debug_pkg.add('faxexp', 'Japan Tax:6 Before 2nd faxcde px_asset_fin_rec_new.adjusted_recoverable_cost ',
441                                     px_asset_fin_rec_new.adjusted_recoverable_cost, p_log_level_rec => p_log_level_rec);
442                end if;
443 
444                if not fa_cde_pkg.faxcde
445                          (l_dpr,
446                           l_dummy_dpr_arr,
447                           l_dpr_out,
448                           fa_std_types.FA_DPR_NORMAL
449                           ,p_log_level_rec => p_log_level_rec) then
450                   fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp');
451                   return (FALSE);
452                end if;
453 
454                X_deprn_exp := -1 * l_dpr_out.new_deprn_rsv;
455                X_bonus_deprn_exp := -1 * l_dpr_out.new_bonus_deprn_rsv;
456 
457 	       --bug7201421 Added the cursor to fetch the original adjusted cost
458                  open c_extend_get_original_adjcost(p_asset_hdr_rec.asset_id, p_asset_hdr_rec.book_type_code);
459                          FETCH c_extend_get_original_adjcost
460                          INTO  l_adjusted_cost;
461                  close c_extend_get_original_adjcost;
462                  px_asset_fin_rec_new.adjusted_cost := l_adjusted_cost;
463 
464                if (p_log_level_rec.statement_level) then
465                   fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 2nd faxcde l_dpr_out.new_deprn_rsv', l_dpr_out.new_deprn_rsv
466                                    ,p_log_level_rec => p_log_level_rec);
467                   fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 2nd faxcde l_dpr_out.deprn_exp', l_dpr_out.deprn_exp
468                                    ,p_log_level_rec => p_log_level_rec);
469                end if;
470             end if;
471          -- Japan Tax phase3 End
472          else
473 
474             if not fa_cde_pkg.faxcde
475                       (l_dpr,
476                        l_dummy_dpr_arr,
477                        l_dpr_out,
478                        fa_std_types.FA_DPR_NORMAL
479                        ,p_log_level_rec => p_log_level_rec) then
480                fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp'
481                            ,p_log_level_rec => p_log_level_rec);
482                return (FALSE);
483             end if;
484 
485             X_deprn_exp         := l_dpr_out.new_deprn_rsv - l_cur_deprn_rsv;
486             X_ann_adj_deprn_exp := l_dpr_out.ann_adj_exp;
487 
488             -- pass eofy_reserve to CALL_DEPRN_BASIS
489             px_asset_fin_rec_new.eofy_reserve := l_dpr_out.new_eofy_reserve;
490 
491             -- bonus: new_bonus_deprn_rsv added to dpr_out_struct.
492             -- Investigate dpr.bonus_deprn_rsv if value is correct.==> YES!
493             -- Now new_bonus_deprn_rsv needs to be correctly calculated in faxcde.
494             -- Bug no 4769756 spooyath
495             -- Adding an nvl for l_cur_bonus_deprn_rsv
496 
497             if nvl(px_asset_fin_rec_new.bonus_rule, 'NONE') <> 'NONE' then
498                X_bonus_deprn_exp := l_dpr_out.new_bonus_deprn_rsv - nvl(l_cur_bonus_deprn_rsv,0);
499                X_ann_adj_bonus_deprn_exp := 0; -- l_dpr_out.ann_adj_bonus_exp;
500             else
501                X_bonus_deprn_exp := 0;
502                X_ann_adj_bonus_deprn_exp := 0;
503             end if;
504 
505             -- Manual Override
506             if (p_log_level_rec.statement_level) then
507                fa_debug_pkg.add (
508                    fname   => 'faxexp',
509                    element => 'deprn_override_flag',
510                    value   => l_dpr_out.deprn_override_flag
511                    ,p_log_level_rec => p_log_level_rec);
512             end if;
513 
514             -- pass override_flag to faxiat
515             px_trans_rec.deprn_override_flag:= l_dpr_out.deprn_override_flag;
516 
517          end if;
518       else
519          X_deprn_exp               := 0;
520          X_bonus_deprn_exp         := 0;
521          X_ann_adj_deprn_exp       := 0;
522          X_ann_adj_bonus_deprn_exp := 0;
523 
524       end if;
525    end if;
526 
527 /*
528         NOTE
529 
530       This is incorrect; the annualized adjustment for this should not
531       be zero.  The correct way to calculate this would be to
532       recalculate deprn under the old conditions, and determine what the
533       annualized deprn amount is for the current fiscal year.  Then
534       compare that with the recalculation of deprn under the new
535       conditions.  The difference is the annualized adjustment amount.
536       In order to calculate this, we would need a snapshot of the asset
537       before the transaction.  Since this requires a significant change
538       to the fin_info_struct structure, we will defer the fix until a
539       later release.  The impact of this is that if the user executes an
540       expensed change, and then a prior-period transfer or retirement
541       whose effective date is before the current date, the depreciation
542       expense transferred will not include any amount relevant to the
543       expensed change.  -Dave
544 
545       this is handled in faxiat now
546 */
547 
548    if (not FA_CACHE_PKG.fazccmt
549              (px_asset_fin_rec_new.deprn_method_code,
550               px_asset_fin_rec_new.life_in_months
551               ,p_log_level_rec => p_log_level_rec)) then
552       FA_SRVR_MSG.ADD_MESSAGE(CALLING_FN => 'FA_AMORT_PKG.faxraf'
553             ,p_log_level_rec => p_log_level_rec);
554       return FALSE;
555    end if;
556 
557    l_rate_source_rule      := fa_cache_pkg.fazccmt_record.rate_source_rule;
558    l_deprn_basis_rule      := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
559 
560 
561    -- Added for the Depreciable Basis Formula.
562    l_cur_fy      := fa_cache_pkg.fazcbc_record.current_fiscal_year;
563    l_cur_per_num := mod(p_period_rec.period_counter,l_cur_fy);
564 
565 
566    ----------------------------------------------
567    -- Call Depreciable Basis Rule
568    -- for Expensed Adjustment
569    ----------------------------------------------
570    if (l_cur_per_num = 1) then
571      l_hyp_total_ytd  := 0;
572    else
573      -- Bug3213016:
574      -- Use l_dpr_out.new_ytd_deprn for new ytd_deprn instead of
575      --  l_dpr_out.new_deprn_rsv - (l_dpr_out.new_prior_fy_exp - l_dpr.prior_fy_exp)
576      --
577      l_hyp_total_ytd := l_dpr_out.new_ytd_deprn;
578    end if;
579 
580    -- Japan Tax Phase3 don't call CALL_DEPRN_BASIS for extended assets
581    if (not (l_set_extend_flag or l_reset_extend_flag)) then
582       if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
583                        (
584                         p_event_type             => 'EXPENSED_ADJ',
585                         p_asset_fin_rec_new      => px_asset_fin_rec_new,
586                         p_asset_fin_rec_old      => p_asset_fin_rec_old,
587                         p_asset_hdr_rec          => p_asset_hdr_rec,
588                         p_asset_type_rec         => p_asset_type_rec,
589                         p_asset_deprn_rec        => p_asset_deprn_rec,
590                         p_trans_rec              => px_trans_rec,
591                         p_period_rec             => p_period_rec,
592                         p_recoverable_cost       => l_dpr.rec_cost,
593                         p_current_total_rsv      => l_cur_deprn_rsv,
594                         p_current_total_ytd      => l_dpr.ytd_deprn,
595                         p_hyp_basis              => l_dpr_out.new_adj_cost,
596                         p_hyp_total_rsv          => l_dpr_out.new_deprn_rsv,
597                         p_hyp_rsv                => l_dpr_out.new_deprn_rsv
598                                                       - l_dpr_out.new_bonus_deprn_rsv,
599                         p_hyp_total_ytd          => l_hyp_total_ytd,
600                         p_mrc_sob_type_code      => p_mrc_sob_type_code,
601                         px_new_adjusted_cost     => px_asset_fin_rec_new.adjusted_cost,
602                         px_new_raf               => px_asset_fin_rec_new.rate_adjustment_factor,
603                         px_new_formula_factor    => px_asset_fin_rec_new.formula_factor
604                        ,p_log_level_rec => p_log_level_rec)
605                     )
606       then
607          fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp'
608                ,p_log_level_rec => p_log_level_rec);
609          return false;
610       end if;
611    end if;
612 
613    return(TRUE);
614 
615 exception
616    when others then
617         fa_srvr_msg.add_sql_error (calling_fn => 'fa_exp_pkg.faxexp'
618                 ,p_log_level_rec => p_log_level_rec);
619         return (FALSE);
620 end FAXEXP;
621 
622 
623 END FA_EXP_PVT;