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