[Home] [Help]
PACKAGE BODY: APPS.FA_TERMINAL_GAIN_LOSS_PVT
Source
1 PACKAGE BODY FA_TERMINAL_GAIN_LOSS_PVT as
2 /* $Header: FAVTGLB.pls 120.2 2005/12/02 22:36:23 tkawamur noship $ */
3
4 FUNCTION fadtgl (
5 p_asset_id IN NUMBER,
6 p_book_type_code IN VARCHAR2,
7 p_deprn_reserve IN NUMBER,
8 p_mrc_sob_type_code IN VARCHAR2,
9 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null) RETURN NUMBER IS
10
11 l_calling_fn varchar2(50) := 'FA_TERMINAL_GAIN_LOSS_PVT.fadtgl';
12 l_db_title varchar2(30) := 'fadtgl';
13 l_trans_rec FA_API_TYPES.trans_rec_type;
14 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
15 l_asset_type_rec FA_API_TYPES.asset_type_rec_type;
16 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
17 l_period_rec FA_API_TYPES.period_rec_type;
18 l_asset_cat_rec FA_API_TYPES.asset_cat_rec_type;
19 l_adj FA_ADJUST_TYPE_PKG.FA_ADJ_ROW_STRUCT;
20
21 l_date_effective date;
22 l_updated_by number;
23 l_update_login number;
24
25 l_th_rowid ROWID;
26 l_bks_rowid ROWID;
27 l_status boolean;
28
29 CURSOR c_get_deprn_run_date IS
30 select last_update_date
31 , last_updated_by
32 , last_update_login
33 from fa_book_controls
34 where book_type_code = p_book_type_code;
35
36 CURSOR c_get_mc_deprn_run_date IS
37 select last_update_date
38 , last_updated_by
39 , last_update_login
40 from fa_book_controls_mrc_v
41 where book_type_code = p_book_type_code;
42
43 -- +++++ Get Current Unit and category_id of Group Asset +++++
44 CURSOR c_get_unit IS
45 select units,
46 category_id
47 from fa_asset_history
48 where asset_id = l_asset_hdr_rec.asset_id
49 and transaction_header_id_out is null;
50
51 tgl_err EXCEPTION;
52
53 BEGIN
54
55 if (p_log_level_rec.statement_level) then
56 fa_debug_pkg.add(l_db_title, 'BEGIN', p_asset_id ,p_log_level_rec => p_log_level_rec);
57 end if;
58
59 l_asset_hdr_rec.asset_id := p_asset_id;
60 l_asset_hdr_rec.book_type_code := p_book_type_code;
61 l_asset_type_rec.asset_type := 'GROUP';
62
63 -- call the cache for the primary transaction book
64 if NOT fa_cache_pkg.fazcbc(X_book => l_asset_hdr_rec.book_type_code
65 ,p_log_level_rec => p_log_level_rec) then
66 if (p_log_level_rec.statement_level) then
67 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling fazcbc',
68 p_log_level_rec => p_log_level_rec);
69 end if;
70
71 raise tgl_err;
72 end if;
73
74 -- load the period struct for current period info
75 if not FA_UTIL_PVT.get_period_rec(
76 p_book => l_asset_hdr_rec.book_type_code,
77 p_effective_date => NULL,
78 x_period_rec => l_period_rec
79 ,p_log_level_rec => p_log_level_rec) then
80 if (p_log_level_rec.statement_level) then
81 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling get_period_rec',
82 p_log_level_rec => p_log_level_rec);
83 end if;
84
85 raise tgl_err;
86 end if;
87
88 -- load the old fin structs
89 if not FA_UTIL_PVT.get_asset_fin_rec(
90 p_asset_hdr_rec => l_asset_hdr_rec,
91 px_asset_fin_rec => l_asset_fin_rec,
92 p_transaction_header_id => NULL,
93 p_mrc_sob_type_code => p_mrc_sob_type_code
94 ,p_log_level_rec => p_log_level_rec) then
95
96 if (p_log_level_rec.statement_level) then
97 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling get_asset_fin_rec',
98 p_log_level_rec => p_log_level_rec);
99 end if;
100
101 raise tgl_err;
102 end if;
103
104 -- Get last_update_date from fa_book_controls
105 -- date effective for this terminal gain loss trx
106 -- will be last_update_date - 1 sec.
107 if (p_mrc_sob_type_code = 'R') then
108 OPEN c_get_mc_deprn_run_date;
109 FETCH c_get_mc_deprn_run_date INTO l_date_effective
110 , l_updated_by
111 , l_update_login;
112 CLOSE c_get_mc_deprn_run_date;
113 else
114 OPEN c_get_deprn_run_date;
115 FETCH c_get_deprn_run_date INTO l_date_effective
116 , l_updated_by
117 , l_update_login;
118 CLOSE c_get_deprn_run_date;
119 end if;
120
121 l_date_effective := l_date_effective - (1/24/60/60);
122
123 if (p_log_level_rec.statement_level) then
124 fa_debug_pkg.add(l_db_title, 'INSERT', 'FA_TRANSACTION_HEADERS',
125 p_log_level_rec => p_log_level_rec);
126 end if;
127
128 --
129 -- Proceed to process FA_TRANSACTION_HEADERS if this is primary book');
130 --
131 if (nvl(p_mrc_sob_type_code, 'P') <> 'R') then
132 if (p_log_level_rec.statement_level) then
133 fa_debug_pkg.add(l_db_title, 'INSERT', 'FA_TRANSACTION_HEADERS',
134 p_log_level_rec => p_log_level_rec);
135 end if;
136
137 l_trans_rec.who_info.last_update_date := l_date_effective;
138 l_trans_rec.who_info.creation_date := l_date_effective;
139
140 SELECT fa_transaction_headers_s.nextval
141 INTO l_trans_rec.transaction_header_id
142 FROM DUAL;
143
144 l_trans_rec.transaction_subtype := 'AMORTIZED';
145 l_trans_rec.transaction_type_code := 'GROUP ADJUSTMENT';
146 l_trans_rec.transaction_key := 'TG';
147 l_trans_rec.transaction_date_entered := greatest(l_period_rec.calendar_period_open_date,
148 least(sysdate,l_period_rec.calendar_period_close_date));
149 l_trans_rec.amortization_start_date := l_trans_rec.transaction_date_entered;
150 l_trans_rec.calling_interface := 'FADEPR';
151
152
153 if (p_log_level_rec.statement_level) then
154 fa_debug_pkg.add(l_db_title, 'Calling', 'FA_XLA_EVENTS_PVT.create_transaction_event',
155 p_log_level_rec => p_log_level_rec);
156 end if;
157
158 if not FA_XLA_EVENTS_PVT.create_transaction_event(
159 p_asset_hdr_rec => l_asset_hdr_rec,
160 p_asset_type_rec => l_asset_type_rec,
161 px_trans_rec => l_trans_rec,
162 p_event_status => NULL,
163 p_calling_fn => l_calling_fn
164 ,p_log_level_rec => p_log_level_rec) then
165
166 if (p_log_level_rec.statement_level) then
167 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling create_transaction_event',
168 p_log_level_rec => p_log_level_rec);
169 end if;
170
171 raise tgl_err;
172 end if;
173
174
175 FA_TRANSACTION_HEADERS_PKG.Insert_Row
176 (X_Rowid => l_th_rowid,
177 X_Transaction_Header_Id => l_trans_rec.transaction_header_id,
178 X_Book_Type_Code => l_asset_hdr_rec.book_type_code,
179 X_Asset_Id => l_asset_hdr_rec.asset_id,
180 X_Transaction_Type_Code => l_trans_rec.transaction_type_code,
181 X_Transaction_Date_Entered => l_trans_rec.transaction_date_entered,
182 X_Date_Effective => l_trans_rec.who_info.creation_date,
183 X_Last_Update_Date => l_trans_rec.who_info.last_update_date,
184 X_Last_Updated_By => l_trans_rec.who_info.last_updated_by,
185 X_Transaction_Name => l_trans_rec.transaction_name,
186 X_Invoice_Transaction_Id => null,
187 X_Source_Transaction_Header_Id => l_trans_rec.Source_Transaction_Header_Id,
188 X_Mass_Reference_Id => l_trans_rec.mass_reference_id,
189 X_Last_Update_Login => l_trans_rec.who_info.last_update_login,
190 X_Transaction_Subtype => l_trans_rec.transaction_subtype,
191 X_Attribute1 => l_trans_rec.desc_flex.attribute1,
192 X_Attribute2 => l_trans_rec.desc_flex.attribute2,
193 X_Attribute3 => l_trans_rec.desc_flex.attribute3,
194 X_Attribute4 => l_trans_rec.desc_flex.attribute4,
195 X_Attribute5 => l_trans_rec.desc_flex.attribute5,
196 X_Attribute6 => l_trans_rec.desc_flex.attribute6,
197 X_Attribute7 => l_trans_rec.desc_flex.attribute7,
198 X_Attribute8 => l_trans_rec.desc_flex.attribute8,
199 X_Attribute9 => l_trans_rec.desc_flex.attribute9,
200 X_Attribute10 => l_trans_rec.desc_flex.attribute10,
201 X_Attribute11 => l_trans_rec.desc_flex.attribute11,
202 X_Attribute12 => l_trans_rec.desc_flex.attribute12,
203 X_Attribute13 => l_trans_rec.desc_flex.attribute13,
204 X_Attribute14 => l_trans_rec.desc_flex.attribute14,
205 X_Attribute15 => l_trans_rec.desc_flex.attribute15,
206 X_Attribute_Category_Code => l_trans_rec.desc_flex.attribute_category_code,
207 X_Transaction_Key => l_trans_rec.transaction_key,
208 X_Amortization_Start_Date => l_trans_rec.amortization_start_date,
209 X_Calling_Interface => l_trans_rec.calling_interface,
210 X_Mass_Transaction_ID => l_trans_rec.mass_transaction_id,
211 X_Member_Transaction_Header_Id => l_trans_rec.member_transaction_header_id,
212 X_Trx_Reference_Id => l_trans_rec.trx_reference_id,
213 X_Event_Id => l_trans_rec.event_id,
214 X_Return_Status => l_status,
215 X_Calling_Fn => l_calling_fn
216 ,p_log_level_rec => p_log_level_rec);
217 if not l_status then
218 if (p_log_level_rec.statement_level) then
219 fa_debug_pkg.add(l_db_title, 'Failed to insert ', 'FA_TRANSACTION_HEADERS',
220 p_log_level_rec => p_log_level_rec);
221 end if;
222 raise tgl_err;
223 end if;
224
225 end if;
226
227 if (p_log_level_rec.statement_level) then
228 fa_debug_pkg.add(l_db_title, 'INSERT', 'FA_ADJUSTMENTS',
229 p_log_level_rec => p_log_level_rec);
230 end if;
231
232 -- Create following entries in FA_ADJUSTMENTS
233 -- DR RESERVE
234 -- CR NBV GAIN or NBV LOSS
235
236 l_adj.asset_id := l_asset_hdr_rec.asset_id;
237 l_adj.book_type_code := l_asset_hdr_rec.book_type_code;
238 l_adj.period_counter_created := l_period_rec.period_counter;
239 l_adj.period_counter_adjusted := l_period_rec.period_counter;
240 l_adj.transaction_header_id := l_trans_rec.transaction_header_id;
241 l_adj.source_type_code := 'ADJUSTMENT';
242
243 l_adj.selection_retid := 0;
244 l_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_ACTIVE;
245 l_adj.leveling_flag := TRUE;
246 l_adj.flush_adj_flag := FALSE;
247 l_adj.last_update_date := sysdate;
248 l_adj.gen_ccid_flag := TRUE;
249 l_adj.adjustment_type := 'RESERVE';
250 l_adj.account_type := 'DEPRN_RESERVE_ACCT';
251
252 l_adj.adjustment_amount := abs(p_deprn_reserve);
253
254 if (p_deprn_reserve > 0) then
255 l_adj.debit_credit_flag := 'DR';
256 else
257 l_adj.debit_credit_flag := 'CR';
258 end if;
259
260
261 OPEN c_get_unit;
262 FETCH c_get_unit INTO l_adj.current_units , l_asset_cat_rec.category_id;
263 CLOSE c_get_unit;
264
265 if not fa_cache_pkg.fazccb(l_asset_hdr_rec.book_type_code,
266 l_asset_cat_rec.category_id
267 ,p_log_level_rec => p_log_level_rec) then
268 if (p_log_level_rec.statement_level) then
269 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling fazccb',
270 p_log_level_rec => p_log_level_rec);
271 end if;
272
273 raise tgl_err;
274 end if;
275
276 l_adj.account := fa_cache_pkg.fazccb_record.DEPRN_RESERVE_ACCT;
277
278 if (p_log_level_rec.statement_level) then
279 fa_debug_pkg.add(l_db_title, 'CALL', 'FA_INS_ADJUST_PKG.faxinaj for RESERVE',
280 p_log_level_rec => p_log_level_rec);
281 end if;
282
283 if not FA_INS_ADJUST_PKG.faxinaj(
284 l_adj,
285 l_trans_rec.who_info.last_update_date,
286 l_trans_rec.who_info.last_updated_by,
287 l_trans_rec.who_info.last_update_login
288 ,p_log_level_rec => p_log_level_rec) then
289
290 if (p_log_level_rec.statement_level) then
291 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling faxinaj',
292 p_log_level_rec => p_log_level_rec);
293 end if;
294
295 raise tgl_err;
296 end if;
297
298 l_adj.adjustment_type := 'NBV RETIRED';
299 l_adj.adjustment_amount := abs(p_deprn_reserve);
300 l_adj.flush_adj_flag := TRUE;
301
302 if (p_deprn_reserve > 0) then
303 l_adj.debit_credit_flag := 'CR';
304 l_adj.account_type := 'NBV_RETIRED_GAIN_ACCT';
305 l_adj.account := fa_cache_pkg.fazcbc_record.nbv_retired_gain_acct;
306 else
307 l_adj.debit_credit_flag := 'DR';
308 l_adj.account_type := 'NBV_RETIRED_LOSS_ACCT';
309 l_adj.account := fa_cache_pkg.fazcbc_record.nbv_retired_loss_acct;
310 end if;
311
312 if (p_log_level_rec.statement_level) then
313 fa_debug_pkg.add(l_db_title, 'CALL', 'FA_INS_ADJUST_PKG.faxinaj for NBV GAIN/LOSS',
314 p_log_level_rec => p_log_level_rec);
315 end if;
316
317 if not FA_INS_ADJUST_PKG.faxinaj(
318 l_adj,
319 l_trans_rec.who_info.last_update_date,
320 l_trans_rec.who_info.last_updated_by,
321 l_trans_rec.who_info.last_update_login
322 ,p_log_level_rec => p_log_level_rec) then
323 if (p_log_level_rec.statement_level) then
324 fa_debug_pkg.add(l_db_title, 'ERROR', 'Calling faxinaj',
325 p_log_level_rec => p_log_level_rec);
326 end if;
327
328 raise tgl_err;
329 end if;
330
331
332 -- Deactivate(Update) FA_BOOKS
333 if (p_log_level_rec.statement_level) then
334 fa_debug_pkg.add(l_db_title, 'DEACTIVATE', 'FA_BOOKS',
335 p_log_level_rec => p_log_level_rec);
336 end if;
337
338 fa_books_pkg.deactivate_row
339 (X_asset_id => l_asset_hdr_rec.asset_id,
340 X_book_type_code => l_asset_hdr_rec.book_type_code,
341 X_transaction_header_id_out => l_trans_rec.transaction_header_id,
342 X_date_ineffective => l_trans_rec.who_info.last_update_date,
343 X_mrc_sob_type_code => p_mrc_sob_type_code,
344 X_Calling_Fn => l_calling_fn
345 ,p_log_level_rec => p_log_level_rec);
346
347 -- Insert into FA_BOOKS
348 if (p_log_level_rec.statement_level) then
349 fa_debug_pkg.add(l_db_title, 'INSERT', 'FA_BOOKS',
350 p_log_level_rec => p_log_level_rec);
351 end if;
352
353 fa_books_pkg.insert_row
354 (X_Rowid => l_bks_rowid,
355 X_Book_Type_Code => l_asset_hdr_rec.book_type_code,
356 X_Asset_Id => l_asset_hdr_rec.asset_id,
357 X_Date_Placed_In_Service => l_asset_fin_rec.date_placed_in_service,
358 X_Date_Effective => l_trans_rec.who_info.last_update_date,
359 X_Deprn_Start_Date => l_asset_fin_rec.deprn_start_date,
360 X_Deprn_Method_Code => l_asset_fin_rec.deprn_method_code,
361 X_Life_In_Months => l_asset_fin_rec.life_in_months,
362 X_Rate_Adjustment_Factor => l_asset_fin_rec.rate_adjustment_factor,
363 X_Adjusted_Cost => l_asset_fin_rec.adjusted_cost,
364 X_Cost => l_asset_fin_rec.cost,
365 X_Original_Cost => l_asset_fin_rec.original_cost,
366 X_Salvage_Value => l_asset_fin_rec.salvage_value,
367 X_Prorate_Convention_Code => l_asset_fin_rec.prorate_convention_code,
368 X_Prorate_Date => l_asset_fin_rec.prorate_date,
369 X_Cost_Change_Flag => l_asset_fin_rec.cost_change_flag,
370 X_Adjustment_Required_Status => l_asset_fin_rec.adjustment_required_status,
371 X_Capitalize_Flag => l_asset_fin_rec.capitalize_flag,
372 X_Retirement_Pending_Flag => l_asset_fin_rec.retirement_pending_flag,
373 X_Depreciate_Flag => l_asset_fin_rec.depreciate_flag,
374 X_Disabled_Flag => l_asset_fin_rec.disabled_flag, --HH
375 X_Last_Update_Date => l_trans_rec.who_info.last_update_date,
376 X_Last_Updated_By => l_trans_rec.who_info.last_updated_by,
377 X_Date_Ineffective => NULL,
378 X_Transaction_Header_Id_In => l_trans_rec.transaction_header_id,
379 X_Transaction_Header_Id_Out => NULL,
380 X_Itc_Amount_Id => l_asset_fin_rec.itc_amount_id,
381 X_Itc_Amount => l_asset_fin_rec.itc_amount,
382 X_Retirement_Id => l_asset_fin_rec.retirement_id,
383 X_Tax_Request_Id => l_asset_fin_rec.tax_request_id,
384 X_Itc_Basis => l_asset_fin_rec.itc_basis,
385 X_Basic_Rate => l_asset_fin_rec.basic_rate,
386 X_Adjusted_Rate => l_asset_fin_rec.adjusted_rate,
387 X_Bonus_Rule => l_asset_fin_rec.bonus_rule,
388 X_Ceiling_Name => l_asset_fin_rec.ceiling_name,
389 X_Recoverable_Cost => l_asset_fin_rec.recoverable_cost,
390 X_Last_Update_Login => l_trans_rec.who_info.last_update_login,
391 X_Adjusted_Capacity => l_asset_fin_rec.adjusted_capacity,
392 X_Fully_Rsvd_Revals_Counter => l_asset_fin_rec.fully_rsvd_revals_counter,
393 X_Idled_Flag => l_asset_fin_rec.idled_flag,
394 X_Period_Counter_Capitalized => l_asset_fin_rec.period_counter_capitalized,
395 X_PC_Fully_Reserved => l_asset_fin_rec.period_counter_fully_reserved,
396 X_Period_Counter_Fully_Retired => l_asset_fin_rec.period_counter_fully_retired,
397 X_Production_Capacity => l_asset_fin_rec.production_capacity,
398 X_Reval_Amortization_Basis => l_asset_fin_rec.reval_amortization_basis,
399 X_Reval_Ceiling => l_asset_fin_rec.reval_ceiling,
400 X_Unit_Of_Measure => l_asset_fin_rec.unit_of_measure,
401 X_Unrevalued_Cost => l_asset_fin_rec.unrevalued_cost,
402 X_Annual_Deprn_Rounding_Flag => l_asset_fin_rec.annual_deprn_rounding_flag,
403 X_Percent_Salvage_Value => l_asset_fin_rec.percent_salvage_value,
404 X_Allowed_Deprn_Limit => l_asset_fin_rec.allowed_deprn_limit,
405 X_Allowed_Deprn_Limit_Amount => l_asset_fin_rec.allowed_deprn_limit_amount,
406 X_Period_Counter_Life_Complete => l_asset_fin_rec.period_counter_life_complete,
407 X_Adjusted_Recoverable_Cost => l_asset_fin_rec.adjusted_recoverable_cost,
408 X_Short_Fiscal_Year_Flag => l_asset_fin_rec.short_fiscal_year_flag,
409 X_Conversion_Date => l_asset_fin_rec.conversion_date,
410 X_Orig_Deprn_Start_Date => l_asset_fin_rec.orig_deprn_start_date,
411 X_Remaining_Life1 => l_asset_fin_rec.remaining_life1,
412 X_Remaining_Life2 => l_asset_fin_rec.remaining_life2,
413 X_Old_Adj_Cost => l_asset_fin_rec.old_adjusted_cost,
414 X_Formula_Factor => l_asset_fin_rec.formula_factor,
415 X_gf_Attribute1 => l_asset_fin_rec.global_attribute1,
416 X_gf_Attribute2 => l_asset_fin_rec.global_attribute2,
417 X_gf_Attribute3 => l_asset_fin_rec.global_attribute3,
418 X_gf_Attribute4 => l_asset_fin_rec.global_attribute4,
419 X_gf_Attribute5 => l_asset_fin_rec.global_attribute5,
420 X_gf_Attribute6 => l_asset_fin_rec.global_attribute6,
421 X_gf_Attribute7 => l_asset_fin_rec.global_attribute7,
422 X_gf_Attribute8 => l_asset_fin_rec.global_attribute8,
423 X_gf_Attribute9 => l_asset_fin_rec.global_attribute9,
424 X_gf_Attribute10 => l_asset_fin_rec.global_attribute10,
425 X_gf_Attribute11 => l_asset_fin_rec.global_attribute11,
426 X_gf_Attribute12 => l_asset_fin_rec.global_attribute12,
427 X_gf_Attribute13 => l_asset_fin_rec.global_attribute13,
428 X_gf_Attribute14 => l_asset_fin_rec.global_attribute14,
429 X_gf_Attribute15 => l_asset_fin_rec.global_attribute15,
430 X_gf_Attribute16 => l_asset_fin_rec.global_attribute16,
431 X_gf_Attribute17 => l_asset_fin_rec.global_attribute17,
432 X_gf_Attribute18 => l_asset_fin_rec.global_attribute18,
433 X_gf_Attribute19 => l_asset_fin_rec.global_attribute19,
434 X_gf_Attribute20 => l_asset_fin_rec.global_attribute20,
435 X_global_attribute_category => l_asset_fin_rec.global_attribute_category,
436 X_group_asset_id => l_asset_fin_rec.group_asset_id,
437 X_salvage_type => l_asset_fin_rec.salvage_type,
438 X_deprn_limit_type => l_asset_fin_rec.deprn_limit_type,
439 X_over_depreciate_option => l_asset_fin_rec.over_depreciate_option,
440 X_super_group_id => l_asset_fin_rec.super_group_id,
441 X_reduction_rate => l_asset_fin_rec.reduction_rate,
442 X_reduce_addition_flag => l_asset_fin_rec.reduce_addition_flag,
443 X_reduce_adjustment_flag => l_asset_fin_rec.reduce_adjustment_flag,
444 X_reduce_retirement_flag => l_asset_fin_rec.reduce_retirement_flag,
445 X_recognize_gain_loss => l_asset_fin_rec.recognize_gain_loss,
446 X_recapture_reserve_flag => l_asset_fin_rec.recapture_reserve_flag,
447 X_limit_proceeds_flag => l_asset_fin_rec.limit_proceeds_flag,
448 X_terminal_gain_loss => l_asset_fin_rec.terminal_gain_loss,
449 X_exclude_proceeds_from_basis => l_asset_fin_rec.exclude_proceeds_from_basis,
450 X_retirement_deprn_option => l_asset_fin_rec.retirement_deprn_option,
451 X_tracking_method => l_asset_fin_rec.tracking_method,
452 X_allocate_to_fully_rsv_flag => l_asset_fin_rec.allocate_to_fully_rsv_flag,
453 X_allocate_to_fully_ret_flag => l_asset_fin_rec.allocate_to_fully_ret_flag,
454 X_exclude_fully_rsv_flag => l_asset_fin_rec.exclude_fully_rsv_flag,
455 X_excess_allocation_option => l_asset_fin_rec.excess_allocation_option,
456 X_depreciation_option => l_asset_fin_rec.depreciation_option,
457 X_member_rollup_flag => l_asset_fin_rec.member_rollup_flag,
458 X_ytd_proceeds => l_asset_fin_rec.ytd_proceeds,
459 X_ltd_proceeds => l_asset_fin_rec.ltd_proceeds,
460 X_eofy_reserve => l_asset_fin_rec.eofy_reserve,
461 X_cip_cost => l_asset_fin_rec.cip_cost,
462 X_terminal_gain_loss_amount => p_deprn_reserve,
463 X_terminal_gain_loss_flag => null,
464 X_ltd_cost_of_removal => l_asset_fin_rec.ltd_cost_of_removal,
465 X_mrc_sob_type_code => p_mrc_sob_type_code,
466 X_Return_Status => l_status,
467 X_Calling_Fn => l_calling_fn
468 ,p_log_level_rec => p_log_level_rec);
469
470
471 if not l_status then
472 if (p_log_level_rec.statement_level) then
473 fa_debug_pkg.add(l_db_title, 'Failed to insert ', 'FA_BOOKS',
474 p_log_level_rec => p_log_level_rec);
475 end if;
476 raise tgl_err;
477 end if;
478
479 -- Update FA_BOOKS_SUMMARY
480 if (p_log_level_rec.statement_level) then
481 fa_debug_pkg.add(l_db_title, 'Update', 'FA_BOOKS_SUMMARY: '||p_mrc_sob_type_code,
482 p_log_level_rec => p_log_level_rec);
483 end if;
484
485 if (p_mrc_sob_type_code = 'R') then
486 UPDATE FA_BOOKS_SUMMARY_MRC_V
487 SET TERMINAL_GAIN_LOSS_AMOUNT = p_deprn_reserve
488 , TERMINAL_GAIN_LOSS_FLAG = 'C'
489 , RESERVE_ADJUSTMENT_AMOUNT = RESERVE_ADJUSTMENT_AMOUNT + p_deprn_reserve
490 , DEPRN_RESERVE = DEPRN_RESERVE + p_deprn_reserve
491 WHERE ASSET_ID = l_asset_hdr_rec.asset_id
492 AND BOOK_TYPE_CODE = l_asset_hdr_rec.book_type_code
493 AND PERIOD_COUNTER = l_period_rec.period_counter;
494 else
495 UPDATE FA_BOOKS_SUMMARY
496 SET TERMINAL_GAIN_LOSS_AMOUNT = p_deprn_reserve
497 , TERMINAL_GAIN_LOSS_FLAG = 'C'
498 , RESERVE_ADJUSTMENT_AMOUNT = RESERVE_ADJUSTMENT_AMOUNT + p_deprn_reserve
499 , DEPRN_RESERVE = DEPRN_RESERVE + p_deprn_reserve
500 WHERE ASSET_ID = l_asset_hdr_rec.asset_id
501 AND BOOK_TYPE_CODE = l_asset_hdr_rec.book_type_code
502 AND PERIOD_COUNTER = l_period_rec.period_counter;
503 end if;
504
505
506 if (p_log_level_rec.statement_level) then
507 fa_debug_pkg.add(l_db_title, 'END', p_asset_id,
508 p_log_level_rec => p_log_level_rec);
509 end if;
510
511 return 0;
512
513 EXCEPTION
514 WHEN tgl_err THEN
515 if (p_log_level_rec.statement_level) then
516 fa_debug_pkg.add(l_db_title, 'EXCEPTION', 'tgl_err',
517 p_log_level_rec => p_log_level_rec);
518 fa_debug_pkg.add(l_db_title, 'EXCEPTION(tgl_err)', sqlerrm);
519 end if;
520 return 1;
521
522 WHEN OTHERS THEN
523 if (p_log_level_rec.statement_level) then
524 fa_debug_pkg.add(l_db_title, 'EXCEPTION(OTHERS)', sqlerrm);
525 end if;
526 return 1;
527
528 END fadtgl;
529
530 END FA_TERMINAL_GAIN_LOSS_PVT;