[Home] [Help]
Skip to content
PACKAGE BODY: APPS.FA_RETIREMENT_ADJUSTMENT_PVT
Source
1 PACKAGE BODY FA_RETIREMENT_ADJUSTMENT_PVT AS
2 /* $Header: FAVRADJB.pls 120.11 2009/04/15 15:10:39 bridgway ship $ */
3
4 FUNCTION do_retirement_adjustment
5 (px_trans_rec IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
6 px_asset_hdr_rec IN OUT NOCOPY FA_API_TYPES.asset_hdr_rec_type,
7 p_asset_desc_rec IN FA_API_TYPES.asset_desc_rec_type,
8 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
9 p_asset_cat_rec IN FA_API_TYPES.asset_cat_rec_type,
10 p_asset_fin_rec_old IN FA_API_TYPES.asset_fin_rec_type,
11 x_asset_fin_rec_new OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
12 p_asset_deprn_rec_old IN FA_API_TYPES.asset_deprn_rec_type,
13 x_asset_deprn_rec_new OUT NOCOPY FA_API_TYPES.asset_deprn_rec_type,
14 p_period_rec IN FA_API_TYPES.period_rec_type,
15 p_mrc_sob_type_code IN VARCHAR2,
16 p_cost_of_removal IN NUMBER,
17 p_proceeds IN NUMBER,
18 p_cost_of_removal_ccid IN NUMBER DEFAULT NULL,
19 p_proceeds_ccid IN NUMBER DEFAULT NULL
20 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
21
22 -- used for new group code
23 l_adj fa_adjust_type_pkg.fa_adj_row_struct;
24 l_bks_rowid varchar2(30);
25 l_status BOOLEAN;
26
27 -- used for depreciable basis rule
28 l_asset_retire_rec fa_api_types.asset_retire_rec_type;
29 l_asset_deprn_rec fa_api_types.asset_deprn_rec_type;
30
31 --
32 -- For calling faxama.
33 --
34 l_deprn_exp NUMBER := 0;
35 l_bonus_deprn_exp NUMBER := 0;
36 l_impairment_exp NUMBER := 0;
37 l_deprn_rsv NUMBER := 0;
38 l_asset_deprn_rec_adj FA_API_TYPES.ASSET_DEPRN_REC_TYPE;
39
40 l_calling_fn VARCHAR2(35) := 'fa_group_reserve_pvt.do_transfer';
41 adj_err EXCEPTION;
42
43 BEGIN
44
45 -- call the category books cache for the accounts
46 if not fa_cache_pkg.fazccb(X_book => px_asset_hdr_rec.book_type_code,
47 X_cat_id => p_asset_cat_rec.category_id, p_log_level_rec => p_log_level_rec) then
48 raise adj_err;
49 end if;
50
51 -- set the new structs to the old ones
52 -- (values which changes such as adjusted_cost will be set below)
53 x_asset_fin_rec_new := p_asset_fin_rec_old;
54 x_asset_deprn_rec_new := p_asset_deprn_rec_old;
55
56 -- Use Depreciable Basis Rule
57 l_asset_retire_rec.proceeds_of_sale := p_proceeds;
58 l_asset_retire_rec.cost_of_removal := p_cost_of_removal;
59 l_asset_retire_rec.cost_retired := p_asset_fin_rec_old.cost
60 - x_asset_fin_rec_new.cost;
61 l_asset_deprn_rec := x_asset_deprn_rec_new;
62 l_asset_deprn_rec.deprn_reserve := nvl(x_asset_deprn_rec_new.deprn_reserve,0)
63 + nvl(p_proceeds,0)-nvl(p_cost_of_removal,0);
64
65 -- Call Depreciable Basis Rule
66 if (not FA_CALC_DEPRN_BASIS1_PKG.CALL_DEPRN_BASIS
67 (p_event_type => 'RETIREMENT',
68 p_asset_fin_rec_new => x_asset_fin_rec_new,
69 p_asset_fin_rec_old => p_asset_fin_rec_old,
70 p_asset_hdr_rec => px_asset_hdr_rec,
71 p_asset_type_rec => p_asset_type_rec,
72 p_trans_rec => px_trans_rec,
73 p_period_rec => p_period_rec,
74 p_asset_retire_rec => l_asset_retire_rec,
75 p_asset_deprn_rec => l_asset_deprn_rec,
76 p_recoverable_cost => x_asset_fin_rec_new.recoverable_cost,
77 p_salvage_value => x_asset_fin_rec_new.salvage_value,
78 p_mrc_sob_type_code => p_mrc_sob_type_code,
79 px_new_adjusted_cost => x_asset_fin_rec_new.adjusted_cost,
80 px_new_raf => x_asset_fin_rec_new.rate_adjustment_factor,
81 px_new_formula_factor => x_asset_fin_rec_new.formula_factor,
82 p_log_level_rec => p_log_level_rec)
83 ) then
84 fa_srvr_msg.add_message(calling_fn =>l_calling_fn, p_log_level_rec => p_log_level_rec);
85 RETURN FALSE;
86 end if;
87
88 l_asset_deprn_rec_adj.deprn_reserve := nvl(p_proceeds, 0) - nvl(p_cost_of_removal, 0);
89
90 if (not FA_AMORT_PVT.faxama(
91 px_trans_rec => px_trans_rec,
92 p_asset_hdr_rec => px_asset_hdr_rec,
93 p_asset_desc_rec => p_asset_desc_rec,
94 p_asset_cat_rec => p_asset_cat_rec,
95 p_asset_type_rec => p_asset_type_rec,
96 p_asset_fin_rec_old => p_asset_fin_rec_old,
97 px_asset_fin_rec_new => x_asset_fin_rec_new,
98 p_asset_deprn_rec => p_asset_deprn_rec_old,
99 p_asset_deprn_rec_adj => l_asset_deprn_rec_adj,
100 p_period_rec => p_period_rec,
101 p_mrc_sob_type_code => p_mrc_sob_type_code,
102 p_running_mode => fa_std_types.FA_DPR_NORMAL,
103 p_used_by_revaluation => null,
104 p_reclassed_asset_id => null,
105 p_reclass_src_dest => null,
106 p_reclassed_asset_dpis => null,
107 p_update_books_summary => TRUE,
108 p_proceeds_of_sale => p_proceeds,
109 p_cost_of_removal => p_cost_of_removal,
110 x_deprn_exp => l_deprn_exp,
111 x_bonus_deprn_exp => l_bonus_deprn_exp,
112 x_impairment_exp => l_impairment_exp,
113 x_deprn_rsv => l_deprn_rsv, p_log_level_rec => p_log_level_rec)) then
114
115 if (p_log_level_rec.statement_level) then
116 fa_debug_pkg.add('l_calling_fn', 'calling FA_AMORT_PVT.faxama', 'FAILED', p_log_level_rec => p_log_level_rec);
117 end if;
118 raise adj_err;
119
120 end if; -- (not FA_AMORT_PVT.faxama
121
122 -- call faxinaj to insert the amounts (flush them too)
123 l_adj.transaction_header_id := px_trans_rec.transaction_header_id;
124 l_adj.asset_id := px_asset_hdr_rec.asset_id;
125 l_adj.book_type_code := px_asset_hdr_rec.book_type_code;
126 l_adj.period_counter_created := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
127 l_adj.period_counter_adjusted := fa_cache_pkg.fazcbc_record.last_period_counter + 1;
128 l_adj.current_units := p_asset_desc_rec.current_units;
129 l_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
130 l_adj.selection_thid := 0;
131 l_adj.selection_retid := 0;
132 l_adj.leveling_flag := TRUE;
133 l_adj.last_update_date := px_trans_rec.who_info.last_update_date;
134
135 l_adj.annualized_adjustment := 0;
136 l_adj.asset_invoice_id := 0;
137 l_adj.distribution_id := 0;
138
139 l_adj.flush_adj_flag := TRUE;
140 l_adj.deprn_override_flag:= '';
141
142 l_adj.mrc_sob_type_code := p_mrc_sob_type_code;
143 l_adj.set_of_books_id := px_asset_hdr_rec.set_of_books_id;
144
145 l_adj.source_type_code := 'RETIREMENT';
146
147 -- cost of removal amounts
148 if nvl(p_cost_of_removal, 0) <> 0 then
149
150 if (p_log_level_rec.statement_level) then
151 fa_debug_pkg.add(l_calling_fn || ' for cor ',
152 'thid',
153 l_adj.transaction_header_id, p_log_level_rec => p_log_level_rec);
154 end if;
155
156
157 l_adj.debit_credit_flag := 'DR';
158 l_adj.adjustment_type := 'RESERVE'; -- GRP COR RESERVE ???
159 l_adj.adjustment_amount := p_cost_of_removal;
160 l_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
161 l_adj.account_type := 'DEPRN_RESERVE_ACCT';
162 l_adj.code_combination_id := 0;
163 l_adj.gen_ccid_flag := TRUE;
164
165 if not FA_INS_ADJUST_PKG.faxinaj
166 (l_adj,
167 px_trans_rec.who_info.last_update_date,
168 px_trans_rec.who_info.last_updated_by,
169 px_trans_rec.who_info.last_update_login, p_log_level_rec => p_log_level_rec) then
170 raise adj_err;
171 end if;
172
173 if (p_cost_of_removal_ccid is null) then
174 l_adj.account := fa_cache_pkg.fazcbc_record.cost_of_removal_clearing_acct;
175 l_adj.code_combination_id := 0;
176 l_adj.gen_ccid_flag := TRUE;
177 else
178 l_adj.code_combination_id := p_cost_of_removal_ccid;
179 l_adj.gen_ccid_flag := FALSE;
180 end if;
181
182 l_adj.account_type := 'COST_OF_REMOVAL_CLEARING_ACCT';
183 l_adj.adjustment_type := 'REMOVALCOST CLR';
184 l_adj.debit_credit_flag := 'CR';
185
186 if not FA_INS_ADJUST_PKG.faxinaj
187 (l_adj,
188 px_trans_rec.who_info.last_update_date,
189 px_trans_rec.who_info.last_updated_by,
190 px_trans_rec.who_info.last_update_login, p_log_level_rec => p_log_level_rec) then
191 raise adj_err;
192 end if;
193
194 end if;
195
196 -- proceeds of sale
197 if nvl(p_proceeds, 0) <> 0 then
198
199 if (p_log_level_rec.statement_level) then
200 fa_debug_pkg.add(l_calling_fn || ' for proceeds ',
201 'thid',
202 l_adj.transaction_header_id, p_log_level_rec => p_log_level_rec);
203 end if;
204
205
206 l_adj.debit_credit_flag := 'CR';
207 l_adj.adjustment_type := 'RESERVE'; -- GRP PRC RESERVE ???
208 l_adj.adjustment_amount := p_proceeds;
209 l_adj.account := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
210 l_adj.account_type := 'DEPRN_RESERVE_ACCT';
211 l_adj.code_combination_id := 0;
212 l_adj.gen_ccid_flag := TRUE;
213
214 if not FA_INS_ADJUST_PKG.faxinaj
215 (l_adj,
216 px_trans_rec.who_info.last_update_date,
217 px_trans_rec.who_info.last_updated_by,
218 px_trans_rec.who_info.last_update_login, p_log_level_rec => p_log_level_rec) then
219 raise adj_err;
220 end if;
221
222 if (p_proceeds_ccid is null) then
223 l_adj.account := fa_cache_pkg.fazcbc_record.proceeds_of_sale_clearing_acct;
224 l_adj.code_combination_id := 0;
225 l_adj.gen_ccid_flag := TRUE;
226 else
227 l_adj.code_combination_id := p_proceeds_ccid;
228 l_adj.gen_ccid_flag := FALSE;
229 end if;
230
231 l_adj.account_type := 'PROCEEDS_OF_SALE_CLEARING_ACCT';
232 l_adj.adjustment_type := 'PROCEEDS CLR';
233 l_adj.debit_credit_flag := 'DR';
234
235 if not FA_INS_ADJUST_PKG.faxinaj
236 (l_adj,
237 px_trans_rec.who_info.last_update_date,
238 px_trans_rec.who_info.last_updated_by,
239 px_trans_rec.who_info.last_update_login, p_log_level_rec => p_log_level_rec) then
240 raise adj_err;
241 end if;
242
243 end if;
244
245 /*****************************************************
246
247 -- for life based methods, this where we would need to
248 -- recalculate raf, etc
249
250 *****************************************************/
251
252
253 -- terminate/insert fa_books rows
254 -- terminate the active row
255
256 fa_books_pkg.deactivate_row
257 (X_asset_id => px_asset_hdr_rec.asset_id,
258 X_book_type_code => px_asset_hdr_rec.book_type_code,
259 X_transaction_header_id_out => px_trans_rec.transaction_header_id,
260 X_date_ineffective => px_trans_rec.who_info.last_update_date,
261 X_mrc_sob_type_code => p_mrc_sob_type_code,
262 X_set_of_books_id => px_asset_hdr_rec.set_of_books_id,
263 X_Calling_Fn => l_calling_fn
264 , p_log_level_rec => p_log_level_rec);
265
266 -- fa books
267 fa_books_pkg.insert_row
268 (X_Rowid => l_bks_rowid,
269 X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
270 X_Asset_Id => px_asset_hdr_rec.asset_id,
271 X_Date_Placed_In_Service => x_asset_fin_rec_new.date_placed_in_service,
272 X_Date_Effective => px_trans_rec.who_info.last_update_date,
273 X_Deprn_Start_Date => x_asset_fin_rec_new.deprn_start_date,
274 X_Deprn_Method_Code => x_asset_fin_rec_new.deprn_method_code,
275 X_Life_In_Months => x_asset_fin_rec_new.life_in_months,
276 X_Rate_Adjustment_Factor => x_asset_fin_rec_new.rate_adjustment_factor,
277 X_Adjusted_Cost => x_asset_fin_rec_new.adjusted_cost,
278 X_Cost => x_asset_fin_rec_new.cost,
279 X_Original_Cost => x_asset_fin_rec_new.original_cost,
280 X_Salvage_Value => x_asset_fin_rec_new.salvage_value,
281 X_Prorate_Convention_Code => x_asset_fin_rec_new.prorate_convention_code,
282 X_Prorate_Date => x_asset_fin_rec_new.prorate_date,
283 X_Cost_Change_Flag => x_asset_fin_rec_new.cost_change_flag,
284 X_Adjustment_Required_Status => x_asset_fin_rec_new.adjustment_required_status,
285 X_Capitalize_Flag => x_asset_fin_rec_new.capitalize_flag,
286 X_Retirement_Pending_Flag => x_asset_fin_rec_new.retirement_pending_flag,
287 X_Depreciate_Flag => x_asset_fin_rec_new.depreciate_flag,
288 X_Disabled_Flag => x_asset_fin_rec_new.disabled_flag,--HH
289 X_Last_Update_Date => px_trans_rec.who_info.last_update_date,
290 X_Last_Updated_By => px_trans_rec.who_info.last_updated_by,
291 X_Date_Ineffective => NULL,
292 X_Transaction_Header_Id_In => px_trans_rec.transaction_header_id,
293 X_Transaction_Header_Id_Out => NULL,
294 X_Itc_Amount_Id => x_asset_fin_rec_new.itc_amount_id,
295 X_Itc_Amount => x_asset_fin_rec_new.itc_amount,
296 X_Retirement_Id => x_asset_fin_rec_new.retirement_id,
297 X_Tax_Request_Id => x_asset_fin_rec_new.tax_request_id,
298 X_Itc_Basis => x_asset_fin_rec_new.itc_basis,
299 X_Basic_Rate => x_asset_fin_rec_new.basic_rate,
300 X_Adjusted_Rate => x_asset_fin_rec_new.adjusted_rate,
301 X_Bonus_Rule => x_asset_fin_rec_new.bonus_rule,
302 X_Ceiling_Name => x_asset_fin_rec_new.ceiling_name,
303 X_Recoverable_Cost => x_asset_fin_rec_new.recoverable_cost,
304 X_Last_Update_Login => px_trans_rec.who_info.last_update_login,
305 X_Adjusted_Capacity => x_asset_fin_rec_new.adjusted_capacity,
306 X_Fully_Rsvd_Revals_Counter => x_asset_fin_rec_new.fully_rsvd_revals_counter,
307 X_Idled_Flag => x_asset_fin_rec_new.idled_flag,
308 X_Period_Counter_Capitalized => x_asset_fin_rec_new.period_counter_capitalized,
309 X_PC_Fully_Reserved => x_asset_fin_rec_new.period_counter_fully_reserved,
310 X_Period_Counter_Fully_Retired => x_asset_fin_rec_new.period_counter_fully_retired,
311 X_Production_Capacity => x_asset_fin_rec_new.production_capacity,
312 X_Reval_Amortization_Basis => x_asset_fin_rec_new.reval_amortization_basis,
313 X_Reval_Ceiling => x_asset_fin_rec_new.reval_ceiling,
314 X_Unit_Of_Measure => x_asset_fin_rec_new.unit_of_measure,
315 X_Unrevalued_Cost => x_asset_fin_rec_new.unrevalued_cost,
316 X_Annual_Deprn_Rounding_Flag => x_asset_fin_rec_new.annual_deprn_rounding_flag,
317 X_Percent_Salvage_Value => x_asset_fin_rec_new.percent_salvage_value,
318 X_Allowed_Deprn_Limit => x_asset_fin_rec_new.allowed_deprn_limit,
319 X_Allowed_Deprn_Limit_Amount => x_asset_fin_rec_new.allowed_deprn_limit_amount,
320 X_Period_Counter_Life_Complete => x_asset_fin_rec_new.period_counter_life_complete,
321 X_Adjusted_Recoverable_Cost => x_asset_fin_rec_new.adjusted_recoverable_cost,
322 X_Short_Fiscal_Year_Flag => x_asset_fin_rec_new.short_fiscal_year_flag,
323 X_Conversion_Date => x_asset_fin_rec_new.conversion_date,
324 X_Orig_Deprn_Start_Date => x_asset_fin_rec_new.orig_deprn_start_date,
325 X_Remaining_Life1 => x_asset_fin_rec_new.remaining_life1,
326 X_Remaining_Life2 => x_asset_fin_rec_new.remaining_life2,
327 X_Old_Adj_Cost => x_asset_fin_rec_new.old_adjusted_cost,
328 X_Formula_Factor => x_asset_fin_rec_new.formula_factor,
329 X_gf_Attribute1 => x_asset_fin_rec_new.global_attribute1,
330 X_gf_Attribute2 => x_asset_fin_rec_new.global_attribute2,
331 X_gf_Attribute3 => x_asset_fin_rec_new.global_attribute3,
332 X_gf_Attribute4 => x_asset_fin_rec_new.global_attribute4,
333 X_gf_Attribute5 => x_asset_fin_rec_new.global_attribute5,
334 X_gf_Attribute6 => x_asset_fin_rec_new.global_attribute6,
335 X_gf_Attribute7 => x_asset_fin_rec_new.global_attribute7,
336 X_gf_Attribute8 => x_asset_fin_rec_new.global_attribute8,
337 X_gf_Attribute9 => x_asset_fin_rec_new.global_attribute9,
338 X_gf_Attribute10 => x_asset_fin_rec_new.global_attribute10,
339 X_gf_Attribute11 => x_asset_fin_rec_new.global_attribute11,
340 X_gf_Attribute12 => x_asset_fin_rec_new.global_attribute12,
341 X_gf_Attribute13 => x_asset_fin_rec_new.global_attribute13,
342 X_gf_Attribute14 => x_asset_fin_rec_new.global_attribute14,
343 X_gf_Attribute15 => x_asset_fin_rec_new.global_attribute15,
344 X_gf_Attribute16 => x_asset_fin_rec_new.global_attribute16,
345 X_gf_Attribute17 => x_asset_fin_rec_new.global_attribute17,
346 X_gf_Attribute18 => x_asset_fin_rec_new.global_attribute18,
347 X_gf_Attribute19 => x_asset_fin_rec_new.global_attribute19,
348 X_gf_Attribute20 => x_asset_fin_rec_new.global_attribute20,
349 X_global_attribute_category => x_asset_fin_rec_new.global_attribute_category,
350 X_group_asset_id => x_asset_fin_rec_new.group_asset_id,
351 X_salvage_type => x_asset_fin_rec_new.salvage_type,
352 X_deprn_limit_type => x_asset_fin_rec_new.deprn_limit_type,
353 X_over_depreciate_option => x_asset_fin_rec_new.over_depreciate_option,
354 X_super_group_id => x_asset_fin_rec_new.super_group_id,
355 X_reduction_rate => x_asset_fin_rec_new.reduction_rate,
356 X_reduce_addition_flag => x_asset_fin_rec_new.reduce_addition_flag,
357 X_reduce_adjustment_flag => x_asset_fin_rec_new.reduce_adjustment_flag,
358 X_reduce_retirement_flag => x_asset_fin_rec_new.reduce_retirement_flag,
359 X_recognize_gain_loss => x_asset_fin_rec_new.recognize_gain_loss,
360 X_recapture_reserve_flag => x_asset_fin_rec_new.recapture_reserve_flag,
361 X_limit_proceeds_flag => x_asset_fin_rec_new.limit_proceeds_flag,
362 X_terminal_gain_loss => x_asset_fin_rec_new.terminal_gain_loss,
363 X_exclude_proceeds_from_basis => x_asset_fin_rec_new.exclude_proceeds_from_basis,
364 X_retirement_deprn_option => x_asset_fin_rec_new.retirement_deprn_option,
365 X_tracking_method => x_asset_fin_rec_new.tracking_method,
366 X_allocate_to_fully_rsv_flag =>x_asset_fin_rec_new.allocate_to_fully_rsv_flag,
367 X_allocate_to_fully_ret_flag =>x_asset_fin_rec_new.allocate_to_fully_ret_flag,
368 X_exclude_fully_rsv_flag => x_asset_fin_rec_new.exclude_fully_rsv_flag,
369 X_excess_allocation_option => x_asset_fin_rec_new.excess_allocation_option,
370 X_depreciation_option => x_asset_fin_rec_new.depreciation_option,
371 X_member_rollup_flag => x_asset_fin_rec_new.member_rollup_flag,
372 X_ytd_proceeds => nvl(x_asset_fin_rec_new.ytd_proceeds, 0) + p_proceeds,
373 X_ltd_proceeds => nvl(x_asset_fin_rec_new.ltd_proceeds, 0) + p_proceeds,
374 X_eofy_reserve => x_asset_fin_rec_new.eofy_reserve,
375 X_terminal_gain_loss_amount => x_asset_fin_rec_new.terminal_gain_loss_amount,
376 X_ltd_cost_of_removal => nvl(x_asset_fin_rec_new.ltd_cost_of_removal, 0) +
377 p_cost_of_removal,
378 X_mrc_sob_type_code => p_mrc_sob_type_code,
379 X_set_of_books_id => px_asset_hdr_rec.set_of_books_id,
380 X_Return_Status => l_status,
381 X_Calling_Fn => l_calling_fn,
382 p_log_level_rec => p_log_level_rec
383 );
384
385 if not l_status then
386 raise adj_err;
387 end if;
388
389 return true;
390
391 EXCEPTION
392 when adj_err then
393 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
394 return false;
395 when others then
396 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
397 return false;
398
399 END do_retirement_adjustment;
400
401 END FA_RETIREMENT_ADJUSTMENT_PVT;