[Home] [Help]
PACKAGE BODY: APPS.FA_ADJUSTMENT_PVT
Source
1 PACKAGE BODY FA_ADJUSTMENT_PVT as
2 /* $Header: FAVADJB.pls 120.48.12010000.3 2008/08/14 00:55:03 tkawamur ship $ */
3
4 FUNCTION do_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 p_asset_fin_rec_adj IN FA_API_TYPES.asset_fin_rec_type,
12 x_asset_fin_rec_new OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
13 p_inv_trans_rec IN FA_API_TYPES.inv_trans_rec_type,
14 p_asset_deprn_rec_old IN FA_API_TYPES.asset_deprn_rec_type,
15 p_asset_deprn_rec_adj IN FA_API_TYPES.asset_deprn_rec_type,
16 x_asset_deprn_rec_new OUT NOCOPY FA_API_TYPES.asset_deprn_rec_type,
17 p_period_rec IN FA_API_TYPES.period_rec_type,
18 p_reclassed_asset_id IN NUMBER default null,
19 p_reclass_src_dest IN VARCHAR2 default null,
20 p_reclassed_asset_dpis IN DATE default null,
21 p_mrc_sob_type_code IN VARCHAR2,
22 p_group_reclass_options_rec IN OUT NOCOPY FA_API_TYPES.group_reclass_options_rec_type,
23 p_calling_fn IN VARCHAR2,
24 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null) RETURN BOOLEAN IS
25
26 l_th_rowid varchar2(30);
27 l_bks_rowid varchar2(30);
28
29 l_status boolean;
30 l_ret_status varchar2(1);
31
32 l_old_transaction_type_code varchar2(30);
33 l_period_counter number;
34
35 l_deprn_exp number;
36 l_bonus_deprn_exp number;
37 l_deprn_adjustment_amount number;
38 l_deprn_exp_amort_nbv number;
39
40 l_raf number;
41
42 l_calling_fn varchar2(35) := 'fa_adjustment_pvt.do_adjustment';
43 deprn_override_flag_default varchar2(1);
44
45 l_reserve_adjustment_amount number;
46 l_asset_fin_rec_null FA_API_TYPES.asset_fin_rec_type;
47
48 adj_err EXCEPTION;
49
50 -- Track Member
51 l_ret_code number;
52 l_group_level_override VARCHAR2(1) := 'Y';
53 x_group_deprn_amount number;
54 x_group_bonus_amount number;
55
56 --Bug3548724
57 l_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type;
58
59 -- SLA
60 l_event_status varchar2(15);
61 l_event_type_code varchar2(30);
62
63 -- Bug 6665510: FP: Japan Tax Reform Project
64 l_method_type NUMBER := 0;
65 l_success INTEGER;
66 l_rate_in_use NUMBER;
67 BEGIN
68
69 --set up transaction types for adjustments vs. addition voids
70
71 -- SLA UPTAKE
72 -- removing section for void processing as its obsolete
73
74 /*
75 if (px_asset_hdr_rec.period_of_addition = 'Y') then
76 if (p_asset_type_rec.asset_type = 'CIP') then
77 px_trans_rec.transaction_type_code := 'CIP ADDITION';
78 l_old_transaction_type_code := 'CIP ADDITION';
79 elsif (p_asset_type_rec.asset_type = 'GROUP') then
80 px_trans_rec.transaction_type_code := 'GROUP ADDITION';
81 l_old_transaction_type_code := 'GROUP ADDITION';
82 else
83 px_trans_rec.transaction_type_code := 'ADDITION';
84 l_old_transaction_type_code := 'ADDITION';
85 end if;
86 else
87 if (p_asset_type_rec.asset_type = 'CIP') then
88 px_trans_rec.transaction_type_code := 'CIP ADJUSTMENT';
89 l_old_transaction_type_code := 'CIP ADJUSTMENT';
90 elsif (p_asset_type_rec.asset_type = 'GROUP') then
91 l_old_transaction_type_code := 'GROUP ADJUSTMENT';
92 else
93 px_trans_rec.transaction_type_code := 'ADJUSTMENT';
94 l_old_transaction_type_code := 'ADJUSTMENT';
95 end if;
96 end if;
97 */
98
99 deprn_override_flag_default:= fa_std_types.FA_NO_OVERRIDE;
100
101 -- call the calulation engine - see comments below for FA_ADJ
102
103 if not FA_ASSET_CALC_PVT.calc_fin_info
104 (px_trans_rec => px_trans_rec,
105 p_inv_trans_rec => p_inv_trans_rec,
106 p_asset_hdr_rec => px_asset_hdr_rec ,
107 p_asset_desc_rec => p_asset_desc_rec,
108 p_asset_type_rec => p_asset_type_rec,
109 p_asset_cat_rec => p_asset_cat_rec,
110 p_asset_fin_rec_old => p_asset_fin_rec_old,
111 p_asset_fin_rec_adj => p_asset_fin_rec_adj,
112 px_asset_fin_rec_new => x_asset_fin_rec_new,
113 p_asset_deprn_rec_old => p_asset_deprn_rec_old,
114 p_asset_deprn_rec_adj => p_asset_deprn_rec_adj,
115 px_asset_deprn_rec_new => x_asset_deprn_rec_new,
116 p_period_rec => p_period_rec,
117 p_reclassed_asset_id => p_reclassed_asset_id,
118 p_reclass_src_dest => p_reclass_src_dest,
119 p_reclassed_asset_dpis => p_reclassed_asset_dpis,
120 p_mrc_sob_type_code => p_mrc_sob_type_code,
121 p_group_reclass_options_rec => p_group_reclass_options_rec,
122 p_calling_fn => l_calling_fn
123 ,p_log_level_rec => p_log_level_rec) then raise adj_err;
124 end if;
125
126 -- call the table handlers to process the adjustment
127
128 -- transaction headers
129
130 if (p_mrc_sob_type_code <> 'R') then
131
132 -- validate call is done from public package now
133
134 -- do th processing
135 -- SLA UPTAKE
136 -- removing the vois process as its obsolete
137
138 if (px_asset_hdr_rec.period_of_addition = 'Y') then
139 /*
140 FA_TRANSACTION_HEADERS_PKG.Update_Trx_Type
141 (X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
142 X_Asset_Id => px_asset_hdr_rec.asset_id,
143 X_Transaction_Type_Code => l_old_transaction_type_code,
144 X_New_Transaction_Type => l_old_transaction_type_code || '/VOID',
145 X_Return_Status => l_status,
146 X_Calling_Fn => l_calling_fn
147 ,p_log_level_rec => p_log_level_rec);
148
149 if not l_status then
150 raise adj_err;
151 end if;
152 */
153
154 -- for amortize nbv, these need to be set correctly
155 -- outside the period of addition trx date is already the amort date
156 -- BUG# 2425540 - only set the amort_start_date for amort trxs
157
158 -- group - this is iffy!!!! do we want trx_date to be dpis in period of add?
159 -- whole section if iffy - why are we resetting amort start date here???
160 -- should be able to modify reclass engine to redefault the info instead
161 -- of exlcuding it here
162 /*
163 if (px_trans_rec.transaction_subtype = 'AMORTIZED' and
164 p_asset_type_rec.asset_type <> 'GROUP') then
165 px_trans_rec.amortization_start_date := px_trans_rec.transaction_date_entered;
166 end if;
167 */
168
169 -- SLA UPTAKE
170 -- set the trx_date to dpis only if there is a change
171 -- if (p_asset_type_rec.asset_type <> 'GROUP') then
172 if (p_asset_fin_rec_old.date_placed_in_service <> x_asset_fin_rec_new.date_placed_in_service) then
173 px_trans_rec.transaction_date_entered := x_asset_fin_rec_new.date_placed_in_service;
174 end if;
175
176 end if;
177
178 -- SLA UPTAKE
179 -- assign an event for the transaction
180 -- at this point key info asset/book/trx info is known from above code
181 -- *** but trx_date_entered may not be correct! - revisit ***
182 --
183 -- do not assign when this is called from invoice api for like
184 -- asset types - an event is already assigned and do not call
185 -- when this is called for a group asset from the driving member
186
187 if (nvl(p_inv_trans_rec.transaction_type, 'X') <> 'INVOICE TRANSFER' and
188 p_calling_fn = 'fa_adjustment_pub.do_all_books' and
189 px_trans_rec.member_transaction_header_id is null) then
190
191 if (x_asset_fin_rec_new.adjustment_required_status = 'GADJ') then
192 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
193 else
194 l_event_status := null; -- default
195 end if;
196
197 if not FA_XLA_EVENTS_PVT.create_transaction_event
198 (p_asset_hdr_rec => px_asset_hdr_rec,
199 p_asset_type_rec => p_asset_type_rec,
200 px_trans_rec => px_trans_rec,
201 p_event_status => l_event_status,
202 p_calling_fn => l_calling_fn
203 ,p_log_level_rec => p_log_level_rec) then
204 raise adj_err;
205 end if;
206
207 elsif (x_asset_fin_rec_new.adjustment_required_status = 'GADJ') then
208 -- enter here if member driven and deferred calculations
209
210 select event_type_code
211 into l_event_type_code
212 from xla_events
213 where application_id = 140
214 and event_id = px_trans_rec.event_id;
215
216 if (l_event_type_code in ('SOURCE_LINE_TRANSFERS',
217 'CIP_SOURCE_LINE_TRANSFERS')) then
218
219 if not fa_xla_events_pvt.update_inter_transaction_event
220 (p_ledger_id => px_asset_hdr_rec.set_of_books_id,
221 p_trx_reference_id => px_trans_rec.trx_reference_id,
222 p_book_type_code => px_asset_hdr_rec.book_type_code,
223 p_event_type_code => l_event_type_code,
224 p_event_date => px_trans_rec.transaction_date_entered,
225 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
226 p_calling_fn => l_calling_fn,
227 p_log_level_rec => p_log_level_rec) then
228 raise adj_err;
229 end if;
230
231 else -- non inter asset trx
232
233 if not fa_xla_events_pvt.update_transaction_event
234 (p_ledger_id => px_asset_hdr_rec.set_of_books_id,
235 p_transaction_header_id => px_trans_rec.member_transaction_header_id,
236 p_book_type_code => px_asset_hdr_rec.book_type_code,
237 p_event_type_code => l_event_type_code,
238 p_event_date => px_trans_rec.transaction_date_entered,
239 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
240 p_calling_fn => l_calling_fn,
241 p_log_level_rec => p_log_level_rec) then
242 raise adj_err;
243 end if;
244
245 end if;
246
247 end if;
248
249 if (p_log_level_rec.statement_level) then
250 fa_debug_pkg.add('pvt adj api', 'trx_date before insert',
251 px_trans_rec.transaction_date_entered,
252 p_log_level_rec => p_log_level_rec);
253 end if;
254
255
256 FA_TRANSACTION_HEADERS_PKG.Insert_Row
257 (X_Rowid => l_th_rowid,
258 X_Transaction_Header_Id => px_trans_rec.transaction_header_id,
259 X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
260 X_Asset_Id => px_asset_hdr_rec.asset_id,
261 X_Transaction_Type_Code => px_trans_rec.transaction_type_code,
262 X_Transaction_Date_Entered => px_trans_rec.transaction_date_entered,
263 X_Date_Effective => px_trans_rec.who_info.creation_date,
264 X_Last_Update_Date => px_trans_rec.who_info.last_update_date,
265 X_Last_Updated_By => px_trans_rec.who_info.last_updated_by,
266 X_Transaction_Name => px_trans_rec.transaction_name,
267 X_Invoice_Transaction_Id => p_inv_trans_rec.invoice_transaction_id ,
268 X_Source_Transaction_Header_Id => px_trans_rec.Source_Transaction_Header_Id,
269 X_Mass_Reference_Id => px_trans_rec.mass_reference_id,
270 X_Last_Update_Login => px_trans_rec.who_info.last_update_login,
271 X_Transaction_Subtype => px_trans_rec.transaction_subtype,
272 X_Attribute1 => px_trans_rec.desc_flex.attribute1,
273 X_Attribute2 => px_trans_rec.desc_flex.attribute2,
274 X_Attribute3 => px_trans_rec.desc_flex.attribute3,
275 X_Attribute4 => px_trans_rec.desc_flex.attribute4,
276 X_Attribute5 => px_trans_rec.desc_flex.attribute5,
277 X_Attribute6 => px_trans_rec.desc_flex.attribute6,
278 X_Attribute7 => px_trans_rec.desc_flex.attribute7,
279 X_Attribute8 => px_trans_rec.desc_flex.attribute8,
280 X_Attribute9 => px_trans_rec.desc_flex.attribute9,
281 X_Attribute10 => px_trans_rec.desc_flex.attribute10,
282 X_Attribute11 => px_trans_rec.desc_flex.attribute11,
283 X_Attribute12 => px_trans_rec.desc_flex.attribute12,
284 X_Attribute13 => px_trans_rec.desc_flex.attribute13,
285 X_Attribute14 => px_trans_rec.desc_flex.attribute14,
286 X_Attribute15 => px_trans_rec.desc_flex.attribute15,
287 X_Attribute_Category_Code => px_trans_rec.desc_flex.attribute_category_code,
288 X_Transaction_Key => px_trans_rec.transaction_key,
289 X_Amortization_Start_Date => px_trans_rec.amortization_start_date,
290 X_Calling_Interface => px_trans_rec.calling_interface,
291 X_Mass_Transaction_ID => px_trans_rec.mass_transaction_id,
292 X_Member_Transaction_Header_Id => px_trans_rec.member_transaction_header_id,
293 X_Trx_Reference_Id => px_trans_rec.trx_reference_id,
294 X_Event_Id => px_trans_rec.event_id,
295 X_Return_Status => l_status,
296 X_Calling_Fn => l_calling_fn
297 ,p_log_level_rec => p_log_level_rec);
298 if not l_status then
299 raise adj_err;
300 end if;
301 end if;
302
303 -- terminate the active row
304 fa_books_pkg.deactivate_row
305 (X_asset_id => px_asset_hdr_rec.asset_id,
306 X_book_type_code => px_asset_hdr_rec.book_type_code,
307 X_transaction_header_id_out => px_trans_rec.transaction_header_id,
308 X_date_ineffective => px_trans_rec.who_info.last_update_date,
309 X_mrc_sob_type_code => p_mrc_sob_type_code,
310 X_Calling_Fn => l_calling_fn
311 ,p_log_level_rec => p_log_level_rec);
312
313 -- fa books
314 fa_books_pkg.insert_row
315 (X_Rowid => l_bks_rowid,
316 X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
317 X_Asset_Id => px_asset_hdr_rec.asset_id,
318 X_Date_Placed_In_Service => x_asset_fin_rec_new.date_placed_in_service,
319 X_Date_Effective => px_trans_rec.who_info.last_update_date,
320 X_Deprn_Start_Date => x_asset_fin_rec_new.deprn_start_date,
321 X_Deprn_Method_Code => x_asset_fin_rec_new.deprn_method_code,
322 X_Life_In_Months => x_asset_fin_rec_new.life_in_months,
323 X_Rate_Adjustment_Factor => x_asset_fin_rec_new.rate_adjustment_factor,
324 X_Adjusted_Cost => x_asset_fin_rec_new.adjusted_cost,
325 X_Cost => x_asset_fin_rec_new.cost,
326 X_Original_Cost => p_asset_fin_rec_old.original_cost, -- SLA: x_asset_fin_rec_new.original_cost,
327 X_Salvage_Value => x_asset_fin_rec_new.salvage_value,
328 X_Prorate_Convention_Code => x_asset_fin_rec_new.prorate_convention_code,
329 X_Prorate_Date => x_asset_fin_rec_new.prorate_date,
330 X_Cost_Change_Flag => x_asset_fin_rec_new.cost_change_flag,
331 X_Adjustment_Required_Status => x_asset_fin_rec_new.adjustment_required_status,
332 X_Capitalize_Flag => x_asset_fin_rec_new.capitalize_flag,
333 X_Retirement_Pending_Flag => x_asset_fin_rec_new.retirement_pending_flag,
334 X_Depreciate_Flag => x_asset_fin_rec_new.depreciate_flag,
335 X_Disabled_Flag => x_asset_fin_rec_new.disabled_flag, --HH
336 X_Last_Update_Date => px_trans_rec.who_info.last_update_date,
337 X_Last_Updated_By => px_trans_rec.who_info.last_updated_by,
338 X_Date_Ineffective => NULL,
339 X_Transaction_Header_Id_In => px_trans_rec.transaction_header_id,
340 X_Transaction_Header_Id_Out => NULL,
341 X_Itc_Amount_Id => x_asset_fin_rec_new.itc_amount_id,
342 X_Itc_Amount => x_asset_fin_rec_new.itc_amount,
343 X_Retirement_Id => x_asset_fin_rec_new.retirement_id,
344 X_Tax_Request_Id => x_asset_fin_rec_new.tax_request_id,
345 X_Itc_Basis => x_asset_fin_rec_new.itc_basis,
346 X_Basic_Rate => x_asset_fin_rec_new.basic_rate,
347 X_Adjusted_Rate => x_asset_fin_rec_new.adjusted_rate,
348 X_Bonus_Rule => x_asset_fin_rec_new.bonus_rule,
349 X_Ceiling_Name => x_asset_fin_rec_new.ceiling_name,
350 X_Recoverable_Cost => x_asset_fin_rec_new.recoverable_cost,
351 X_Last_Update_Login => px_trans_rec.who_info.last_update_login,
352 X_Adjusted_Capacity => x_asset_fin_rec_new.adjusted_capacity,
353 X_Fully_Rsvd_Revals_Counter => x_asset_fin_rec_new.fully_rsvd_revals_counter,
354 X_Idled_Flag => x_asset_fin_rec_new.idled_flag,
355 X_Period_Counter_Capitalized => x_asset_fin_rec_new.period_counter_capitalized,
356 X_PC_Fully_Reserved => x_asset_fin_rec_new.period_counter_fully_reserved,
357 X_Period_Counter_Fully_Retired => x_asset_fin_rec_new.period_counter_fully_retired,
358 X_Production_Capacity => x_asset_fin_rec_new.production_capacity,
359 X_Reval_Amortization_Basis => x_asset_fin_rec_new.reval_amortization_basis,
360 X_Reval_Ceiling => x_asset_fin_rec_new.reval_ceiling,
361 X_Unit_Of_Measure => x_asset_fin_rec_new.unit_of_measure,
362 X_Unrevalued_Cost => x_asset_fin_rec_new.unrevalued_cost,
363 X_Annual_Deprn_Rounding_Flag => x_asset_fin_rec_new.annual_deprn_rounding_flag,
364 X_Percent_Salvage_Value => x_asset_fin_rec_new.percent_salvage_value,
365 X_Allowed_Deprn_Limit => x_asset_fin_rec_new.allowed_deprn_limit,
366 X_Allowed_Deprn_Limit_Amount => x_asset_fin_rec_new.allowed_deprn_limit_amount,
367 X_Period_Counter_Life_Complete => x_asset_fin_rec_new.period_counter_life_complete,
368 X_Adjusted_Recoverable_Cost => x_asset_fin_rec_new.adjusted_recoverable_cost,
369 X_Short_Fiscal_Year_Flag => x_asset_fin_rec_new.short_fiscal_year_flag,
370 X_Conversion_Date => x_asset_fin_rec_new.conversion_date,
371 X_Orig_Deprn_Start_Date => x_asset_fin_rec_new.orig_deprn_start_date,
372 X_Remaining_Life1 => x_asset_fin_rec_new.remaining_life1,
373 X_Remaining_Life2 => x_asset_fin_rec_new.remaining_life2,
374 X_Old_Adj_Cost => x_asset_fin_rec_new.old_adjusted_cost,
375 X_Formula_Factor => x_asset_fin_rec_new.formula_factor,
376 X_gf_Attribute1 => x_asset_fin_rec_new.global_attribute1,
377 X_gf_Attribute2 => x_asset_fin_rec_new.global_attribute2,
378 X_gf_Attribute3 => x_asset_fin_rec_new.global_attribute3,
379 X_gf_Attribute4 => x_asset_fin_rec_new.global_attribute4,
380 X_gf_Attribute5 => x_asset_fin_rec_new.global_attribute5,
381 X_gf_Attribute6 => x_asset_fin_rec_new.global_attribute6,
382 X_gf_Attribute7 => x_asset_fin_rec_new.global_attribute7,
383 X_gf_Attribute8 => x_asset_fin_rec_new.global_attribute8,
384 X_gf_Attribute9 => x_asset_fin_rec_new.global_attribute9,
385 X_gf_Attribute10 => x_asset_fin_rec_new.global_attribute10,
386 X_gf_Attribute11 => x_asset_fin_rec_new.global_attribute11,
387 X_gf_Attribute12 => x_asset_fin_rec_new.global_attribute12,
388 X_gf_Attribute13 => x_asset_fin_rec_new.global_attribute13,
389 X_gf_Attribute14 => x_asset_fin_rec_new.global_attribute14,
390 X_gf_Attribute15 => x_asset_fin_rec_new.global_attribute15,
391 X_gf_Attribute16 => x_asset_fin_rec_new.global_attribute16,
392 X_gf_Attribute17 => x_asset_fin_rec_new.global_attribute17,
393 X_gf_Attribute18 => x_asset_fin_rec_new.global_attribute18,
394 X_gf_Attribute19 => x_asset_fin_rec_new.global_attribute19,
395 X_gf_Attribute20 => x_asset_fin_rec_new.global_attribute20,
396 X_global_attribute_category => x_asset_fin_rec_new.global_attribute_category,
397 X_group_asset_id => x_asset_fin_rec_new.group_asset_id,
398 X_salvage_type => x_asset_fin_rec_new.salvage_type,
399 X_deprn_limit_type => x_asset_fin_rec_new.deprn_limit_type,
400 X_over_depreciate_option => x_asset_fin_rec_new.over_depreciate_option,
401 X_super_group_id => x_asset_fin_rec_new.super_group_id,
402 X_reduction_rate => x_asset_fin_rec_new.reduction_rate,
403 X_reduce_addition_flag => x_asset_fin_rec_new.reduce_addition_flag,
404 X_reduce_adjustment_flag => x_asset_fin_rec_new.reduce_adjustment_flag,
405 X_reduce_retirement_flag => x_asset_fin_rec_new.reduce_retirement_flag,
406 X_recognize_gain_loss => x_asset_fin_rec_new.recognize_gain_loss,
407 X_recapture_reserve_flag => x_asset_fin_rec_new.recapture_reserve_flag,
408 X_limit_proceeds_flag => x_asset_fin_rec_new.limit_proceeds_flag,
409 X_terminal_gain_loss => x_asset_fin_rec_new.terminal_gain_loss,
410 X_exclude_proceeds_from_basis => x_asset_fin_rec_new.exclude_proceeds_from_basis,
411 X_retirement_deprn_option => x_asset_fin_rec_new.retirement_deprn_option,
412 X_tracking_method => x_asset_fin_rec_new.tracking_method,
413 X_allocate_to_fully_rsv_flag => x_asset_fin_rec_new.allocate_to_fully_rsv_flag,
414 X_allocate_to_fully_ret_flag => x_asset_fin_rec_new.allocate_to_fully_ret_flag,
415 X_exclude_fully_rsv_flag => x_asset_fin_rec_new.exclude_fully_rsv_flag,
416 X_excess_allocation_option => x_asset_fin_rec_new.excess_allocation_option,
417 X_depreciation_option => x_asset_fin_rec_new.depreciation_option,
418 X_member_rollup_flag => x_asset_fin_rec_new.member_rollup_flag,
419 X_ytd_proceeds => x_asset_fin_rec_new.ytd_proceeds,
420 X_ltd_proceeds => x_asset_fin_rec_new.ltd_proceeds,
421 X_eofy_reserve => x_asset_fin_rec_new.eofy_reserve,
422 X_cip_cost => x_asset_fin_rec_new.cip_cost,
423 X_terminal_gain_loss_amount => x_asset_fin_rec_new.terminal_gain_loss_amount,
424 X_ltd_cost_of_removal => x_asset_fin_rec_new.ltd_cost_of_removal,
425 X_contract_id => x_asset_fin_rec_new.contract_id, -- Bug:6021567
426 X_extended_deprn_flag => x_asset_fin_rec_new.extended_deprn_flag, -- Japan Tax phase3
427 X_extended_depreciation_period => x_asset_fin_rec_new.extended_depreciation_period, -- Japan Tax phase3
428 X_mrc_sob_type_code => p_mrc_sob_type_code,
429 X_Return_Status => l_status,
430 X_Calling_Fn => l_calling_fn
431 ,p_log_level_rec => p_log_level_rec);
432
433
434 if not l_status then
435 raise adj_err;
436 end if;
437
438 -- Bug 6665510: FP: Japan Tax Reform Project (Start)
439 if (p_log_level_rec.statement_level) then
440 fa_debug_pkg.add('pvt adj api', 'fa_cache_pkg.fazccmt_record.guarantee_rate_method_flag',
441 fa_cache_pkg.fazccmt_record.guarantee_rate_method_flag, p_log_level_rec);
442 end if;
443
444 if nvl(fa_cache_pkg.fazccmt_record.guarantee_rate_method_flag,'NO') = 'YES' then
445
446 if (p_log_level_rec.statement_level) then
447 fa_debug_pkg.add('pvt adj api', 'method_code', fa_cache_pkg.fazccmt_record.method_code, p_log_level_rec);
448 fa_debug_pkg.add('pvt adj api', 'life in months', fa_cache_pkg.fazccmt_record.life_in_months, p_log_level_rec);
449 end if;
450
451 FA_CDE_PKG.faxgfr (X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
452 X_Asset_Id => px_asset_hdr_rec.asset_id,
453 X_Short_Fiscal_Year_Flag => NULL,
454 X_Conversion_Date => NULL,
455 X_Prorate_Date => NULL,
456 X_Orig_Deprn_Start_Date => NULL,
457 C_Prorate_Date => NULL,
458 C_Conversion_Date => NULL,
459 C_Orig_Deprn_Start_Date => NULL,
460 X_Method_Code => fa_cache_pkg.fazccmt_record.method_code,
461 X_Life_In_Months => fa_cache_pkg.fazccmt_record.life_in_months,
462 X_Fiscal_Year => -99,
463 X_Current_Period => -99,
464 X_calling_interface => 'AFTER_ADJ',
465 X_Rate => l_rate_in_use,
466 X_Method_Type => l_method_type,
467 X_Success => l_success);
468
469 if (l_success <= 0) then
470 fa_srvr_msg.add_message(calling_fn => 'fa_addition_pvt.insert_asset');
471 raise adj_err;
472 end if;
473
474 UPDATE FA_BOOKS
475 SET rate_in_use = l_rate_in_use
476 WHERE book_type_code = px_asset_hdr_rec.book_type_code
477 AND asset_id = px_asset_hdr_rec.asset_id
478 AND date_ineffective is null;
479
480 end if;
481 -- Bug 6665510: FP: Japan Tax Reform Project (End)
482
483 -- update TH/BKS/DS/DD for adjustments in period of addition (i.e. voids)
484
485 -- SLA Uptake
486 -- this section is altered to account for new period of addition
487 -- changes.
488 --
489 -- 1) Since the prior unplanned solution is obsolete, no need to
490 -- track or store deprn_adj_amount
491 -- 2) we will only be tracking updates to YTD in the info for
492 -- DS/DD, reserve remains untouched
493
494 -- SA: *** REVISIT FOR GROUP ***
495
496 -- Bug7017134: Added condition not to touch B(OOKS) row if group adjustment is pending
497 -- if (px_asset_hdr_rec.period_of_addition = 'Y') then -- Added condition to exclude sumup option case.
498 if (px_asset_hdr_rec.period_of_addition = 'Y') and
499 ( (p_asset_type_rec.asset_type <> 'GROUP') or
500 (p_asset_type_rec.asset_type = 'GROUP' and
501 (nvl(x_asset_fin_rec_new.member_rollup_flag,'N') <> 'Y' and
502 ( not(px_trans_rec.calling_interface = 'FAXASSET' and
503 x_asset_fin_rec_new.adjustment_required_status = 'GADJ'))
504 ))
505 ) then
506 if (p_log_level_rec.statement_level) then
507 fa_debug_pkg.add('pvt adj api', 'logic for update deprn detail/summary', 'Starts',
508 p_log_level_rec => p_log_level_rec);
509 end if;
510
511 -- we need to account for unplanned in the period of addition
512 --
513 -- also for amort nbv scenarios where we don't want to
514 -- include the catchup in the reserve amount
515
516 -- Fix for Bug #6243777. We are uncommenting this for period of
517 -- addition changes, but making sure we do not execute this
518 -- code for unplanned.
519 if (nvl(px_trans_rec.transaction_key, 'XX') not in ('UA', 'UE')) then
520
521 if (p_mrc_sob_type_code <> 'R') then
522 select nvl(sum(deprn_adjustment_amount), 0)
523 into l_deprn_adjustment_amount
524 from fa_deprn_detail
525 where book_type_code = px_asset_hdr_rec.book_type_code
526 and asset_id = px_asset_hdr_rec.asset_id
527 and deprn_source_code = 'B';
528
529 select nvl(sum(decode(debit_credit_flag,
530 'DR', adjustment_amount,
531 -adjustment_amount)), 0)
532 into l_deprn_exp_amort_nbv
533 from fa_adjustments
534 where book_type_code = px_asset_hdr_rec.book_type_code
535 and asset_id = px_asset_hdr_rec.asset_id
536 and source_type_code = 'DEPRECIATION'
537 and adjustment_type = 'EXPENSE';
538
539 select nvl(sum(decode(debit_credit_flag,
540 'CR', adjustment_amount,
541 -adjustment_amount)), 0)
542 into l_reserve_adjustment_amount
543 from fa_adjustments
544 where book_type_code = px_asset_hdr_rec.book_type_code
545 and asset_id = px_asset_hdr_rec.asset_id
546 and source_type_code = 'ADJUSTMENT'
547 and adjustment_type = 'RESERVE';
548
549 else
550 select nvl(sum(deprn_adjustment_amount), 0)
551 into l_deprn_adjustment_amount
552 from fa_deprn_detail_mrc_v
553 where book_type_code = px_asset_hdr_rec.book_type_code
554 and asset_id = px_asset_hdr_rec.asset_id
555 and deprn_source_code = 'B';
556
557 select nvl(sum(decode(debit_credit_flag,
558 'DR', adjustment_amount,
559 -adjustment_amount)), 0)
560 into l_deprn_exp_amort_nbv
561 from fa_adjustments_mrc_v
562 where book_type_code = px_asset_hdr_rec.book_type_code
563 and asset_id = px_asset_hdr_rec.asset_id
564 and source_type_code = 'DEPRECIATION'
565 and adjustment_type = 'EXPENSE';
566
567 select nvl(sum(decode(debit_credit_flag,
568 'CR', adjustment_amount,
569 -adjustment_amount)), 0)
570 into l_reserve_adjustment_amount
571 from fa_adjustments_mrc_v
572 where book_type_code = px_asset_hdr_rec.book_type_code
573 and asset_id = px_asset_hdr_rec.asset_id
574 and source_type_code = 'ADJUSTMENT'
575 and adjustment_type = 'RESERVE';
576
577 end if;
578
579 --Bug#7215625 -- Incase of group-group reclass for member asset having backdated dpis
580 -- When manual reserve transfer is done the reserve row in fa_adj is inserted from
581 -- FAVGRECB.pls after update in deprn summary because of which reserve amount
582 -- is not considered when calculating l_reserve_adjustment_amount in above select statement
583 -- causing wrong value of reserve to be updated in 'BOOKS' row of deprn summary and detail.
584
585 if p_asset_type_rec.asset_type = 'GROUP' then
586 if p_group_reclass_options_rec.group_reclass_type = 'MANUAL' then
587
588 if p_reclass_src_dest = 'SOURCE' then
589 l_reserve_adjustment_amount := l_reserve_adjustment_amount +
590 -1 * nvl(p_group_reclass_options_rec.reserve_amount,0) ;
591 elsif p_reclass_src_dest = 'DESTINATION' then
592 l_reserve_adjustment_amount := l_reserve_adjustment_amount +
593 nvl(p_group_reclass_options_rec.reserve_amount,0) ;
594 end if;
595
596 -- Bug7017134: The equation at Update Row procedure call find deprn reserve does not work in case of group reclass
597 -- for source group
598 elsif p_group_reclass_options_rec.group_reclass_type = 'CALC' and
599 p_asset_type_rec.asset_type = 'GROUP' and
600 px_trans_rec.calling_interface <> 'FAXASSET' then
601
602 if p_reclass_src_dest = 'SOURCE' then
603 l_reserve_adjustment_amount := l_reserve_adjustment_amount - nvl(p_group_reclass_options_rec.reserve_amount,0);
604 end if;
605 end if;
606 end if;
607 --Bug#7215625 - end
608
609 if (p_log_level_rec.statement_level) then
610 fa_debug_pkg.add('pvt adj api', 'l_deprn_adjustment_amount', l_deprn_adjustment_amount,
611 p_log_level_rec => p_log_level_rec);
612 fa_debug_pkg.add('pvt adj api', 'x_asset_deprn_rec_new.deprn_reserve',
613 x_asset_deprn_rec_new.deprn_reserve ,p_log_level_rec => p_log_level_rec);
614 fa_debug_pkg.add('pvt adj api', 'l_deprn_exp_amort_nbv', l_deprn_exp_amort_nbv,
615 p_log_level_rec => p_log_level_rec);
616 fa_debug_pkg.add('pvt adj api', 'l_reserve_adjustment_amount', l_reserve_adjustment_amount,
617 p_log_level_rec => p_log_level_rec);
618 end if;
619
620 end if;
621
622 FA_DEPRN_SUMMARY_PKG.Update_Row
623 (X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
624 X_Asset_Id => px_asset_hdr_rec.asset_id,
625 X_Deprn_Run_Date => px_trans_rec.who_info.last_update_date,
626 X_Deprn_Amount => x_asset_deprn_rec_new.deprn_amount,
627 X_Ytd_Deprn => x_asset_deprn_rec_new.ytd_deprn -
628 l_deprn_exp_amort_nbv,
629 X_Deprn_Reserve => x_asset_deprn_rec_new.deprn_reserve -
630 l_deprn_exp_amort_nbv -
631 l_reserve_adjustment_amount,
632 X_Deprn_Source_Code => 'BOOKS',
633 X_Adjusted_Cost => x_asset_fin_rec_new.adjusted_cost,
634 X_Bonus_Rate => NULL,
635 X_Ltd_Production => NULL,
636 X_Period_Counter => p_period_rec.period_counter - 1,
637 X_Production => NULL,
638 X_Reval_Amortization => x_asset_deprn_rec_new.reval_amortization,
639 X_Reval_Amortization_Basis => x_asset_deprn_rec_new.reval_amortization_basis,
640 X_Reval_Deprn_Expense => x_asset_deprn_rec_new.reval_deprn_expense,
641 X_Reval_Reserve => x_asset_deprn_rec_new.reval_deprn_reserve,
642 X_Ytd_Production => NULL,
643 X_Ytd_Reval_Deprn_Expense => x_asset_deprn_rec_new.reval_ytd_deprn,
644 X_Bonus_Deprn_Amount => x_asset_deprn_rec_new.bonus_deprn_amount,
645 X_Bonus_Ytd_Deprn => x_asset_deprn_rec_new.bonus_ytd_deprn,
646 X_Bonus_Deprn_Reserve => x_asset_deprn_rec_new.bonus_deprn_reserve,
647 X_mrc_sob_type_code => p_mrc_sob_type_code,
648 X_Calling_Fn => l_calling_fn
649 ,p_log_level_rec => p_log_level_rec);
650
651 if not FA_INS_DETAIL_PKG.FAXINDD
652 (X_book_type_code => px_asset_hdr_rec.book_type_code,
653 X_asset_id => px_asset_hdr_rec.asset_id,
654 X_deprn_adjustment_amount => l_deprn_adjustment_amount,
655 X_mrc_sob_type_code => p_mrc_sob_type_code
656 ,p_log_level_rec => p_log_level_rec) then raise adj_err;
657 end if;
658
659 -- recall the cache since faxinddb calls it for corp
660 if NOT (fa_cache_pkg.fazcbc(X_book => px_asset_hdr_rec.book_type_code
661 ,p_log_level_rec => p_log_level_rec)) then
662 raise adj_err;
663 end if;
664
665 /* commented the following if condition for bug 5141060
666 -- now perform amortize nbv if applicable
667
668 if (px_trans_rec.transaction_subtype = 'AMORTIZED' and
669 p_asset_type_rec.asset_type = 'CAPITALIZED' and
670 x_asset_fin_rec_new.group_asset_id is null) then
671
672 -- excluding group as calc engine should handle all trxs
673 -- (p_asset_type_rec.asset_type = 'GROUP')) and
674 -- (p_calling_fn = 'fa_adjustment_pub.do_all_books') then
675
676 -- amortization start date was previously validated from calc engine
677
678
679
680 -- call faadjust
681 if not FA_ADJUST_PKG.faadjust(
682 asset_number => p_asset_desc_rec.asset_number,
683 asset_id => px_asset_hdr_rec.asset_id,
684 current_units => p_asset_desc_rec.current_units,
685 asset_category_id => p_asset_cat_rec.category_id,
686 asset_type => p_asset_type_rec.asset_type,
687 new_cost => x_asset_fin_rec_new.cost,
688 salvage_value => x_asset_fin_rec_new.salvage_value,
689 new_recoverable_cost => x_asset_fin_rec_new.recoverable_cost,
690 recoverable_cost => x_asset_fin_rec_new.recoverable_cost,
691 adjusted_rate => x_asset_fin_rec_new.adjusted_rate,
692 ceiling_name => x_asset_fin_rec_new.ceiling_name,
693 bonus_rule => x_asset_fin_rec_new.bonus_rule,
694 deprn_method_code => x_asset_fin_rec_new.deprn_method_code,
695 life_in_months => x_asset_fin_rec_new.life_in_months,
696 date_placed_in_service => x_asset_fin_rec_new.date_placed_in_service,
697 prorate_date => x_asset_fin_rec_new.prorate_date,
698 deprn_start_date => x_asset_fin_rec_new.deprn_start_date,
699 depreciate_flag => x_asset_fin_rec_new.depreciate_flag,
700 production_capacity => x_asset_fin_rec_new.production_capacity,
701 book_type_code => px_asset_hdr_rec.book_type_code,
702 transaction_header_id => px_trans_rec.transaction_header_id,
703 new_adjusted_cost => x_asset_fin_rec_new.adjusted_cost,
704 new_adjusted_capacity => x_asset_fin_rec_new.adjusted_capacity,
705 rate_adjustment_factor => x_asset_fin_rec_new.rate_adjustment_factor,
706 reval_amortization_basis => x_asset_fin_rec_new.reval_amortization_basis,
707 adjust_type => 'AMORTIZE',
708 amortization_start_date => px_trans_rec.amortization_start_date,
709 short_fiscal_year_flag => x_asset_fin_rec_new.short_fiscal_year_flag,
710 conversion_date => x_asset_fin_rec_new.conversion_date,
711 orig_deprn_start_date => x_asset_fin_rec_new.orig_deprn_start_date,
712 formula_factor => x_asset_fin_rec_new.formula_factor,
713 deprn_exp => l_deprn_exp,
714 bonus_deprn_exp => l_bonus_deprn_exp,
715 ins_adjust_flag => TRUE,
716 mrc_sob_type_code => p_mrc_sob_type_code,
717 deprn_override_flag => deprn_override_flag_default,
718 last_update_date => sysdate,
719 last_updated_by => -1,
720 last_update_login => -1,
721 init_message_flag => 'NO') then raise adj_err;
722 end if;
723
724
725
726 -- Bug3548724
727 -- It is important to pass reserve only amount in deprn_rec_adj for faxama.
728 --
729 l_asset_deprn_rec_adj.ytd_deprn := x_asset_deprn_rec_new.ytd_deprn -
730 p_asset_deprn_rec_old.deprn_amount;
731 l_asset_deprn_rec_adj.deprn_reserve := x_asset_deprn_rec_new.deprn_reserve -
732 p_asset_deprn_rec_old.deprn_amount;
733 l_asset_deprn_rec_adj.bonus_ytd_deprn := x_asset_deprn_rec_new.bonus_ytd_deprn -
734 p_asset_deprn_rec_old.bonus_deprn_amount;
735 l_asset_deprn_rec_adj.bonus_deprn_reserve := x_asset_deprn_rec_new.bonus_deprn_reserve -
736 p_asset_deprn_rec_old.bonus_deprn_amount;
737
738 if not FA_AMORT_PVT.faxama
739 (px_trans_rec => px_trans_rec,
740 p_asset_hdr_rec => px_asset_hdr_rec,
741 p_asset_desc_rec => p_asset_desc_rec,
742 p_asset_cat_rec => p_asset_cat_rec,
743 p_asset_type_rec => p_asset_type_rec,
744 p_asset_fin_rec_old => x_asset_fin_rec_new,
745 p_asset_fin_rec_adj => l_asset_fin_rec_null,
746 px_asset_fin_rec_new => x_asset_fin_rec_new,
747 p_asset_deprn_rec => x_asset_deprn_rec_new,
748 p_asset_deprn_rec_adj => l_asset_deprn_rec_adj, --bug3548724
749 p_period_rec => p_period_rec,
750 p_mrc_sob_type_code => p_mrc_sob_type_code,
751 p_running_mode => fa_std_types.FA_DPR_NORMAL,
752 p_used_by_revaluation => null,
753 x_deprn_exp => l_deprn_exp,
754 x_bonus_deprn_exp => l_bonus_deprn_exp
755 ,p_log_level_rec => p_log_level_rec) then raise adj_err;
756 end if;
757
758
759 -- insert the deprn amounts
760 if not FA_INS_ADJ_PVT.faxiat
761 (p_trans_rec => px_trans_rec,
762 p_asset_hdr_rec => px_asset_hdr_rec,
763 p_asset_desc_rec => p_asset_desc_rec,
764 p_asset_cat_rec => p_asset_cat_rec,
765 p_asset_type_rec => p_asset_type_rec,
766 p_cost => 0,
767 p_clearing => 0,
768 p_deprn_expense => l_deprn_exp,
769 p_bonus_expense => l_bonus_deprn_exp,
770 p_ann_adj_amt => 0,
771 p_mrc_sob_type_code => p_mrc_sob_type_code,
772 p_calling_fn => l_calling_fn
773 ,p_log_level_rec => p_log_level_rec) then raise adj_err;
774 end if;
775
776 fa_books_pkg.update_row
777 (X_asset_id => px_asset_hdr_rec.asset_id,
778 X_book_type_code => px_asset_hdr_rec.book_type_code,
779 X_rate_adjustment_factor => x_asset_fin_rec_new.rate_adjustment_factor,
780 X_reval_amortization_basis => x_asset_fin_rec_new.reval_amortization_basis,
781 X_adjusted_cost => x_asset_fin_rec_new.adjusted_cost,
782 X_adjusted_capacity => x_asset_fin_rec_new.adjusted_capacity,
783 X_formula_factor => x_asset_fin_rec_new.formula_factor,
784 X_eofy_reserve => x_asset_fin_rec_new.eofy_reserve,
785 X_mrc_sob_type_code => p_mrc_sob_type_code,
786 X_calling_fn => l_calling_fn
787 ,p_log_level_rec => p_log_level_rec);
788
789 SLA: obsolete - must keep these since cost is inserted at addition
790
791 -- now update the primary or reporting amounts accordingly
792 if (p_mrc_sob_type_code <> 'R') then
793
794 delete from fa_adjustments
795 where asset_id = px_asset_hdr_rec.asset_id
796 and book_type_code = px_asset_hdr_rec.book_type_code
797 and adjustment_type in ('COST', 'COST CLEARING');
798
799 else
800
801 delete from fa_adjustments_mrc_v
802 where asset_id = px_asset_hdr_rec.asset_id
803 and book_type_code = px_asset_hdr_rec.book_type_code
804 and adjustment_type in ('COST', 'COST CLEARING');
805
806 end if;
807
808
809 FA_DEPRN_SUMMARY_PKG.Update_Row
810 (X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
811 X_Asset_Id => px_asset_hdr_rec.asset_id,
812 X_Adjusted_Cost => x_asset_fin_rec_new.adjusted_cost,
813 X_Period_Counter => p_period_rec.period_counter - 1,
814 X_Reval_Amortization_Basis => x_asset_deprn_rec_new.reval_amortization_basis,
815 X_mrc_sob_type_code => p_mrc_sob_type_code,
816 X_Calling_Fn => l_calling_fn
817 ,p_log_level_rec => p_log_level_rec);
818
819
820 end if; -- end amort nbv
821 */
822
823 -- If the processed asset is GROUP asset and tracking method is 'ALLOCATE',
824 -- Call TRACK_ASSETS to allocate unplanned amount into members.
825 -- For track member feature
826 -- Only when the unplanned depreciation is kicked from group asset whose tracking method is
827 -- ALLOCATE, system needs to allocate the entered unplanned depreciation amount into
828 -- members.
829 if x_asset_fin_rec_new.group_asset_id is null and
830 nvl(x_asset_fin_rec_new.tracking_method,'OTHER') = 'ALLOCATE' and
831 (x_asset_deprn_rec_new.deprn_reserve - l_deprn_exp_amort_nbv - l_reserve_adjustment_amount) <> 0 then
832
833 if not fa_cache_pkg.fazccmt (x_asset_fin_rec_new.deprn_method_code,x_asset_fin_rec_new.life_in_months) then
834 fa_srvr_msg.add_message (calling_fn => l_calling_fn
835 ,p_log_level_rec => p_log_level_rec);
836 raise adj_err;
837 end if;
838
839 l_ret_code := FA_TRACK_MEMBER_PVT.TRACK_ASSETS
840 (P_book_type_code => px_asset_hdr_rec.book_type_code,
841 P_group_asset_id => px_asset_hdr_rec.asset_id,
842 P_period_counter => p_period_rec.period_num,
843 P_fiscal_year => p_period_rec.fiscal_year,
844 P_group_deprn_basis => fa_cache_pkg.fazccmt_record.deprn_basis_rule,
845 P_group_exclude_salvage => fa_cache_pkg.fazccmt_record.exclude_salvage_value_flag,
846 P_group_bonus_rule => x_asset_fin_rec_new.bonus_rule,
847 P_group_deprn_amount => x_asset_deprn_rec_new.deprn_reserve -
848 l_deprn_exp_amort_nbv -
849 l_reserve_adjustment_amount,
850 P_group_bonus_amount => 0,
851 P_tracking_method => x_asset_fin_rec_new.tracking_method,
852 P_allocate_to_fully_ret_flag => x_asset_fin_rec_new.allocate_to_fully_ret_flag,
853 P_allocate_to_fully_rsv_flag => x_asset_fin_rec_new.allocate_to_fully_rsv_flag,
854 P_excess_allocation_option => x_asset_fin_rec_new.excess_allocation_option,
855 P_subtraction_flag => 'N',
856 P_group_level_override => l_group_level_override,
857 P_period_of_addition => 'Y',
858 P_transaction_date_entered => px_trans_rec.transaction_date_entered,
859 P_mode => 'UNPLANNED',
860 X_new_deprn_amount => x_group_deprn_amount,
861 X_new_bonus_amount => x_group_bonus_amount
862 ,p_log_level_rec => p_log_level_rec);
863
864 if l_ret_code <> 0 then
865 raise adj_err;
866 elsif x_group_deprn_amount <> (x_asset_deprn_rec_new.deprn_reserve
867 - l_deprn_exp_amort_nbv - l_reserve_adjustment_amount) then
868 raise adj_err;
869 end if;
870
871 end if; -- End of Group Unplanned at period of addition
872
873 end if; -- end period of add
874
875 return true;
876
877 EXCEPTION
878
879 when adj_err then
880 fa_srvr_msg.add_message(calling_fn => l_calling_fn
881 ,p_log_level_rec => p_log_level_rec);
882 return false;
883
884 when others then
885 fa_srvr_msg.add_sql_error
886 (calling_fn => l_calling_fn
887 ,p_log_level_rec => p_log_level_rec);
888 return false;
889
890 END do_adjustment;
891
892
893
894 -- this function contains check_changes_before_commit logic (from faxfa1b.pls)
895 -- insure something is changing and that the depreciate flag is not
896 -- changing in conjuction with something else.
897 --
898 -- note: main change check excludes global flex and calculated values
899 -- may need to add the global and capitalize values later
900 -- as in the calc engine need to determine intent for nullable fields
901 --
902 -- now called from the public api to avoid errors resulting from
903 -- calls from group/reclass apis that may result in no change
904
905 FUNCTION validate_adjustment
906 (p_inv_trans_rec IN FA_API_TYPES.inv_trans_rec_type,
907 p_trans_rec IN FA_API_TYPES.trans_rec_type,
908 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
909 p_asset_fin_rec_old IN FA_API_TYPES.asset_fin_rec_type,
910 p_asset_fin_rec_adj IN FA_API_TYPES.asset_fin_rec_type,
911 p_asset_deprn_rec_old IN FA_API_TYPES.asset_deprn_rec_type,
912 p_asset_deprn_rec_adj IN FA_API_TYPES.asset_deprn_rec_type,
913 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null) RETURN BOOLEAN IS
914
915 l_no_changes_made boolean;
916 l_no_changes_to_uom boolean;
917 l_no_changes_to_dep_flag boolean;
918 l_no_changes_to_method boolean;
919 l_no_changes_to_group boolean;
920 l_no_changes_to_reduction boolean;
921 l_calling_fn varchar2(35) := 'do_adjustment_pvt.validate_adj';
922
923 BEGIN
924
925 if (nvl(p_trans_rec.transaction_key, 'NULL') <> 'SG') then
926 -- no need to check for changes made if driven by invoice
927 if p_inv_trans_rec.transaction_type is not null then
928 l_no_changes_made := FALSE;
929 elsif
930 (nvl(p_asset_fin_rec_adj.cost, 0) = 0 and
931 nvl(p_asset_fin_rec_adj.original_cost, 0) = 0 and
932 nvl(p_asset_deprn_rec_adj.deprn_reserve, 0) = 0 and
933 nvl(p_asset_deprn_rec_adj.ytd_deprn, 0) = 0 and
934 nvl(p_asset_deprn_rec_adj.bonus_deprn_reserve, 0) = 0 and
935 nvl(p_asset_deprn_rec_adj.bonus_ytd_deprn, 0) = 0 and
936 nvl(p_asset_deprn_rec_adj.reval_deprn_reserve, 0) = 0 and
937 nvl(p_asset_fin_rec_adj.reval_ceiling, 0) = 0 and
938 nvl(p_asset_fin_rec_adj.production_capacity, 0) = 0 and
939 nvl(p_asset_fin_rec_adj.cip_cost, 0) = 0 and
940 nvl(p_asset_fin_rec_adj.percent_salvage_value, 0) = 0 and
941 nvl(p_asset_fin_rec_adj.allowed_deprn_limit,0) = 0 and
942 nvl(p_asset_fin_rec_adj.allowed_deprn_limit_amount, 0) = 0 and
943 p_asset_fin_rec_old.date_placed_in_service =
944 nvl(p_asset_fin_rec_adj.date_placed_in_service,
945 p_asset_fin_rec_old.date_placed_in_service) and
946 p_asset_fin_rec_old.prorate_convention_code =
947 nvl(p_asset_fin_rec_adj.prorate_convention_code,
948 p_asset_fin_rec_old.prorate_convention_code) and
949 nvl(p_asset_fin_rec_old.salvage_value, 0) =
950 nvl(p_asset_fin_rec_adj.salvage_value,0) +
951 nvl(p_asset_fin_rec_old.salvage_value, 0) and
952 nvl(p_asset_fin_rec_old.itc_amount_id, FND_API.G_MISS_NUM) =
953 nvl(p_asset_fin_rec_adj.itc_amount_id,
954 nvl(p_asset_fin_rec_old.itc_amount_id, FND_API.G_MISS_NUM)) and
955 nvl(p_asset_fin_rec_old.ceiling_name, FND_API.G_MISS_CHAR) =
956 nvl(p_asset_fin_rec_adj.ceiling_name,
957 nvl(p_asset_fin_rec_old.ceiling_name, FND_API.G_MISS_CHAR)) and
958 nvl(p_asset_fin_rec_old.short_fiscal_year_flag, FND_API.G_MISS_CHAR) =
959 nvl(p_asset_fin_rec_adj.short_fiscal_year_flag,
960 nvl(p_asset_fin_rec_old.short_fiscal_year_flag, FND_API.G_MISS_CHAR)) and
961
962 -- Bug:6021567
963 -- Bug:6950629,Validation not done for contract_id adjustment.
964 /* nvl(p_asset_fin_rec_old.contract_id, FND_API.G_MISS_NUM) =
965 nvl(p_asset_fin_rec_adj.contract_id,
966 nvl(p_asset_fin_rec_old.contract_id, FND_API.G_MISS_NUM)) and */
967
968 -- group columns
969 nvl(p_asset_fin_rec_old.salvage_type, FND_API.G_MISS_CHAR) =
970 nvl(p_asset_fin_rec_adj.salvage_type,
971 nvl(p_asset_fin_rec_old.salvage_type, FND_API.G_MISS_CHAR)) and
972 nvl(p_asset_fin_rec_old.deprn_limit_type, FND_API.G_MISS_CHAR) =
973 nvl(p_asset_fin_rec_adj.deprn_limit_type,
974 nvl(p_asset_fin_rec_old.deprn_limit_type, FND_API.G_MISS_CHAR)) and
975
976 nvl(p_asset_fin_rec_old.over_depreciate_option,FND_API.G_MISS_CHAR) =
977 nvl(p_asset_fin_rec_adj.over_depreciate_option,
978 nvl(p_asset_fin_rec_old.over_depreciate_option, FND_API.G_MISS_CHAR)) and
979 nvl(p_asset_fin_rec_old.super_group_id, FND_API.G_MISS_NUM) =
980 nvl(p_asset_fin_rec_adj.super_group_id,
981 nvl(p_asset_fin_rec_old.super_group_id, FND_API.G_MISS_NUM)) and
982
983 -- Japan Tax phase3
984 nvl(p_asset_fin_rec_old.extended_deprn_flag, FND_API.G_MISS_CHAR) =
985 nvl(p_asset_fin_rec_adj.extended_deprn_flag,
986 nvl(p_asset_fin_rec_old.extended_deprn_flag, FND_API.G_MISS_CHAR)) and
987 nvl(p_asset_fin_rec_old.extended_depreciation_period, FND_API.G_MISS_NUM) =
988 nvl(p_asset_fin_rec_adj.extended_depreciation_period,
989 nvl(p_asset_fin_rec_old.extended_depreciation_period, FND_API.G_MISS_NUM)) and
990
991 -- global flex columns
992 nvl(p_asset_fin_rec_old.global_attribute1, FND_API.G_MISS_CHAR) =
993 nvl(p_asset_fin_rec_adj.global_attribute1,
994 nvl(p_asset_fin_rec_old.global_attribute1, FND_API.G_MISS_CHAR)) and
995 nvl(p_asset_fin_rec_old.global_attribute2, FND_API.G_MISS_CHAR) =
996 nvl(p_asset_fin_rec_adj.global_attribute2,
997 nvl(p_asset_fin_rec_old.global_attribute2, FND_API.G_MISS_CHAR)) and
998 nvl(p_asset_fin_rec_old.global_attribute3, FND_API.G_MISS_CHAR) =
999 nvl(p_asset_fin_rec_adj.global_attribute3,
1000 nvl(p_asset_fin_rec_old.global_attribute3, FND_API.G_MISS_CHAR)) and
1001 nvl(p_asset_fin_rec_old.global_attribute4, FND_API.G_MISS_CHAR) =
1002 nvl(p_asset_fin_rec_adj.global_attribute4,
1003 nvl(p_asset_fin_rec_old.global_attribute4, FND_API.G_MISS_CHAR)) and
1004 nvl(p_asset_fin_rec_old.global_attribute5, FND_API.G_MISS_CHAR) =
1005 nvl(p_asset_fin_rec_adj.global_attribute5,
1006 nvl(p_asset_fin_rec_old.global_attribute5, FND_API.G_MISS_CHAR)) and
1007 nvl(p_asset_fin_rec_old.global_attribute6, FND_API.G_MISS_CHAR) =
1008 nvl(p_asset_fin_rec_adj.global_attribute6,
1009 nvl(p_asset_fin_rec_old.global_attribute6, FND_API.G_MISS_CHAR)) and
1010 nvl(p_asset_fin_rec_old.global_attribute7, FND_API.G_MISS_CHAR) =
1011 nvl(p_asset_fin_rec_adj.global_attribute7,
1012 nvl(p_asset_fin_rec_old.global_attribute7, FND_API.G_MISS_CHAR)) and
1013 nvl(p_asset_fin_rec_old.global_attribute8, FND_API.G_MISS_CHAR) =
1014 nvl(p_asset_fin_rec_adj.global_attribute8,
1015 nvl(p_asset_fin_rec_old.global_attribute8, FND_API.G_MISS_CHAR)) and
1016 nvl(p_asset_fin_rec_old.global_attribute9, FND_API.G_MISS_CHAR) =
1017 nvl(p_asset_fin_rec_adj.global_attribute9,
1018 nvl(p_asset_fin_rec_old.global_attribute9, FND_API.G_MISS_CHAR)) and
1019 nvl(p_asset_fin_rec_old.global_attribute10, FND_API.G_MISS_CHAR) =
1020 nvl(p_asset_fin_rec_adj.global_attribute10,
1021 nvl(p_asset_fin_rec_old.global_attribute10, FND_API.G_MISS_CHAR)) and
1022 nvl(p_asset_fin_rec_old.global_attribute11, FND_API.G_MISS_CHAR) =
1023 nvl(p_asset_fin_rec_adj.global_attribute11,
1024 nvl(p_asset_fin_rec_old.global_attribute11, FND_API.G_MISS_CHAR)) and
1025 nvl(p_asset_fin_rec_old.global_attribute12, FND_API.G_MISS_CHAR) =
1026 nvl(p_asset_fin_rec_adj.global_attribute12,
1027 nvl(p_asset_fin_rec_old.global_attribute12, FND_API.G_MISS_CHAR)) and
1028 nvl(p_asset_fin_rec_old.global_attribute13, FND_API.G_MISS_CHAR) =
1029 nvl(p_asset_fin_rec_adj.global_attribute13,
1030 nvl(p_asset_fin_rec_old.global_attribute13, FND_API.G_MISS_CHAR)) and
1031 nvl(p_asset_fin_rec_old.global_attribute14, FND_API.G_MISS_CHAR) =
1032 nvl(p_asset_fin_rec_adj.global_attribute14,
1033 nvl(p_asset_fin_rec_old.global_attribute14, FND_API.G_MISS_CHAR)) and
1034 nvl(p_asset_fin_rec_old.global_attribute15, FND_API.G_MISS_CHAR) =
1035 nvl(p_asset_fin_rec_adj.global_attribute15,
1036 nvl(p_asset_fin_rec_old.global_attribute15, FND_API.G_MISS_CHAR)) and
1037 nvl(p_asset_fin_rec_old.global_attribute16, FND_API.G_MISS_CHAR) =
1038 nvl(p_asset_fin_rec_adj.global_attribute16,
1039 nvl(p_asset_fin_rec_old.global_attribute16, FND_API.G_MISS_CHAR)) and
1040 nvl(p_asset_fin_rec_old.global_attribute17, FND_API.G_MISS_CHAR) =
1041 nvl(p_asset_fin_rec_adj.global_attribute17,
1042 nvl(p_asset_fin_rec_old.global_attribute17, FND_API.G_MISS_CHAR)) and
1043 nvl(p_asset_fin_rec_old.global_attribute18, FND_API.G_MISS_CHAR) =
1044 nvl(p_asset_fin_rec_adj.global_attribute18,
1045 nvl(p_asset_fin_rec_old.global_attribute18, FND_API.G_MISS_CHAR)) and
1046 nvl(p_asset_fin_rec_old.global_attribute19, FND_API.G_MISS_CHAR) =
1047 nvl(p_asset_fin_rec_adj.global_attribute19,
1048 nvl(p_asset_fin_rec_old.global_attribute19, FND_API.G_MISS_CHAR)) and
1049 nvl(p_asset_fin_rec_old.global_attribute20, FND_API.G_MISS_CHAR) =
1050 nvl(p_asset_fin_rec_adj.global_attribute20,
1051 nvl(p_asset_fin_rec_old.global_attribute20, FND_API.G_MISS_CHAR)) and
1052 nvl(p_asset_fin_rec_old.global_attribute_category, FND_API.G_MISS_CHAR) =
1053 nvl(p_asset_fin_rec_adj.global_attribute_category,
1054 nvl(p_asset_fin_rec_old.global_attribute_category, FND_API.G_MISS_CHAR))) then
1055 l_no_changes_made := TRUE;
1056 else
1057 l_no_changes_made := FALSE;
1058 end if;
1059
1060 if nvl(p_asset_fin_rec_old.unit_of_measure, FND_API.G_MISS_CHAR) =
1061 nvl(p_asset_fin_rec_adj.unit_of_measure,
1062 nvl(p_asset_fin_rec_old.unit_of_measure, FND_API.G_MISS_CHAR)) then
1063 l_no_changes_to_uom := TRUE;
1064 else
1065 l_no_changes_to_uom := FALSE;
1066 end if;
1067
1068 if (p_asset_fin_rec_old.depreciate_flag = nvl(p_asset_fin_rec_adj.depreciate_flag,
1069 p_asset_fin_rec_old.depreciate_flag)) then
1070 l_no_changes_to_dep_flag := TRUE;
1071 else
1072 l_no_changes_to_dep_flag := FALSE;
1073 end if;
1074
1075 if p_asset_fin_rec_old.deprn_method_code =
1076 nvl(p_asset_fin_rec_adj.deprn_method_code,
1077 p_asset_fin_rec_old.deprn_method_code) and
1078 nvl(p_asset_fin_rec_old.life_in_months, FND_API.G_MISS_NUM) =
1079 nvl(p_asset_fin_rec_adj.life_in_months,
1080 nvl(p_asset_fin_rec_old.life_in_months, FND_API.G_MISS_NUM)) and
1081 nvl(p_asset_fin_rec_old.basic_rate, FND_API.G_MISS_NUM) =
1082 nvl(p_asset_fin_rec_adj.basic_rate,
1083 nvl(p_asset_fin_rec_old.basic_rate, FND_API.G_MISS_NUM)) and
1084 nvl(p_asset_fin_rec_old.adjusted_rate, FND_API.G_MISS_NUM) =
1085 nvl(p_asset_fin_rec_adj.adjusted_rate,
1086 nvl(p_asset_fin_rec_old.adjusted_rate, FND_API.G_MISS_NUM)) and
1087 nvl(p_asset_fin_rec_old.bonus_rule, FND_API.G_MISS_CHAR) =
1088 nvl(p_asset_fin_rec_adj.bonus_rule,
1089 nvl(p_asset_fin_rec_old.bonus_rule, FND_API.G_MISS_CHAR)) then
1090 l_no_changes_to_method := TRUE;
1091 else
1092 l_no_changes_to_method := FALSE;
1093 end if;
1094
1095
1096 if (p_asset_type_rec.asset_type = 'GROUP') then
1097 if nvl(p_asset_fin_rec_old.recognize_gain_loss, FND_API.G_MISS_CHAR) =
1098 nvl(p_asset_fin_rec_adj.recognize_gain_loss,
1099 nvl(p_asset_fin_rec_old.recognize_gain_loss, FND_API.G_MISS_CHAR)) and
1100 nvl(p_asset_fin_rec_old.recapture_reserve_flag, FND_API.G_MISS_CHAR) =
1101 nvl(p_asset_fin_rec_adj.recapture_reserve_flag,
1102 nvl(p_asset_fin_rec_old.recapture_reserve_flag, FND_API.G_MISS_CHAR)) and
1103 nvl(p_asset_fin_rec_old.limit_proceeds_flag, FND_API.G_MISS_CHAR) =
1104 nvl(p_asset_fin_rec_adj.limit_proceeds_flag,
1105 nvl(p_asset_fin_rec_old.limit_proceeds_flag, FND_API.G_MISS_CHAR)) and
1106 nvl(p_asset_fin_rec_old.terminal_gain_loss, FND_API.G_MISS_CHAR) =
1107 nvl(p_asset_fin_rec_adj.terminal_gain_loss,
1108 nvl(p_asset_fin_rec_old.terminal_gain_loss, FND_API.G_MISS_CHAR)) and
1109 nvl(p_asset_fin_rec_old.tracking_method, FND_API.G_MISS_CHAR) =
1110 nvl(p_asset_fin_rec_adj.tracking_method,
1111 nvl(p_asset_fin_rec_old.tracking_method, FND_API.G_MISS_CHAR)) and
1112 nvl(p_asset_fin_rec_old.exclude_fully_rsv_flag, FND_API.G_MISS_CHAR) =
1113 nvl(p_asset_fin_rec_adj.exclude_fully_rsv_flag,
1114 nvl(p_asset_fin_rec_old.exclude_fully_rsv_flag, FND_API.G_MISS_CHAR)) and
1115 nvl(p_asset_fin_rec_old.excess_allocation_option, FND_API.G_MISS_CHAR) =
1116 nvl(p_asset_fin_rec_adj.excess_allocation_option,
1117 nvl(p_asset_fin_rec_old.excess_allocation_option, FND_API.G_MISS_CHAR)) and
1118 nvl(p_asset_fin_rec_old.depreciation_option, FND_API.G_MISS_CHAR) =
1119 nvl(p_asset_fin_rec_adj.depreciation_option,
1120 nvl(p_asset_fin_rec_old.depreciation_option, FND_API.G_MISS_CHAR)) and
1121 nvl(p_asset_fin_rec_old.member_rollup_flag, FND_API.G_MISS_CHAR) =
1122 nvl(p_asset_fin_rec_adj.member_rollup_flag,
1123 nvl(p_asset_fin_rec_old.member_rollup_flag, FND_API.G_MISS_CHAR)) and
1124 nvl(p_asset_fin_rec_old.allocate_to_fully_rsv_flag, FND_API.G_MISS_CHAR) =
1125 nvl(p_asset_fin_rec_adj.allocate_to_fully_rsv_flag,
1126 nvl(p_asset_fin_rec_old.allocate_to_fully_rsv_flag, FND_API.G_MISS_CHAR)) and
1127 /* HH group ed */
1128 nvl(p_asset_fin_rec_old.disabled_flag, FND_API.G_MISS_CHAR) =
1129 nvl(p_asset_fin_rec_adj.disabled_flag,
1130 nvl(p_asset_fin_rec_old.disabled_flag, FND_API.G_MISS_CHAR)) and /* end HH */
1131 nvl(p_asset_fin_rec_old.allocate_to_fully_ret_flag, FND_API.G_MISS_CHAR) =
1132 nvl(p_asset_fin_rec_adj.allocate_to_fully_ret_flag,
1133 nvl(p_asset_fin_rec_old.allocate_to_fully_ret_flag, FND_API.G_MISS_CHAR)) then
1134 if (p_log_level_rec.statement_level) then
1135 fa_debug_pkg.add('l_calling_fn', 'Do not need to set it to true again', 'TRUE',
1136 p_log_level_rec => p_log_level_rec);
1137 end if;
1138 else
1139 l_no_changes_made := FALSE;
1140 end if;
1141 l_no_changes_to_group := TRUE;
1142 else
1143 if nvl(p_asset_fin_rec_old.group_asset_id, FND_API.G_MISS_NUM) =
1144 nvl(p_asset_fin_rec_adj.group_asset_id,
1145 nvl(p_asset_fin_rec_old.group_asset_id, FND_API.G_MISS_NUM)) then
1146 l_no_changes_to_group := TRUE;
1147 else
1148 l_no_changes_to_group := FALSE;
1149 end if;
1150 end if;
1151
1152 if nvl(p_asset_fin_rec_adj.reduction_rate, 0) = 0 and
1153 nvl(p_asset_fin_rec_old.reduce_addition_flag, FND_API.G_MISS_CHAR) =
1154 nvl(p_asset_fin_rec_adj.reduce_addition_flag,
1155 nvl(p_asset_fin_rec_old.reduce_addition_flag, FND_API.G_MISS_CHAR)) and
1156 nvl(p_asset_fin_rec_old.reduce_adjustment_flag, FND_API.G_MISS_CHAR) =
1157 nvl(p_asset_fin_rec_adj.reduce_adjustment_flag,
1158 nvl(p_asset_fin_rec_old.reduce_adjustment_flag, FND_API.G_MISS_CHAR)) and
1159 nvl(p_asset_fin_rec_old.reduce_retirement_flag, FND_API.G_MISS_CHAR) =
1160 nvl(p_asset_fin_rec_adj.reduce_retirement_flag,
1161 nvl(p_asset_fin_rec_old.reduce_retirement_flag, FND_API.G_MISS_CHAR)) then
1162 l_no_changes_to_reduction := TRUE;
1163 else
1164 l_no_changes_to_reduction := FALSE;
1165 end if;
1166
1167 if (l_no_changes_made) then
1168 if (l_no_changes_to_uom) then
1169 if (l_no_changes_to_group) and (l_no_changes_to_reduction) and (l_no_changes_to_method) then
1170 if (l_no_changes_to_dep_flag) then
1171 fa_srvr_msg.add_message(
1172 calling_fn => l_calling_fn,
1173 name => 'FA_SHARED_NO_CHANGES_TO_COMMIT'
1174 ,p_log_level_rec => p_log_level_rec);
1175 return FALSE;
1176
1177 -- old code would handle adj_req_status here as an else stmt
1178 -- we're doing it in calc engine
1179 end if;
1180 end if;
1181 end if;
1182
1183 if (not l_no_changes_to_group) and ((not l_no_changes_to_method) and
1184 (nvl(p_asset_fin_rec_adj.depreciation_option,
1185 nvl(p_asset_fin_rec_old.depreciation_option, 'NULL')) <> 'GROUP')) then
1186
1187 if (p_log_level_rec.statement_level) then
1188 fa_debug_pkg.add('l_calling_fn', 'No method change if depreciation_option <> ', 'GROUP',
1189 p_log_level_rec => p_log_level_rec);
1190 end if;
1191
1192 fa_srvr_msg.add_message(
1193 calling_fn => l_calling_fn,
1194 name => 'FA_BK_NO_MULTIPLE_CHANGES'
1195 ,p_log_level_rec => p_log_level_rec);
1196 return FALSE;
1197 end if;
1198
1199 if (not l_no_changes_to_dep_flag) and
1200 ((not l_no_changes_to_reduction) or
1201 (not l_no_changes_to_group) or
1202 (not l_no_changes_to_method)) then
1203 fa_srvr_msg.add_message(
1204 calling_fn => l_calling_fn,
1205 name => 'FA_BK_NO_MULTIPLE_CHANGES'
1206 ,p_log_level_rec => p_log_level_rec);
1207 return FALSE;
1208 end if;
1209
1210 else
1211
1212 if (not l_no_changes_to_dep_flag) then
1213 fa_srvr_msg.add_message(
1214 calling_fn => l_calling_fn,
1215 name => 'FA_BK_NO_MULTIPLE_CHANGES'
1216 ,p_log_level_rec => p_log_level_rec);
1217 return FALSE;
1218 end if;
1219
1220 if (not l_no_changes_to_group) then
1221 fa_srvr_msg.add_message(
1222 calling_fn => l_calling_fn,
1223 name => 'FA_BK_NO_MULTIPLE_CHANGES'
1224 ,p_log_level_rec => p_log_level_rec);
1225 return FALSE;
1226 end if;
1227
1228 end if;
1229
1230 end if;
1231
1232 return true;
1233
1234 END validate_adjustment;
1235
1236
1237 END FA_ADJUSTMENT_PVT;