[Home] [Help]
PACKAGE BODY: APPS.FA_EXP_PVT
Source
1 PACKAGE BODY FA_EXP_PVT as
2 /* $Header: FAVEXAJB.pls 120.29.12020000.2 2012/11/07 11:38:07 deemitta ship $ */
3
4 g_release number := fa_cache_pkg.fazarel_release;
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 X_impairment_rsv out NOCOPY number,
16 p_amortized_flag boolean,
17 p_extended_flag boolean default FALSE, -- Japan Tax Phase3 Bug 6624784
18 p_mrc_sob_type_code IN VARCHAR2
19 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return boolean is
20
21 l_rate_source_rule varchar2(40);
22 l_prorate_calendar varchar2(48);
23 l_fy_name varchar2(45);
24 l_deprn_calendar varchar2(48);
25 l_period_num integer;
26 l_start_jdate integer;
27 l_prorate_jdate integer;
28 l_deprn_start_jdate integer;
29 l_jdate_in_svc integer;
30 l_use_jdate integer;
31 l_prorate_fy integer;
32 l_deprn_period integer;
33 l_deprn_fy integer;
34 l_pers_per_yr integer;
35 l_last_per_ctr integer;
36 l_cur_fy integer;
37 l_cur_per_num integer;
38 l_start_per_num integer := 1 ; -- Japan Tax Phase3 Bug 6624784
39 l_dummy_per_num integer;
40 l_dummy_int integer;
41 l_dummy_bool boolean;
42 l_dummy_varch varchar2(16);
43
44 begin <<FAXBDS>>
45
46 if (not FA_CACHE_PKG.fazccmt(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', p_log_level_rec => p_log_level_rec);
50 return FALSE;
51 end if;
52
53 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
54
55 X_dpr_ptr.adj_cost := px_asset_fin_rec_new.adjusted_cost;
56 X_dpr_ptr.rec_cost := px_asset_fin_rec_new.recoverable_cost;
57 X_dpr_ptr.reval_amo_basis := px_asset_fin_rec_new.reval_amortization_basis;
58 X_dpr_ptr.adj_rate := px_asset_fin_rec_new.adjusted_rate;
59 X_dpr_ptr.capacity := px_asset_fin_rec_new.production_capacity;
60 X_dpr_ptr.adj_capacity := px_asset_fin_rec_new.adjusted_capacity;
61 X_dpr_ptr.adj_rec_cost := px_asset_fin_rec_new.adjusted_recoverable_cost;
62 X_dpr_ptr.salvage_value := px_asset_fin_rec_new.salvage_value;
63
64 if (p_log_level_rec.statement_level) then
65 fa_debug_pkg.add('faxbds','faamrt1 2nd user exit new adj cost',
66 px_asset_fin_rec_new.adjusted_recoverable_cost, p_log_level_rec);
67 fa_debug_pkg.add('faxbds','faamrt1 3rd user exit salvage_value',
68 px_asset_fin_rec_new.salvage_value, p_log_level_rec);
69 fa_debug_pkg.add('faxbds','Japan Tax p_extended_flag',
70 p_extended_flag, p_log_level_rec);
71 end if;
72
73 X_dpr_ptr.deprn_rounding_flag := px_asset_fin_rec_new.annual_deprn_rounding_flag;
74 X_dpr_ptr.ceil_name := px_asset_fin_rec_new.ceiling_name;
75 X_dpr_ptr.bonus_rule := px_asset_fin_rec_new.bonus_rule;
76 X_dpr_ptr.life := px_asset_fin_rec_new.life_in_months;
77 X_dpr_ptr.method_code := px_asset_fin_rec_new.deprn_method_code;
78 X_dpr_ptr.asset_num := p_asset_desc_rec.asset_number;
79
80 if (p_amortized_flag) then
81 X_dpr_ptr.rate_adj_factor := 1;
82 else
83 X_dpr_ptr.rate_adj_factor := px_asset_fin_rec_new.rate_adjustment_factor;
84 end if;
85
86 l_last_per_ctr := fa_cache_pkg.fazcbc_record.last_period_counter;
87 l_cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
88 l_cur_per_num := mod((l_last_per_ctr+1),l_cur_fy);
89 l_deprn_calendar := fa_cache_pkg.fazcbc_record.deprn_calendar;
90 l_prorate_calendar := fa_cache_pkg.fazcbc_record.prorate_calendar;
91 l_prorate_jdate := to_number(to_char(px_asset_fin_rec_new.prorate_date, 'J'));
92 l_deprn_start_jdate := to_number(to_char(px_asset_fin_rec_new.deprn_start_date, 'J'));
93 l_jdate_in_svc := to_number(to_char(px_asset_fin_rec_new.date_placed_in_service, 'J'));
94
95 l_fy_name := fa_cache_pkg.fazcbc_record.fiscal_year_name;
96
97 if not fa_cache_pkg.fazccp(l_prorate_calendar,
98 l_fy_name,
99 l_prorate_jdate,
100 l_dummy_per_num,
101 l_prorate_fy,
102 l_start_jdate,
103 p_log_level_rec => p_log_level_rec) then
104 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds', p_log_level_rec => p_log_level_rec);
105 return (FALSE);
106 end if;
107
108 if (l_rate_source_rule = fa_std_types.FAD_RSR_CALC) or
109 (l_rate_source_rule = fa_std_types.FAD_RSR_FORMULA) then
110 l_use_jdate := l_prorate_jdate;
111 else
112 l_use_jdate := l_deprn_start_jdate;
113 end if;
114
115 if not fa_cache_pkg.fazccp(l_deprn_calendar,
116 l_fy_name,
117 l_use_jdate,
118 l_deprn_period,
119 l_deprn_fy,
120 l_start_jdate,
121 p_log_level_rec => p_log_level_rec) then
122 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds', p_log_level_rec => p_log_level_rec);
123 return (FALSE);
124 end if;
125
126 if not fa_cache_pkg.fazcct (l_deprn_calendar, p_log_level_rec => p_log_level_rec) then
127 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxbds', p_log_level_rec => p_log_level_rec);
128 return (FALSE);
129 end if;
130
131 l_pers_per_yr := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
132 X_dpr_ptr.calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
133 X_dpr_ptr.prorate_jdate := l_prorate_jdate;
134 X_dpr_ptr.deprn_start_jdate := l_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 := l_jdate_in_svc;
138 X_dpr_ptr.asset_id := p_asset_hdr_rec.asset_id;
139 X_dpr_ptr.book := p_asset_hdr_rec.book_type_code;
140
141 -- no need to call query balances as it's been done
142 -- previously and contents are in deprn_rec
143
144 -- Send in 0 value in faxcde for deprn_rsv and bonus_rsv
145 -- X_dpr_ptr.bonus_deprn_rsv := p_asset_deprn_rec.bonus_deprn_rsv;
146 X_deprn_rsv := p_asset_deprn_rec.deprn_reserve;
147 X_bonus_deprn_rsv := p_asset_deprn_rec.bonus_deprn_reserve;
148 X_impairment_rsv := p_asset_deprn_rec.impairment_reserve;
149 X_dpr_ptr.reval_rsv := p_asset_deprn_rec.reval_deprn_reserve;
150 X_dpr_ptr.prior_fy_exp := p_asset_deprn_rec.prior_fy_expense;
151 X_dpr_ptr.ytd_deprn := p_asset_deprn_rec.ytd_deprn;
152 X_dpr_ptr.bonus_ytd_deprn := p_asset_deprn_rec.bonus_ytd_deprn;
153 X_dpr_ptr.ytd_impairment := p_asset_deprn_rec.ytd_impairment;
154
155 -- Pass zero ltd_prod into faxcde(), just like we do for deprn_rsv
156 X_dpr_ptr.ltd_prod := 0;
157
158 -- Japan Tax Phase3 Bug 6624784
159 -- For extended transaction expense needs to be calculated
160 -- from extended_depreciation_period
161 if (p_extended_flag) then
162 if (px_asset_fin_rec_new.extended_depreciation_period < (l_last_per_ctr + 1 )) then
163 -- Extended Period
164 BEGIN
165 select fiscal_year, period_num
166 into l_prorate_fy, l_start_per_num
167 from fa_deprn_periods
168 where period_counter = px_asset_fin_rec_new.extended_depreciation_period
169 and book_type_code = p_asset_hdr_rec.book_type_code;
170 -- Added by Satish Byreddy To cater the Extended Depreciation Catchup calculation for Migrated Assets
171 EXCEPTION
172 WHEN NO_DATA_FOUND THEN
173 select fc.period_num
174 , ffy.fiscal_year
175 into l_start_per_num
176 , l_prorate_fy
177 from fa_calendar_periods fc
178 , fa_book_controls fb
179 , fa_fiscal_year ffy
180 , fa_calendar_types fct
181 where fc.calendar_type = fb.deprn_calendar
182 and fb.book_type_code = p_asset_hdr_rec.book_type_code
183 and ffy.fiscal_year_name = fb.fiscal_year_name
184 and ffy.fiscal_year_name = fct.fiscal_year_name
185 and fc.calendar_type = fct.calendar_type
186 and fct.calendar_type = fb.deprn_calendar
187 and fc.start_date >= ffy.start_date
188 and fc.end_date <= ffy.end_date
189 and (ffy.fiscal_year * fct.number_per_fiscal_year + fc.period_num) =
190 px_asset_fin_rec_new.extended_depreciation_period;
191
192 WHEN OTHERS THEN
193 l_prorate_fy := l_cur_fy;
194 l_start_per_num := l_cur_per_num;
195 END;
196 -- End Of Addition by Satish Byreddy To cater the Extended Depreciation Catchup calculation for Migrated Assets
197 end if;
198 end if;
199
200 X_dpr_ptr.y_begin := l_prorate_fy;
201
202 if (l_cur_per_num = 1) then
203 X_dpr_ptr.y_end := l_cur_fy - 1;
204 else
205 X_dpr_ptr.y_end := l_cur_fy;
206 end if;
207
208 X_dpr_ptr.p_cl_begin := l_start_per_num; -- Japan Tax Phase3 Bug 6624784
209
210 if (l_cur_per_num = 1) then
211 X_dpr_ptr.p_cl_end := l_pers_per_yr;
212 else
213 X_dpr_ptr.p_cl_end := l_cur_per_num - 1;
214 end if;
215
216 X_dpr_ptr.deprn_rsv := 0;
217 X_dpr_ptr.rsv_known_flag := TRUE;
218
219 -- Adding the following for short tax years and formula based
220 X_dpr_ptr.short_fiscal_year_flag := px_asset_fin_rec_new.short_fiscal_year_flag;
221 X_dpr_ptr.conversion_date := px_asset_fin_rec_new.conversion_date;
222 X_dpr_ptr.prorate_date := px_asset_fin_rec_new.prorate_date;
223 X_dpr_ptr.orig_deprn_start_date := px_asset_fin_rec_new.orig_deprn_start_date;
224 X_dpr_ptr.formula_factor := NVL(px_asset_fin_rec_new.formula_factor,1); --bug2692127
225
226 return(TRUE);
227
228 exception
229 when others then
230 fa_srvr_msg.add_sql_error (calling_fn => 'fa_exp_pkg.faxbds', p_log_level_rec => p_log_level_rec);
231 return (FALSE);
232 end FAXBDS;
233
234 Function faxexp
235 (px_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
236 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type,
237 p_asset_desc_rec IN FA_API_TYPES.asset_desc_rec_type,
238 p_asset_cat_rec IN FA_API_TYPES.asset_cat_rec_type,
239 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
240 p_asset_fin_rec_old IN FA_API_TYPES.asset_fin_rec_type,
241 px_asset_fin_rec_new IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
242 p_asset_deprn_rec IN FA_API_TYPES.asset_deprn_rec_type,
243 p_period_rec IN FA_API_TYPES.period_rec_type,
244 p_mrc_sob_type_code IN VARCHAR2,
245 p_running_mode IN NUMBER,
246 p_used_by_revaluation IN NUMBER,
247 x_deprn_exp out NOCOPY number,
248 x_bonus_deprn_exp out NOCOPY number,
249 x_impairment_exp out NOCOPY number,
250 x_ann_adj_deprn_exp out NOCOPY number,
251 x_ann_adj_bonus_deprn_exp out NOCOPY number,
252 p_log_level_rec IN FA_API_TYPES.log_level_rec_type) return boolean is
253
254 l_cur_deprn_rsv number;
255 l_cur_bonus_deprn_rsv number;
256 l_cur_impairment_rsv number;
257 l_rate_source_rule varchar2(40);
258 l_deprn_basis_rule varchar(40);
259 l_dpr fa_std_types.dpr_struct;
260 l_dpr_out fa_std_types.dpr_out_struct;
261 l_dpr_asset_num varchar2(16);
262 l_dpr_calendar_type varchar2(16);
263 l_dpr_ceil_name varchar2(31);
264 l_dummy_dpr_arr fa_std_types.dpr_arr_type;
265 l_dummy_int integer;
266 l_dummy_bool boolean;
267 l_pers_per_yr integer := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
268 l_start_per_num integer := 1;
269
270 -- NOTE: Fixed to bug#1583869 - hsugimot
271 -- This solve the problem that you do expensed adjustment
272 -- when the depreciation flag of the asset is off.
273
274 l_new_deprn_rsv number;
275 l_new_prior_fy_exp number;
276 l_new_adj_cost number;
277
278 -- Fixed to bug#1762518 - hsugimot
279 l_cur_fy integer;
280 l_cur_per_num integer;
281
282 --For Depreciable Basis Rule
283 l_hyp_total_ytd number;
284 -- bug 9110995 FP Bug 8571102 During catchup for flat rates/NBV, we are in strict flat mode.
285 l_hyp_total_rsv number;
286 l_hyp_rsv number;
287 -- bug 9110995 FP Bug 8571102
288 -- override for what if
289 l_running_mode number;
290
291 -- Japan Tax Phase3
292 l_set_extend_flag boolean := FALSE;
293 l_reset_extend_flag boolean := FALSE;
294 -- Bug 6624784
295 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
296
297 --Bug8350248
298 CURSOR c_extend_get_original_adjcost(p_asset_id number,
299 p_book_type_code varchar2) is
300 select bk_old.adjusted_cost
301 from fa_books bk_old
302 , fa_books bk_extnd
303 where bk_old.book_type_code = p_book_type_code
304 and bk_old.asset_id = p_asset_id
305 and bk_old.extended_depreciation_period is null
306 and bk_extnd.book_type_code = p_book_type_code
307 and bk_extnd.asset_id = p_asset_id
308 and bk_extnd.extended_depreciation_period is not null
309 and bk_extnd.transaction_header_id_in = bk_old.transaction_header_id_out
310 order by bk_extnd.transaction_header_id_in desc;
311
312 l_adjusted_cost number;
313
314 begin <<FAXEXP>>
315
316 -- Japan Tax Phase3
317 l_asset_fin_rec := px_asset_fin_rec_new;
318 if ((nvl(px_asset_fin_rec_new.extended_deprn_flag,'N') = 'Y') and
319 (nvl(p_asset_fin_rec_old.extended_deprn_flag,'N') in ('N','D'))) then
320 l_set_extend_flag := TRUE;
321 elsif ((nvl(px_asset_fin_rec_new.extended_deprn_flag,'N') in ('N','D')) and
322 (nvl(p_asset_fin_rec_old.extended_deprn_flag,'N') = 'Y')) then
323 l_reset_extend_flag := TRUE;
324 -- While resetting extended_deprn_flag, catchup that needs to be reversed
325 -- should be calculated based on old fin rec.
326 l_asset_fin_rec := p_asset_fin_rec_old;
327 end if;
328
329 -- bonus: function is also called from FAAMRT1B.pls, FATXRSVB.pls
330 if not faxbds
331 (p_asset_hdr_rec => p_asset_hdr_rec,
332 px_asset_fin_rec_new => l_asset_fin_rec,
333 p_asset_deprn_rec => p_asset_deprn_rec,
334 p_asset_desc_rec => p_asset_desc_rec,
335 X_dpr_ptr => l_dpr,
336 X_deprn_rsv => l_cur_deprn_rsv,
337 X_bonus_deprn_rsv => l_cur_bonus_deprn_rsv,
338 X_impairment_rsv => l_cur_impairment_rsv,
339 p_amortized_flag => FALSE,
340 p_extended_flag => (l_set_extend_flag or l_reset_extend_flag),
341 p_mrc_sob_type_code => p_mrc_sob_type_code,
342 p_Log_level_rec => p_Log_level_rec) then
343 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
344 return (FALSE);
345 end if;
346
347 --
348 -- Bug3379855: ytd needs to be 0 for expense adjustment since rsv is 0
349 -- in faxbds as well bonus rsv is not 0 so keep bonus ytd as it is.
350 --
351 l_dpr.ytd_deprn := 0;
352
353 -- Bug 10268916 when processing an expensed statement the initial reserve should be 0 and
354 -- adjusted cost should be cost - salvage val
355
356 l_dpr.deprn_rsv := 0;
357 l_dpr.adj_cost := px_asset_fin_rec_new.cost - NVL (px_asset_fin_rec_new.salvage_value,0);
358
359 px_trans_rec.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
360
361 -- Don't calculate expense for CIP/EXPENSED assets
362 --
363 -- Bug 1952858
364 -- Need to check if the asset cost = 0 and the
365 -- depreciate_flag = 'N'. This way we could
366 -- recalculate the expense after the user
367 -- adjusts the cost to 0.
368
369 if (p_asset_type_rec.asset_type = 'CAPITALIZED' ) then
370 if (px_asset_fin_rec_new.depreciate_flag = 'YES') OR
371 (px_asset_fin_rec_new.cost = 0 and
372 px_asset_fin_rec_new.depreciate_flag = 'NO') then
373 -- Call faxcde to get the recalculated expense
374 -- bonus: here is a solution for bringing cur_bonus_deprn_rsv
375 -- it may get necessary to add a new parameter to faxbds call,
376 -- and handle bonus deprn rsv simular as deprn rsv.
377
378 -- Bug#5032680 No reason to reset this: l_cur_bonus_deprn_rsv := l_dpr.bonus_deprn_rsv;
379 l_dpr.bonus_deprn_rsv := 0;
380
381 l_dpr.impairment_rsv := 0;
382
383 -- Manual Override
384 l_dpr.used_by_adjustment := TRUE;
385 l_dpr.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
386 l_dpr.mrc_sob_type_code := p_mrc_sob_type_code;
387 l_dpr.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
388 l_dpr.update_override_status := TRUE;
389
390 if p_running_mode = fa_std_types.FA_DPR_PROJECT then
391 l_running_mode:= fa_std_types.FA_DPR_PROJECT;
392 else
393 l_running_mode:= fa_std_types.FA_DPR_NORMAL;
394 end if;
395 -- End of Manual Override
396
397 -- this will not be called from projections
398 -- so running mode is always running_mode:= fa_std_types.FA_DPR_NORMAL;
399 l_dpr.cost := px_asset_fin_rec_new.cost;
400
401 -- Japan Tax phase3 Start
402 if (l_set_extend_flag) then
403
404 px_asset_fin_rec_new.adjusted_cost := px_asset_fin_rec_new.cost - NVL(p_asset_deprn_rec.deprn_reserve,0) -
405 NVL(px_asset_fin_rec_new.allowed_deprn_limit_amount,0);
406 X_deprn_exp := 0;
407 X_bonus_deprn_exp := 0;
408 X_impairment_exp := 0;
409
410 if (px_asset_fin_rec_new.extended_depreciation_period < p_period_rec.period_counter) then
411
412 l_dpr.adj_cost := px_asset_fin_rec_new.adjusted_cost ;
413
414 if l_dpr.method_code = 'JP-STL-EXTND' then
415 if (l_start_per_num = 1) then
416 if l_dpr.y_end > l_dpr.y_begin + (l_dpr.life /l_pers_per_yr) - 1 then
417 l_dpr.y_end := l_dpr.y_begin + (l_dpr.life /l_pers_per_yr);
418 l_dpr.p_cl_end := l_start_per_num;
419 end if;
420 end if;
421 end if;
422
423 if (p_log_level_rec.statement_level) then
424 fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 2nd faxcde l_dpr.y_begin', l_dpr.y_begin, p_log_level_rec);
425 fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 2nd faxcde l_dpr.y_end', l_dpr.y_end, 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, p_log_level_rec);
427 fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 2nd faxcde l_dpr.p_cl_end', l_dpr.p_cl_end, p_log_level_rec);
428 fa_debug_pkg.add('faxexp', 'Japan Tax:5 Calling 2nd faxcde ', 'here', p_log_level_rec);
429 fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 2nd faxcde px_asset_fin_rec_new.adjusted_cost',
430 px_asset_fin_rec_new.adjusted_cost, p_log_level_rec);
431 fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 2nd faxcde p_asset_deprn_rec.deprn_reserve',
432 p_asset_deprn_rec.deprn_reserve, p_log_level_rec);
433 fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 2nd faxcde px_asset_fin_rec_new.cost ',
434 px_asset_fin_rec_new.cost, p_log_level_rec);
435 fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 2nd faxcde px_asset_fin_rec_new.allowed_deprn_limit_amount',
436 px_asset_fin_rec_new.allowed_deprn_limit_amount, p_log_level_rec);
437 fa_debug_pkg.add('faxexp', 'Japan Tax:6 Before 2nd faxcde px_asset_fin_rec_new.adjusted_recoverable_cost ',
438 px_asset_fin_rec_new.adjusted_recoverable_cost , p_log_level_rec);
439 end if;
440
441 IF NVL(px_trans_rec.calling_interface,'XXX') <> 'FAXASSET' OR
442 px_trans_rec.transaction_type_code <> 'ADDITION' OR
443 G_release = 12 THEN
444 if not fa_cde_pkg.faxcde(l_dpr,
445 l_dummy_dpr_arr,
446 l_dpr_out,
447 fa_std_types.FA_DPR_NORMAL,
448 p_log_level_rec => p_log_level_rec) then
449 fa_srvr_msg.add_message(calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
450 return (FALSE);
451 end if;
452 END IF;
453
454 X_deprn_exp := l_dpr_out.new_deprn_rsv;
455 X_bonus_deprn_exp := l_dpr_out.new_bonus_deprn_rsv;
456
457 if (p_log_level_rec.statement_level) then
458 fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 2nd faxcde l_dpr_out.new_deprn_rsv', l_dpr_out.new_deprn_rsv, p_log_level_rec);
459 fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 2nd faxcde l_dpr_out.deprn_exp', l_dpr_out.deprn_exp, p_log_level_rec);
460 end if;
461
462 end if;
463 elsif (l_reset_extend_flag) then
464 -- bug 11675569 correct adj cost should be passed to recalculate engine
465 l_dpr.adj_cost := p_asset_fin_rec_old.adjusted_cost;
466 fa_debug_pkg.add('faxexp', 'Japan Tax:3 Adjustment logic', 'Reset extnded asset', p_log_level_rec);
467 -- Bug 6624784 Reverse the catchup taken during extended depreciation.
468 if p_period_rec.period_counter > p_asset_fin_rec_old.extended_depreciation_period then
469 if (p_log_level_rec.statement_level) then
470 fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 2nd faxcde l_dpr.y_begin', l_dpr.y_begin, p_log_level_rec);
471 fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 2nd faxcde l_dpr.y_end', l_dpr.y_end, p_log_level_rec);
472 fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 2nd faxcde l_dpr.p_cl_begin', l_dpr.p_cl_begin, p_log_level_rec);
473 fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 2nd faxcde l_dpr.p_cl_end', l_dpr.p_cl_end, p_log_level_rec);
474 fa_debug_pkg.add('faxexp', 'Japan Tax:5 Calling 2nd faxcde ', 'here', p_log_level_rec);
475 fa_debug_pkg.add('faxexp', 'Japan Tax:1 Before 2nd faxcde px_asset_fin_rec_new.adjusted_cost',
476 px_asset_fin_rec_new.adjusted_cost, p_log_level_rec);
477 fa_debug_pkg.add('faxexp', 'Japan Tax:2 Before 2nd faxcde p_asset_deprn_rec.deprn_reserve',
478 p_asset_deprn_rec.deprn_reserve, p_log_level_rec);
479 fa_debug_pkg.add('faxexp', 'Japan Tax:3 Before 2nd faxcde px_asset_fin_rec_new.cost ',
480 px_asset_fin_rec_new.cost, p_log_level_rec);
481 fa_debug_pkg.add('faxexp', 'Japan Tax:4 Before 2nd faxcde px_asset_fin_rec_new.allowed_deprn_limit_amount',
482 px_asset_fin_rec_new.allowed_deprn_limit_amount, p_log_level_rec);
483 fa_debug_pkg.add('faxexp', 'Japan Tax:6 Before 2nd faxcde px_asset_fin_rec_new.adjusted_recoverable_cost ',
484 px_asset_fin_rec_new.adjusted_recoverable_cost , p_log_level_rec);
485 end if;
486
487 if not fa_cde_pkg.faxcde(l_dpr,
488 l_dummy_dpr_arr,
489 l_dpr_out,
490 fa_std_types.FA_DPR_NORMAL,
491 p_log_level_rec => p_log_level_rec) then
492 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
493 return (FALSE);
494 end if;
495
496 X_deprn_exp := -1 * l_dpr_out.new_deprn_rsv;
497 X_bonus_deprn_exp := -1 * l_dpr_out.new_bonus_deprn_rsv;
498
499 if (p_log_level_rec.statement_level) then
500 fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 2nd faxcde l_dpr_out.new_deprn_rsv', l_dpr_out.new_deprn_rsv, p_log_level_rec);
501 fa_debug_pkg.add('faxexp', 'Japan Tax:6 After 2nd faxcde l_dpr_out.deprn_exp', l_dpr_out.deprn_exp, p_log_level_rec);
502 end if;
503 end if;
504
505 --bug8350248 Added the cursor to fetch the original adjusted cost
506 OPEN c_extend_get_original_adjcost(p_asset_hdr_rec.asset_id, p_asset_hdr_rec.book_type_code);
507 FETCH c_extend_get_original_adjcost INTO l_adjusted_cost;
508
509 /*bug 10062041 above cursor will not fetch anything when asset is added as extended
510 in that case we will simply make adj cost = cost - salvage value*/
511 /* bug 10365486 changes for deprn limit . logic same as bug 10062041*/
512 if c_extend_get_original_adjcost%NOTFOUND then
513 --Bug 10365486
514 l_adjusted_cost := p_asset_fin_rec_old.cost - NVL(p_asset_fin_rec_old.salvage_value,0);
515 px_asset_fin_rec_new.deprn_limit_type := p_asset_fin_rec_old.prior_deprn_limit_type;
516 px_asset_fin_rec_new.allowed_deprn_limit := p_asset_fin_rec_old.prior_deprn_limit;
517 px_asset_fin_rec_new.allowed_deprn_limit_amount := p_asset_fin_rec_old.prior_deprn_limit_amount;
518 end if;
519 CLOSE c_extend_get_original_adjcost;
520 px_asset_fin_rec_new.adjusted_cost := l_adjusted_cost;
521
522 -- Japan Tax phase3 End
523 else
524 -- this will not be called from projections
525 -- so running mode is always running_mode:= fa_std_types.FA_DPR_NORMAL;
526 if (p_log_level_rec.statement_level) then
527 fa_debug_pkg.add('faxexp', 'Japan Tax1:1 Before 2nd faxcde l_dpr.y_begin', l_dpr.y_begin, p_log_level_rec);
528 fa_debug_pkg.add('faxexp', 'Japan Tax2:2 Before 2nd faxcde l_dpr.y_end', l_dpr.y_end, p_log_level_rec);
529 fa_debug_pkg.add('faxexp', 'Japan Tax3:3 Before 2nd faxcde l_dpr.p_cl_begin', l_dpr.p_cl_begin, p_log_level_rec);
530 fa_debug_pkg.add('faxexp', 'Japan Tax4:4 Before 2nd faxcde l_dpr.p_cl_end', l_dpr.p_cl_end, p_log_level_rec);
531 fa_debug_pkg.add('faxexp', 'Japan Tax5:5 Calling 2nd faxcde ', 'here', p_log_level_rec);
532 fa_debug_pkg.add('faxexp', 'Japan Tax6:1 Before 2nd faxcde px_asset_fin_rec_new.adjusted_cost',
533 px_asset_fin_rec_new.adjusted_cost, p_log_level_rec);
534 fa_debug_pkg.add('faxexp', 'Japan Tax7:2 Before 2nd faxcde p_asset_deprn_rec.deprn_reserve',
535 p_asset_deprn_rec.deprn_reserve, p_log_level_rec);
536 fa_debug_pkg.add('faxexp', 'Japan Tax8:3 Before 2nd faxcde px_asset_fin_rec_new.cost ',
537 px_asset_fin_rec_new.cost, p_log_level_rec);
538 fa_debug_pkg.add('faxexp', 'Japan Tax9:4 Before 2nd faxcde px_asset_fin_rec_new.allowed_deprn_limit_amount',
539 px_asset_fin_rec_new.allowed_deprn_limit_amount, p_log_level_rec);
540 fa_debug_pkg.add('faxexp', 'Japan Tax0:6 Before 2nd faxcde px_asset_fin_rec_new.adjusted_recoverable_cost ',
541 px_asset_fin_rec_new.adjusted_recoverable_cost , p_log_level_rec);
542 end if;
543
544 IF NVL(px_trans_rec.calling_interface,'XXX') <> 'FAXASSET' OR
545 px_trans_rec.transaction_type_code <> 'ADDITION' or
546 G_release = 12 THEN
547
548 if not fa_cde_pkg.faxcde(l_dpr,
549 l_dummy_dpr_arr,
550 l_dpr_out,
551 fa_std_types.FA_DPR_NORMAL,
552 p_log_level_rec => p_log_level_rec) then
553 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
554 return (FALSE);
555 end if;
556 END IF;
557
558 X_deprn_exp := l_dpr_out.new_deprn_rsv - l_cur_deprn_rsv;
559
560 -- R12 conditional handling
561 if (G_release <> 11) then
562 X_ann_adj_deprn_exp := l_dpr_out.ann_adj_exp;
563 end if;
564
565 -- pass eofy_reserve to CALL_DEPRN_BASIS
566 px_asset_fin_rec_new.eofy_reserve := l_dpr_out.new_eofy_reserve;
567
568 -- bonus: new_bonus_deprn_rsv added to dpr_out_struct.
569 -- Investigate dpr.bonus_deprn_rsv if value is correct.==> YES!
570 -- Now new_bonus_deprn_rsv needs to be correctly calculated in faxcde.
571 -- Bug no 4962663
572 -- Adding an nvl for l_cur_bonus_deprn_rsv
573 if nvl(px_asset_fin_rec_new.bonus_rule, 'NONE') <> 'NONE' then
574 X_bonus_deprn_exp := l_dpr_out.new_bonus_deprn_rsv - nvl(l_cur_bonus_deprn_rsv,0);
575 else
576 X_bonus_deprn_exp := 0;
577 end if;
578
579 -- R12 conditional handling
580 if (G_release <> 11) then
581 X_ann_adj_bonus_deprn_exp := 0;
582 end if;
583 /*Bug# 8520733 - to reverse impairment reserve when cost adjustment is done to set cost to zero*/
584 if px_asset_fin_rec_new.cost = 0 and
585 px_trans_rec.transaction_type_code = 'ADJUSTMENT' then
586 X_impairment_exp := l_dpr_out.new_impairment_rsv - l_cur_impairment_rsv ;
587 else
588 X_impairment_exp := 0;
589 end if;
590 -- Manual Override
591 if (p_log_level_rec.statement_level) then
592 fa_debug_pkg.add ('faxexp', 'deprn_override_flag', l_dpr_out.deprn_override_flag, p_log_level_rec);
593 end if;
594
595 -- pass override_flag to faxiat
596 px_trans_rec.deprn_override_flag:= l_dpr_out.deprn_override_flag;
597
598 end if;
599 else
600 X_deprn_exp := 0;
601 X_bonus_deprn_exp := 0;
602 X_impairment_exp := 0;
603
604 if (G_release <> 11) then
605 X_ann_adj_deprn_exp := 0;
606 X_ann_adj_bonus_deprn_exp := 0;
607 end if;
608 end if;
609 end if;
610
611 -- NOTE
612 --
613 -- This is incorrect; the annualized adjustment for this should not
614 -- be zero. The correct way to calculate this would be to
615 -- recalculate deprn under the old conditions, and determine what the
616 -- annualized deprn amount is for the current fiscal year. Then
617 -- compare that with the recalculation of deprn under the new
618 -- conditions. The difference is the annualized adjustment amount.
619 -- In order to calculate this, we would need a snapshot of the asset
620 -- before the transaction. Since this requires a significant change
621 -- to the fin_info_struct structure, we will defer the fix until a
622 -- later release. The impact of this is that if the user executes an
623 -- expensed change, and then a prior-period transfer or retirement
624 -- whose effective date is before the current date, the depreciation
625 -- expense transferred will not include any amount relevant to the
626 -- expensed change. -Dave
627 --
628 -- this is handled in faxiat now
629
630 if (not FA_CACHE_PKG.fazccmt(px_asset_fin_rec_new.deprn_method_code,
631 px_asset_fin_rec_new.life_in_months,
632 p_log_level_rec => p_log_level_rec)) then
633 FA_SRVR_MSG.ADD_MESSAGE(CALLING_FN => 'FA_AMORT_PKG.faxraf', p_log_level_rec => p_log_level_rec);
634 return FALSE;
635 end if;
636
637 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
638 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
639
640
641 -- Added for the Depreciable Basis Formula.
642 l_cur_fy := fa_cache_pkg.fazcbc_record.current_fiscal_year;
643 l_cur_per_num := mod(p_period_rec.period_counter,l_cur_fy);
644
645
646 ----------------------------------------------
647 -- Call Depreciable Basis Rule
648 -- for Expensed Adjustment
649 ----------------------------------------------
650 if (l_cur_per_num = 1) then
651 l_hyp_total_ytd := 0;
652 else
653 -- Bug3213016:
654 -- Use l_dpr_out.new_ytd_deprn for new ytd_deprn instead of
655 -- l_dpr_out.new_deprn_rsv - (l_dpr_out.new_prior_fy_exp - l_dpr.prior_fy_exp)
656 --
657 l_hyp_total_ytd := l_dpr_out.new_ytd_deprn;
658 end if;
659
660 -- Japan Tax Phase3 call CALL_DEPRN_BASIS only if
661 if (not (l_set_extend_flag or l_reset_extend_flag)) then
662 --Bug 9110995 FP Bug 8571102
663 --We need to ensure we force the deprn basis for flat/nbv/non_strict_flat
664 --to behave like strict_flat during catchup.
665 --So, we subtract l_hyp_total_ytd from l_hyp_total_rsv/l_hyp_rsv
666 --To force the right basis reset during catchup.
667 --
668 l_hyp_total_rsv := nvl(l_dpr_out.new_deprn_rsv,0);
669 l_hyp_rsv := nvl(l_dpr_out.new_deprn_rsv,0) - nvl(l_dpr_out.new_bonus_deprn_rsv,0);
670 l_hyp_total_ytd := nvl(l_hyp_total_ytd,0);
671 if p_asset_hdr_rec.period_of_addition = 'Y' AND
672 px_trans_rec.transaction_type_code = 'ADDITION' AND
673 fa_cache_pkg.fazccmt_record.deprn_basis_rule = 'NBV' AND
674 ( fa_cache_pkg.fazccmt_record.rate_source_rule = 'FLAT' or --Bug#12603641
675 (fa_cache_pkg.fazcdrd_record.use_eofy_reserve_flag = 'Y' AND
676 fa_cache_pkg.fazccmt_record.rate_source_rule <> 'TABLE') ) AND --bug 14724296
677 nvl(fa_cache_pkg.fazccmt_record.deprn_basis_formula,'X') <> 'STRICT_FLAT' then
678
679 -- During catchup we force normal flat mode to strict flat mode
680 l_hyp_total_rsv := l_hyp_total_rsv - l_hyp_total_ytd;
681 l_hyp_rsv := l_hyp_rsv - l_hyp_total_ytd;
682 end if;
683
684 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS (
685 p_event_type => 'EXPENSED_ADJ',
686 p_asset_fin_rec_new => px_asset_fin_rec_new,
687 p_asset_fin_rec_old => p_asset_fin_rec_old,
688 p_asset_hdr_rec => p_asset_hdr_rec,
689 p_asset_type_rec => p_asset_type_rec,
690 p_asset_deprn_rec => p_asset_deprn_rec,
691 p_trans_rec => px_trans_rec,
692 p_period_rec => p_period_rec,
693 p_recoverable_cost => l_dpr.rec_cost,
694 p_current_total_rsv => l_cur_deprn_rsv,
695 p_current_total_ytd => l_dpr.ytd_deprn,
696 p_hyp_basis => l_dpr_out.new_adj_cost,
697 p_hyp_total_rsv => l_hyp_total_rsv, --bug 9110995 FP bug 8571102
698 p_hyp_rsv => l_hyp_rsv, --bug 9110995 FP bug 8571102
699 p_hyp_total_ytd => l_hyp_total_ytd, --bug 9110995 FP bug 8571102
700 p_mrc_sob_type_code => p_mrc_sob_type_code,
701 px_new_adjusted_cost => px_asset_fin_rec_new.adjusted_cost,
702 px_new_raf => px_asset_fin_rec_new.rate_adjustment_factor,
703 px_new_formula_factor => px_asset_fin_rec_new.formula_factor,
704 p_log_level_rec => p_log_level_rec)) then
705 fa_srvr_msg.add_message (calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
706 return false;
707 end if;
708 end if;
709
710 -- Bug 8726493 overridding the value of adjusted cost in case
711 -- an asset is added with JP-250DB method and backdated DPIS
712 -- and without reserve
713 if px_trans_rec.transaction_type_code = 'ADDITION' and
714 l_dpr.method_code like 'JP-250DB%' then
715 px_asset_fin_rec_new.adjusted_cost := l_dpr_out.new_adj_cost;
716 end if;
717
718 return(TRUE);
719
720 exception
721 when others then
722 fa_srvr_msg.add_sql_error (calling_fn => 'fa_exp_pkg.faxexp', p_log_level_rec => p_log_level_rec);
723 return (FALSE);
724 end FAXEXP;
725
726 END FA_EXP_PVT;