[Home] [Help]
PACKAGE BODY: APPS.FA_REVALUATION_PVT
Source
1 PACKAGE BODY fa_revaluation_pvt AS
2 /* $Header: FAVRVLB.pls 120.21.12020000.5 2013/03/29 11:26:22 saalampa ship $ */
3 g_old_nbv NUMBER;
4 g_new_nbv NUMBER;
5 g_dpr_out fa_std_types.dpr_out_struct;
6
7 FUNCTION do_reval (
8 px_trans_rec IN OUT NOCOPY fa_api_types.trans_rec_type,
9 px_asset_hdr_rec IN OUT NOCOPY fa_api_types.asset_hdr_rec_type,
10 p_asset_desc_rec IN fa_api_types.asset_desc_rec_type,
11 p_asset_type_rec IN fa_api_types.asset_type_rec_type,
12 p_asset_cat_rec IN fa_api_types.asset_cat_rec_type,
13 p_asset_fin_rec_old IN fa_api_types.asset_fin_rec_type,
14 p_asset_deprn_rec_old IN fa_api_types.asset_deprn_rec_type,
15 p_period_rec IN fa_api_types.period_rec_type,
16 p_mrc_sob_type_code IN VARCHAR2,
17 p_reval_options_rec IN fa_api_types.reval_options_rec_type,
18 p_calling_fn IN VARCHAR2
19 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
20 RETURN BOOLEAN
21 IS
22 l_th_rowid VARCHAR2 (30);
23 l_bks_rowid VARCHAR2 (30);
24 l_status BOOLEAN;
25 l_asset_fin_rec_new fa_api_types.asset_fin_rec_type;
26 l_asset_deprn_rec_new fa_api_types.asset_deprn_rec_type;
27 l_reval_out_rec fa_std_types.reval_out_struct;
28 -- rx columns
29 l_concat_cat VARCHAR2 (220);
30 l_cat_segs fa_rx_shared_pkg.seg_array;
31 l_override_defaults VARCHAR2 (80);
32 l_reval_fully_rsvd VARCHAR2 (80);
33 l_revalue_cip_assets VARCHAR2 (80);
34 --Secondary changes
35 l_secondary_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
36 l_secondary_trans_rec fa_api_types.trans_rec_type;
37 l_secondary_sob_id number;
38
39 CURSOR yes_no_meaning (p_lookup_code VARCHAR2)
40 IS
41 SELECT NVL (meaning, p_lookup_code)
42 FROM fa_lookups
43 WHERE lookup_code = p_lookup_code AND lookup_type = 'YESNO';
44
45 l_calling_fn VARCHAR2 (35) := 'fa_reval_pvt.do_reval';
46 reval_err EXCEPTION;
47
48 -- Bug7719742
49 l_method_type NUMBER := 0;
50 l_success INTEGER;
51 l_rate_in_use NUMBER;
52
53 l_nbv_old NUMBER := 0;
54 l_nbv_delta NUMBER := 0;
55
56 /*ER 14644811 */
57 l_dpr_row FA_STD_TYPES.FA_DEPRN_ROW_STRUCT;
58 l_running_mode VARCHAR2(20);
59 l_capital_adj NUMBER;
60 l_general_fund NUMBER;
61
62 BEGIN
63 --set up transaction types for adjustments vs. addition voids
64 -- reval is currently not allowed in period of addition
65 px_trans_rec.transaction_type_code := 'REVALUATION';
66
67 IF (p_reval_options_rec.run_mode = 'RUN')
68 THEN
69 -- insert transaction headers
70 IF (p_mrc_sob_type_code <> 'R')
71 THEN
72 -- we need the thid first before reval engine or do we
73 SELECT fa_transaction_headers_s.NEXTVAL
74 INTO px_trans_rec.transaction_header_id
75 FROM DUAL;
76
77 -- Bug 15877517 : Reinitialize who_info as well
78 px_trans_rec.who_info.creation_date := sysdate;
79 px_trans_rec.who_info.last_update_date := sysdate;
80
81 END IF;
82 END IF;
83
84 -- load the structs needed by reval engine
85 -- this may come later inside fareven, thus passing the
86 -- common api structs to that routine
87
88 -- copy current old recs to new and reval engine will overlay them
89 -- with the new values where appropriate
90 l_asset_fin_rec_new := p_asset_fin_rec_old;
91 l_asset_deprn_rec_new := p_asset_deprn_rec_old;
92
93 IF (NVL(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y') THEN
94
95 l_nbv_old := (p_asset_fin_rec_old.recoverable_cost
96 - p_asset_deprn_rec_old.deprn_reserve
97 + NVL(p_asset_fin_rec_old.salvage_value,0)
98 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0));
99
100 IF p_reval_options_rec.value_type = 'NBV'
101 THEN
102 l_nbv_delta := p_reval_options_rec.reval_percent - l_nbv_old;
103 ELSIF p_reval_options_rec.value_type = 'AMT'
104 THEN
105 l_nbv_delta := p_reval_options_rec.reval_percent;
106 ELSIF p_reval_options_rec.value_type = 'PER' THEN
107 l_nbv_delta := l_nbv_old*(p_reval_options_rec.reval_percent/100);
108 END IF;
109
110 END IF;
111
112 IF p_reval_options_rec.period_end_reval_flag = 'Y' THEN
113 px_trans_rec.transaction_key := 'PR' ;
114 END IF;
115
116 IF (l_nbv_delta < 0 ) AND
117 (NVL(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y') THEN
118 --New transaction key
119 px_trans_rec.transaction_key := 'RL';
120 -- call the revaluation loss engine
121 IF NOT reval_loss (px_trans_rec => px_trans_rec,
122 p_asset_hdr_rec => px_asset_hdr_rec,
123 p_asset_desc_rec => p_asset_desc_rec,
124 p_asset_type_rec => p_asset_type_rec,
125 p_asset_cat_rec => p_asset_cat_rec,
126 p_asset_fin_rec_old => p_asset_fin_rec_old,
127 px_asset_fin_rec_new => l_asset_fin_rec_new,
128 p_asset_deprn_rec_old => p_asset_deprn_rec_old,
129 px_asset_deprn_rec_new => l_asset_deprn_rec_new,
130 p_period_rec => p_period_rec,
131 p_mrc_sob_type_code => p_mrc_sob_type_code,
132 p_reval_options_rec => p_reval_options_rec,
133 x_reval_out => l_reval_out_rec,
134 p_log_level_rec => p_log_level_rec)
135 THEN
136 RAISE reval_err;
137 END IF;
138 ELSE
139 -- call the revaluation GAIN engine
140 IF NOT fareven (px_trans_rec => px_trans_rec,
141 p_asset_hdr_rec => px_asset_hdr_rec,
142 p_asset_desc_rec => p_asset_desc_rec,
143 p_asset_type_rec => p_asset_type_rec,
144 p_asset_cat_rec => p_asset_cat_rec,
145 p_asset_fin_rec_old => p_asset_fin_rec_old,
146 px_asset_fin_rec_new => l_asset_fin_rec_new,
147 p_asset_deprn_rec_old => p_asset_deprn_rec_old,
148 px_asset_deprn_rec_new => l_asset_deprn_rec_new,
149 p_period_rec => p_period_rec,
150 p_mrc_sob_type_code => p_mrc_sob_type_code,
151 p_reval_options_rec => p_reval_options_rec,
152 x_reval_out => l_reval_out_rec,
153 p_log_level_rec => p_log_level_rec)
154 THEN
155 RAISE reval_err;
156 END IF;
157 END IF;
158
159 /* Bug 7488356 - Begin
160 The following logic is added only for SORP.
161 When the Impairment is followed by Revaluation,
162 This particular flag should be set to 'NONE' such that catchup wont be calculated*/
163 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
164 THEN
165 IF (l_asset_fin_rec_new.adjustment_required_status = 'ADD')
166 THEN
167 l_asset_fin_rec_new.adjustment_required_status := 'NONE';
168 END IF;
169 END IF;
170 /* Bug 7488356 - End*/
171
172 IF (p_log_level_rec.statement_level)
173 THEN
174 fa_debug_pkg.ADD (l_calling_fn,
175 'after call to fareven run_mode',
176 p_reval_options_rec.run_mode
177 , p_log_level_rec => p_log_level_rec);
178 fa_debug_pkg.ADD (l_calling_fn,
179 'after call to fareven insert_txn_flag',
180 l_reval_out_rec.insert_txn_flag
181 , p_log_level_rec => p_log_level_rec);
182 END IF;
183
184 -- if run_mode = RUN, then call the table handlers to process
185 -- the revaluation else insert into the temp table for preview report
186 IF ( p_reval_options_rec.run_mode = 'RUN'
187 AND l_reval_out_rec.insert_txn_flag
188 )
189 THEN
190 -- insert transaction headers
191 IF (p_mrc_sob_type_code <> 'R')
192 THEN
193 IF (p_log_level_rec.statement_level)
194 THEN
195 fa_debug_pkg.ADD (l_calling_fn,
196 'trx_date before insert',
197 px_trans_rec.transaction_date_entered
198 , p_log_level_rec => p_log_level_rec);
199 END IF;
200 -- SLA UPTAKE
201 -- assign an event for the transaction
202 -- at this point key info asset/book/trx info is known from above code
203 -- *** but trx_date_entered may not be correct! - revisit ***
204
205 if not fa_xla_events_pvt.create_transaction_event
206 (p_asset_hdr_rec => px_asset_hdr_rec,
207 p_asset_type_rec=> p_asset_type_rec,
208 px_trans_rec => px_trans_rec,
209 p_event_status => NULL,
210 p_calling_fn => l_calling_fn
211 ,p_log_level_rec => p_log_level_rec) then
212 raise reval_err;
213 end if;
214
215 /*=================================================================
216 Secondary Changes Start
217 If primary and secondary sob_id is different then we need to
218 create/update/delete event for secondary ledger*/
219 l_secondary_sob_id := FA_XLA_EVENTS_PVT.get_secondary_sob_id(px_asset_hdr_rec.book_type_code);
220 if(l_secondary_sob_id is not null) then
221 l_secondary_asset_hdr_rec := px_asset_hdr_rec;
222 l_secondary_trans_rec := px_trans_rec;
223
224 l_secondary_asset_hdr_rec.set_of_books_id := l_secondary_sob_id;
225
226 if not fa_xla_events_pvt.create_transaction_event
227 (p_asset_hdr_rec => l_secondary_asset_hdr_rec,
228 p_asset_type_rec=> p_asset_type_rec,
229 px_trans_rec => l_secondary_trans_rec,
230 p_event_status => NULL,
231 p_calling_fn => l_calling_fn
232 ,p_log_level_rec => p_log_level_rec) then
233 raise reval_err;
234 end if;
235 end if;
236 /*Secondary Changes End
237 ==================================================================*/
238
239 fa_transaction_headers_pkg.insert_row
240 (x_rowid => l_th_rowid,
241 x_transaction_header_id => px_trans_rec.transaction_header_id,
242 x_book_type_code => px_asset_hdr_rec.book_type_code,
243 x_asset_id => px_asset_hdr_rec.asset_id,
244 x_transaction_type_code => px_trans_rec.transaction_type_code,
245 x_transaction_date_entered => px_trans_rec.transaction_date_entered,
246 x_date_effective => px_trans_rec.who_info.creation_date,
247 x_last_update_date => px_trans_rec.who_info.last_update_date,
248 x_last_updated_by => px_trans_rec.who_info.last_updated_by,
249 x_transaction_name => px_trans_rec.transaction_name,
250 x_invoice_transaction_id => NULL,
251 x_source_transaction_header_id => px_trans_rec.source_transaction_header_id,
252 x_mass_reference_id => px_trans_rec.mass_reference_id,
253 x_last_update_login => px_trans_rec.who_info.last_update_login,
254 x_transaction_subtype => px_trans_rec.transaction_subtype,
255 x_attribute1 => px_trans_rec.desc_flex.attribute1,
256 x_attribute2 => px_trans_rec.desc_flex.attribute2,
257 x_attribute3 => px_trans_rec.desc_flex.attribute3,
258 x_attribute4 => px_trans_rec.desc_flex.attribute4,
259 x_attribute5 => px_trans_rec.desc_flex.attribute5,
260 x_attribute6 => px_trans_rec.desc_flex.attribute6,
261 x_attribute7 => px_trans_rec.desc_flex.attribute7,
262 x_attribute8 => px_trans_rec.desc_flex.attribute8,
263 x_attribute9 => px_trans_rec.desc_flex.attribute9,
264 x_attribute10 => px_trans_rec.desc_flex.attribute10,
265 x_attribute11 => px_trans_rec.desc_flex.attribute11,
266 x_attribute12 => px_trans_rec.desc_flex.attribute12,
267 x_attribute13 => px_trans_rec.desc_flex.attribute13,
268 x_attribute14 => px_trans_rec.desc_flex.attribute14,
269 x_attribute15 => px_trans_rec.desc_flex.attribute15,
270 x_attribute_category_code => px_trans_rec.desc_flex.attribute_category_code,
271 x_transaction_key => px_trans_rec.transaction_key,
272 x_amortization_start_date => px_trans_rec.amortization_start_date,
273 x_calling_interface => px_trans_rec.calling_interface,
274 x_mass_transaction_id => px_trans_rec.mass_transaction_id,
275 x_member_transaction_header_id => px_trans_rec.member_transaction_header_id,
276 x_trx_reference_id => px_trans_rec.trx_reference_id,
277 x_event_id => px_trans_rec.event_id,
278 x_return_status => l_status,
279 x_calling_fn => l_calling_fn
280 , p_log_level_rec => p_log_level_rec);
281
282 IF NOT l_status
283 THEN
284 RAISE reval_err;
285 END IF;
286 END IF; -- primary / reporting
287
288 /*ER 14644811 */
289 if p_reval_options_rec.period_end_reval_flag = 'Y' then
290 l_dpr_row.asset_id := px_asset_hdr_rec.asset_id;
291 l_dpr_row.book := px_asset_hdr_rec.book_type_code;
292 l_dpr_row.period_ctr := p_period_rec.period_counter;
293 l_dpr_row.dist_id := 0;
294 l_dpr_row.mrc_sob_type_code := p_mrc_sob_type_code;
295 l_dpr_row.set_of_books_id := px_asset_hdr_rec.set_of_books_id;
296 l_running_mode := 'STANDARD';
297
298 if (p_log_level_rec.statement_level) then
299 fa_debug_pkg.add(l_calling_fn, 'Calling', 'query_balances_int', p_log_level_rec => p_log_level_rec);
300 end if;
301
302 fa_query_balances_pkg.query_balances_int(
303 X_DPR_ROW => l_dpr_row,
304 X_RUN_MODE => l_running_mode,
305 X_DEBUG => FALSE,
306 X_SUCCESS => l_status,
307 X_CALLING_FN => l_calling_fn,
308 X_TRANSACTION_HEADER_ID => -1, p_log_level_rec => p_log_level_rec);
309
310 if (NOT l_status) then
311
312 if (p_log_level_rec.statement_level) then
313 fa_debug_pkg.add(l_calling_fn, 'ERROR',
314 'Calling fa_query_balances_pkg.query_balances_int', p_log_level_rec => p_log_level_rec);
315 end if;
316
317 raise reval_err;
318 end if;
319
320 if nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y' then
321 l_capital_adj := l_dpr_row.capital_adjustment - nvl(l_asset_deprn_rec_new.reval_amortization,0) + nvl(l_asset_deprn_rec_new.DEPRN_AMOUNT,0);
322 l_general_fund := l_dpr_row.general_fund + nvl(l_asset_deprn_rec_new.DEPRN_AMOUNT,0);
323 else
324 l_capital_adj := 0;
325 l_general_fund := 0;
326 end if;
327
328 IF (p_mrc_sob_type_code <> 'R') then
329 INSERT INTO FA_DEPRN_SUMMARY( BOOK_TYPE_CODE
330 , ASSET_ID
331 , PERIOD_COUNTER
332 , DEPRN_RUN_DATE
333 , DEPRN_AMOUNT
334 , YTD_DEPRN
335 , DEPRN_RESERVE
336 , DEPRN_SOURCE_CODE
337 , ADJUSTED_COST
338 , BONUS_RATE
339 , REVAL_AMORTIZATION
340 , REVAL_DEPRN_EXPENSE
341 , REVAL_RESERVE
342 , YTD_REVAL_DEPRN_EXPENSE
343 , PRODUCTION
344 , YTD_PRODUCTION
345 , LTD_PRODUCTION
346 , REVAL_AMORTIZATION_BASIS
347 , PRIOR_FY_EXPENSE
348 , BONUS_DEPRN_AMOUNT
349 , BONUS_YTD_DEPRN
350 , BONUS_DEPRN_RESERVE
351 , BONUS_DEPRN_ADJUSTMENT_AMOUNT
352 , PRIOR_FY_BONUS_EXPENSE
353 , DEPRN_OVERRIDE_FLAG
354 , SYSTEM_DEPRN_AMOUNT
355 , SYSTEM_BONUS_DEPRN_AMOUNT
356 , IMPAIRMENT_AMOUNT
357 , YTD_IMPAIRMENT
358 , IMPAIRMENT_RESERVE
359 , CAPITAL_ADJUSTMENT
360 , GENERAL_FUND
361 , DEPRN_ADJUSTMENT_AMOUNT
362 , REVAL_LOSS_BALANCE
363 ) VALUES ( px_asset_hdr_rec.book_type_code -- BOOK_TYPE_CODE
364 , px_asset_hdr_rec.asset_id -- ASSET_ID
365 , p_period_rec.period_counter -- PERIOD_COUNTER
366 , px_trans_rec.who_info.last_update_date -- DEPRN_RUN_DATE
367 , l_asset_deprn_rec_new.deprn_amount +
368 nvl(l_dpr_row.deprn_exp, 0) -- DEPRN_AMOUNT
369 , l_asset_deprn_rec_new.ytd_deprn +
370 nvl(l_dpr_row.deprn_exp, 0) -- YTD_DEPRN
371 , l_asset_deprn_rec_new.deprn_reserve -- DEPRN_RESERVE
372 , 'DEPRN' -- DEPRN_SOURCE_CODE
373 , p_asset_fin_rec_old.adjusted_cost -- ADJUSTED_COST
374 , g_dpr_out.bonus_rate_used -- BONUS_RATE
375 , l_asset_deprn_rec_new.reval_amortization -- REVAL_AMORTIZATION
376 , l_asset_deprn_rec_new.reval_deprn_expense -- REVAL_DEPRN_EXPENSE
377 , l_asset_deprn_rec_new.reval_deprn_reserve -- REVAL_RESERVE
378 , l_asset_deprn_rec_new.reval_ytd_deprn -- YTD_REVAL_DEPRN_EXPENSE
379 , l_asset_deprn_rec_new.production -- PRODUCTION
380 , l_asset_deprn_rec_new.ytd_production -- YTD_PRODUCTION
381 , l_asset_deprn_rec_new.ltd_production -- LTD_PRODUCTION
382 , l_asset_deprn_rec_new.reval_amortization_basis -- REVAL_AMORTIZATION_BASIS
383 , l_asset_deprn_rec_new.prior_fy_expense -- PRIOR_FY_EXPENSE
384 , l_asset_deprn_rec_new.bonus_deprn_amount + -- BONUS_DEPRN_AMOUNT
385 nvl(l_dpr_row.bonus_deprn_amount, 0)
386 , l_asset_deprn_rec_new.bonus_ytd_deprn +
387 nvl(l_dpr_row.bonus_deprn_amount, 0) -- BONUS_YTD_DEPRN
388 , l_asset_deprn_rec_new.bonus_deprn_reserve -- BONUS_DEPRN_RESERVE
389 , nvl(l_dpr_row.bonus_deprn_amount, 0) -- BONUS_DEPRN_ADJUSTMENT_AMOUNT
390 , l_asset_deprn_rec_new.prior_fy_bonus_expense -- PRIOR_FY_BONUS_EXPENSE
391 , g_dpr_out.deprn_override_flag -- DEPRN_OVERRIDE_FLAG
392 , l_asset_deprn_rec_new.DEPRN_AMOUNT -- SYSTEM_DEPRN_AMOUNT
393 , l_asset_deprn_rec_new.bonus_deprn_amount -- SYSTEM_BONUS_DEPRN_AMOUNT
394 , l_dpr_row.impairment_amount -- IMPAIRMENT_AMOUNT
395 , l_asset_deprn_rec_new.ytd_impairment +
396 l_dpr_row.impairment_amount -- YTD_IMPAIRMENT
397 , l_asset_deprn_rec_new.impairment_reserve -- IMPAIRMENT_RESERVE
398 , l_capital_adj -- CAPITAL_ADJUSTMENT
399 , l_general_fund -- GENERAL_FUND
400 , nvl(l_dpr_row.deprn_exp, 0) -- DEPRN_ADJUSTMENT_AMOUNT
401 , NVL(l_asset_deprn_rec_new.reval_loss_balance,0) -- REVAL_LOSS_BALANCE
402 );
403 else
404 INSERT INTO FA_MC_DEPRN_SUMMARY(SET_OF_BOOKS_ID
405 , BOOK_TYPE_CODE
406 , ASSET_ID
407 , PERIOD_COUNTER
408 , DEPRN_RUN_DATE
409 , DEPRN_AMOUNT
410 , YTD_DEPRN
411 , DEPRN_RESERVE
412 , DEPRN_SOURCE_CODE
413 , ADJUSTED_COST
414 , BONUS_RATE
415 , REVAL_AMORTIZATION
416 , REVAL_DEPRN_EXPENSE
417 , REVAL_RESERVE
418 , YTD_REVAL_DEPRN_EXPENSE
419 , PRODUCTION
420 , YTD_PRODUCTION
421 , LTD_PRODUCTION
422 , REVAL_AMORTIZATION_BASIS
423 , PRIOR_FY_EXPENSE
424 , BONUS_DEPRN_AMOUNT
425 , BONUS_YTD_DEPRN
426 , BONUS_DEPRN_RESERVE
427 , BONUS_DEPRN_ADJUSTMENT_AMOUNT
428 , PRIOR_FY_BONUS_EXPENSE
429 , DEPRN_OVERRIDE_FLAG
430 , SYSTEM_DEPRN_AMOUNT
431 , SYSTEM_BONUS_DEPRN_AMOUNT
432 , IMPAIRMENT_AMOUNT
433 , YTD_IMPAIRMENT
434 , IMPAIRMENT_RESERVE
435 , CAPITAL_ADJUSTMENT
436 , GENERAL_FUND
437 , DEPRN_ADJUSTMENT_AMOUNT
438 , REVAL_LOSS_BALANCE
439 ) VALUES ( px_asset_hdr_rec.set_of_books_id -- SET_OF_BOOKS_ID
440 , px_asset_hdr_rec.book_type_code -- BOOK_TYPE_CODE
441 , px_asset_hdr_rec.asset_id -- ASSET_ID
442 , p_period_rec.period_counter -- PERIOD_COUNTER
443 , px_trans_rec.who_info.last_update_date -- DEPRN_RUN_DATE
444 , l_asset_deprn_rec_new.deprn_amount +
445 nvl(l_dpr_row.deprn_exp, 0) -- DEPRN_AMOUNT
446 , l_asset_deprn_rec_new.ytd_deprn +
447 nvl(l_dpr_row.deprn_exp, 0) -- YTD_DEPRN
448 , l_asset_deprn_rec_new.deprn_reserve -- DEPRN_RESERVE
449 , 'DEPRN' -- DEPRN_SOURCE_CODE
450 , p_asset_fin_rec_old.adjusted_cost -- ADJUSTED_COST
451 , g_dpr_out.bonus_rate_used -- BONUS_RATE
452 , l_asset_deprn_rec_new.reval_amortization -- REVAL_AMORTIZATION
453 , l_asset_deprn_rec_new.reval_deprn_expense -- REVAL_DEPRN_EXPENSE
454 , l_asset_deprn_rec_new.reval_deprn_reserve -- REVAL_RESERVE
455 , l_asset_deprn_rec_new.reval_ytd_deprn -- YTD_REVAL_DEPRN_EXPENSE
456 , l_asset_deprn_rec_new.production -- PRODUCTION
457 , l_asset_deprn_rec_new.ytd_production -- YTD_PRODUCTION
458 , l_asset_deprn_rec_new.ltd_production -- LTD_PRODUCTION
459 , l_asset_deprn_rec_new.reval_amortization_basis -- REVAL_AMORTIZATION_BASIS
460 , l_asset_deprn_rec_new.prior_fy_expense -- PRIOR_FY_EXPENSE
461 , l_asset_deprn_rec_new.bonus_deprn_amount + -- BONUS_DEPRN_AMOUNT
462 nvl(l_dpr_row.bonus_deprn_amount, 0)
463 , l_asset_deprn_rec_new.bonus_ytd_deprn +
464 nvl(l_dpr_row.bonus_deprn_amount, 0) -- BONUS_YTD_DEPRN
465 , l_asset_deprn_rec_new.bonus_deprn_reserve -- BONUS_DEPRN_RESERVE
466 , nvl(l_dpr_row.bonus_deprn_amount, 0) -- BONUS_DEPRN_ADJUSTMENT_AMOUNT
467 , l_asset_deprn_rec_new.prior_fy_bonus_expense -- PRIOR_FY_BONUS_EXPENSE
468 , g_dpr_out.deprn_override_flag -- DEPRN_OVERRIDE_FLAG
469 , l_asset_deprn_rec_new.DEPRN_AMOUNT -- SYSTEM_DEPRN_AMOUNT
470 , l_asset_deprn_rec_new.bonus_deprn_amount -- SYSTEM_BONUS_DEPRN_AMOUNT
471 , l_dpr_row.impairment_amount -- IMPAIRMENT_AMOUNT
472 , l_asset_deprn_rec_new.ytd_impairment +
473 l_dpr_row.impairment_amount -- YTD_IMPAIRMENT
474 , l_asset_deprn_rec_new.impairment_reserve -- IMPAIRMENT_RESERVE
475 , l_capital_adj -- CAPITAL_ADJUSTMENT
476 , l_general_fund -- GENERAL_FUND
477 , nvl(l_dpr_row.deprn_exp, 0) -- DEPRN_ADJUSTMENT_AMOUNT
478 , NVL(l_asset_deprn_rec_new.reval_loss_balance,0) -- REVAL_LOSS_BALANCE
479 );
480
481 end if;
482
483 if not FA_INS_DETAIL_PKG.FAXINDD
484 (X_book_type_code => px_asset_hdr_rec.book_type_code,
485 X_asset_id => px_asset_hdr_rec.asset_id,
486 X_period_counter => p_period_rec.period_counter,
487 X_cost => l_asset_fin_rec_new.cost,
488 X_deprn_reserve => nvl(l_asset_deprn_rec_new.deprn_reserve, 0),
489 X_deprn_adjustment_amount => nvl(l_dpr_row.deprn_exp, 0),
490 X_reval_reserve => nvl(l_asset_deprn_rec_new.reval_deprn_reserve, 0),
491 X_ytd => nvl(l_asset_deprn_rec_new.ytd_deprn, 0) + nvl(l_dpr_row.deprn_exp, 0),
492 X_ytd_reval_dep_exp => nvl(l_asset_deprn_rec_new.reval_ytd_deprn, 0),
493 X_bonus_ytd => nvl(l_asset_deprn_rec_new.bonus_ytd_deprn, 0) + nvl(l_dpr_row.bonus_deprn_amount, 0),
494 X_bonus_deprn_reserve => nvl(l_asset_deprn_rec_new.bonus_deprn_reserve, 0),
495 X_init_message_flag => 'NO',
496 X_bonus_deprn_adj_amount => nvl(l_dpr_row.bonus_deprn_amount, 0) ,
497 X_bonus_deprn_amount => l_asset_deprn_rec_new.bonus_deprn_amount + + nvl(l_dpr_row.bonus_deprn_amount, 0),
498 X_deprn_amount => l_asset_deprn_rec_new.deprn_amount + nvl(l_dpr_row.deprn_exp, 0),
499 X_reval_amortization => l_asset_deprn_rec_new.reval_amortization,
500 X_reval_deprn_expense => l_asset_deprn_rec_new.reval_deprn_expense,
501 X_impairment_amount => l_dpr_row.impairment_amount,
502 X_ytd_impairment => l_asset_deprn_rec_new.ytd_impairment + l_dpr_row.impairment_amount,
503 X_impairment_reserve => l_asset_deprn_rec_new.impairment_reserve,
504 X_capital_adjustment => l_capital_adj,
505 X_general_fund => l_general_fund,
506 X_b_row => FALSE,
507 X_mrc_sob_type_code => p_mrc_sob_type_code,
508 X_set_of_books_id => px_asset_hdr_rec.set_of_books_id,
509 p_log_level_rec => p_log_level_rec
510 ) then raise
511 reval_err;
512 end if;
513 end if;
514 -- terminate the active row
515 fa_books_pkg.deactivate_row
516 (x_asset_id => px_asset_hdr_rec.asset_id,
517 x_book_type_code => px_asset_hdr_rec.book_type_code,
518 x_transaction_header_id_out => px_trans_rec.transaction_header_id,
519 x_date_ineffective => px_trans_rec.who_info.last_update_date,
520 x_mrc_sob_type_code => p_mrc_sob_type_code,
521 x_set_of_books_id => px_asset_hdr_rec.set_of_books_id,
522 x_calling_fn => l_calling_fn
523 , p_log_level_rec => p_log_level_rec);
524
525 IF (p_log_level_rec.statement_level)
526 THEN
527 fa_debug_pkg.ADD (l_calling_fn,
528 'after fa_books_pkg.deactivate_row',
529 1
530 , p_log_level_rec => p_log_level_rec);
531 END IF;
532
533 -- fa books
534 fa_books_pkg.insert_row
535 (x_rowid => l_bks_rowid,
536 x_book_type_code => px_asset_hdr_rec.book_type_code,
537 x_asset_id => px_asset_hdr_rec.asset_id,
538 x_date_placed_in_service => l_asset_fin_rec_new.date_placed_in_service,
539 x_date_effective => px_trans_rec.who_info.last_update_date,
540 x_deprn_start_date => l_asset_fin_rec_new.deprn_start_date,
541 x_deprn_method_code => l_asset_fin_rec_new.deprn_method_code,
542 x_life_in_months => l_asset_fin_rec_new.life_in_months,
543 x_rate_adjustment_factor => l_asset_fin_rec_new.rate_adjustment_factor,
544 x_adjusted_cost => l_asset_fin_rec_new.adjusted_cost,
545 x_cost => l_asset_fin_rec_new.COST,
546 x_original_cost => l_asset_fin_rec_new.original_cost,
547 x_salvage_value => l_asset_fin_rec_new.salvage_value,
548 x_prorate_convention_code => l_asset_fin_rec_new.prorate_convention_code,
549 x_prorate_date => l_asset_fin_rec_new.prorate_date,
550 x_cost_change_flag => l_asset_fin_rec_new.cost_change_flag,
551 x_adjustment_required_status => l_asset_fin_rec_new.adjustment_required_status,
552 x_capitalize_flag => l_asset_fin_rec_new.capitalize_flag,
553 x_retirement_pending_flag => l_asset_fin_rec_new.retirement_pending_flag,
554 x_depreciate_flag => l_asset_fin_rec_new.depreciate_flag,
555 x_disabled_flag => l_asset_fin_rec_new.disabled_flag,
556 --HH
557 x_last_update_date => px_trans_rec.who_info.last_update_date,
558 x_last_updated_by => px_trans_rec.who_info.last_updated_by,
559 x_date_ineffective => NULL,
560 x_transaction_header_id_in => px_trans_rec.transaction_header_id,
561 x_transaction_header_id_out => NULL,
562 x_itc_amount_id => l_asset_fin_rec_new.itc_amount_id,
563 x_itc_amount => l_asset_fin_rec_new.itc_amount,
564 x_retirement_id => l_asset_fin_rec_new.retirement_id,
565 x_tax_request_id => l_asset_fin_rec_new.tax_request_id,
566 x_itc_basis => l_asset_fin_rec_new.itc_basis,
567 x_basic_rate => l_asset_fin_rec_new.basic_rate,
568 x_adjusted_rate => l_asset_fin_rec_new.adjusted_rate,
569 x_bonus_rule => l_asset_fin_rec_new.bonus_rule,
570 x_ceiling_name => l_asset_fin_rec_new.ceiling_name,
571 x_recoverable_cost => l_asset_fin_rec_new.recoverable_cost,
572 x_last_update_login => px_trans_rec.who_info.last_update_login,
573 x_adjusted_capacity => l_asset_fin_rec_new.adjusted_capacity,
574 x_fully_rsvd_revals_counter => l_asset_fin_rec_new.fully_rsvd_revals_counter,
575 x_idled_flag => l_asset_fin_rec_new.idled_flag,
576 x_period_counter_capitalized => l_asset_fin_rec_new.period_counter_capitalized,
577 x_pc_fully_reserved => l_asset_fin_rec_new.period_counter_fully_reserved,
578 x_period_counter_fully_retired => l_asset_fin_rec_new.period_counter_fully_retired,
579 x_production_capacity => l_asset_fin_rec_new.production_capacity,
580 x_reval_amortization_basis => l_asset_fin_rec_new.reval_amortization_basis,
581 x_reval_ceiling => l_asset_fin_rec_new.reval_ceiling,
582 x_unit_of_measure => l_asset_fin_rec_new.unit_of_measure,
583 x_unrevalued_cost => l_asset_fin_rec_new.unrevalued_cost,
584 x_annual_deprn_rounding_flag => l_asset_fin_rec_new.annual_deprn_rounding_flag,
585 x_percent_salvage_value => l_asset_fin_rec_new.percent_salvage_value,
586 x_allowed_deprn_limit => l_asset_fin_rec_new.allowed_deprn_limit,
587 x_allowed_deprn_limit_amount => l_asset_fin_rec_new.allowed_deprn_limit_amount,
588 x_period_counter_life_complete => l_asset_fin_rec_new.period_counter_life_complete,
589 x_adjusted_recoverable_cost => l_asset_fin_rec_new.adjusted_recoverable_cost,
590 x_short_fiscal_year_flag => l_asset_fin_rec_new.short_fiscal_year_flag,
591 x_conversion_date => l_asset_fin_rec_new.conversion_date,
592 x_orig_deprn_start_date => l_asset_fin_rec_new.orig_deprn_start_date,
593 x_remaining_life1 => l_asset_fin_rec_new.remaining_life1,
594 x_remaining_life2 => l_asset_fin_rec_new.remaining_life2,
595 x_old_adj_cost => l_asset_fin_rec_new.old_adjusted_cost,
596 x_formula_factor => l_asset_fin_rec_new.formula_factor,
597 x_gf_attribute1 => l_asset_fin_rec_new.global_attribute1,
598 x_gf_attribute2 => l_asset_fin_rec_new.global_attribute2,
599 x_gf_attribute3 => l_asset_fin_rec_new.global_attribute3,
600 x_gf_attribute4 => l_asset_fin_rec_new.global_attribute4,
601 x_gf_attribute5 => l_asset_fin_rec_new.global_attribute5,
602 x_gf_attribute6 => l_asset_fin_rec_new.global_attribute6,
603 x_gf_attribute7 => l_asset_fin_rec_new.global_attribute7,
604 x_gf_attribute8 => l_asset_fin_rec_new.global_attribute8,
605 x_gf_attribute9 => l_asset_fin_rec_new.global_attribute9,
606 x_gf_attribute10 => l_asset_fin_rec_new.global_attribute10,
607 x_gf_attribute11 => l_asset_fin_rec_new.global_attribute11,
608 x_gf_attribute12 => l_asset_fin_rec_new.global_attribute12,
609 x_gf_attribute13 => l_asset_fin_rec_new.global_attribute13,
610 x_gf_attribute14 => l_asset_fin_rec_new.global_attribute14,
611 x_gf_attribute15 => l_asset_fin_rec_new.global_attribute15,
612 x_gf_attribute16 => l_asset_fin_rec_new.global_attribute16,
613 x_gf_attribute17 => l_asset_fin_rec_new.global_attribute17,
614 x_gf_attribute18 => l_asset_fin_rec_new.global_attribute18,
615 x_gf_attribute19 => l_asset_fin_rec_new.global_attribute19,
616 x_gf_attribute20 => l_asset_fin_rec_new.global_attribute20,
617 x_global_attribute_category => l_asset_fin_rec_new.global_attribute_category,
618 x_group_asset_id => l_asset_fin_rec_new.group_asset_id,
619 x_salvage_type => l_asset_fin_rec_new.salvage_type,
620 x_deprn_limit_type => l_asset_fin_rec_new.deprn_limit_type,
621 x_over_depreciate_option => l_asset_fin_rec_new.over_depreciate_option,
622 x_super_group_id => l_asset_fin_rec_new.super_group_id,
623 x_reduction_rate => l_asset_fin_rec_new.reduction_rate,
624 x_reduce_addition_flag => l_asset_fin_rec_new.reduce_addition_flag,
625 x_reduce_adjustment_flag => l_asset_fin_rec_new.reduce_adjustment_flag,
626 x_reduce_retirement_flag => l_asset_fin_rec_new.reduce_retirement_flag,
627 x_recognize_gain_loss => l_asset_fin_rec_new.recognize_gain_loss,
628 x_recapture_reserve_flag => l_asset_fin_rec_new.recapture_reserve_flag,
629 x_limit_proceeds_flag => l_asset_fin_rec_new.limit_proceeds_flag,
630 x_terminal_gain_loss => l_asset_fin_rec_new.terminal_gain_loss,
631 x_exclude_proceeds_from_basis => l_asset_fin_rec_new.exclude_proceeds_from_basis,
632 x_retirement_deprn_option => l_asset_fin_rec_new.retirement_deprn_option,
633 x_tracking_method => l_asset_fin_rec_new.tracking_method,
634 x_allocate_to_fully_rsv_flag => l_asset_fin_rec_new.allocate_to_fully_rsv_flag,
635 x_allocate_to_fully_ret_flag => l_asset_fin_rec_new.allocate_to_fully_ret_flag,
636 x_exclude_fully_rsv_flag => l_asset_fin_rec_new.exclude_fully_rsv_flag,
637 x_excess_allocation_option => l_asset_fin_rec_new.excess_allocation_option,
638 x_depreciation_option => l_asset_fin_rec_new.depreciation_option,
639 x_member_rollup_flag => l_asset_fin_rec_new.member_rollup_flag,
640 x_ytd_proceeds => l_asset_fin_rec_new.ytd_proceeds,
641 x_ltd_proceeds => l_asset_fin_rec_new.ltd_proceeds,
642 x_eofy_reserve => l_asset_fin_rec_new.eofy_reserve,
643 x_cip_cost => l_asset_fin_rec_new.cip_cost,
644 x_terminal_gain_loss_amount => l_asset_fin_rec_new.terminal_gain_loss_amount,
645 x_ltd_cost_of_removal => l_asset_fin_rec_new.ltd_cost_of_removal,
646 x_cash_generating_unit_id => l_asset_fin_rec_new.cash_generating_unit_id,
647 x_mrc_sob_type_code => p_mrc_sob_type_code,
648 x_set_of_books_id => px_asset_hdr_rec.set_of_books_id,
649 x_return_status => l_status,
650 x_calling_fn => l_calling_fn
651 , p_log_level_rec => p_log_level_rec);
652
653 IF NOT l_status
654 THEN
655 RAISE reval_err;
656 END IF;
657
658 IF (p_log_level_rec.statement_level)
659 THEN
660 fa_debug_pkg.ADD (l_calling_fn, 'after books insert', 1, p_log_level_rec => p_log_level_rec);
661 END IF;
662 --bug7719742
663 --Added the following code to populate the rat_in_use column during revaluation
664 if nvl(fa_cache_pkg.fazccmt_record.guarantee_rate_method_flag,'NO') = 'YES' then
665
666 FA_CDE_PKG.faxgfr (X_Book_Type_Code => px_asset_hdr_rec.book_type_code,
667 X_Asset_Id => px_asset_hdr_rec.asset_id,
668 X_Short_Fiscal_Year_Flag => NULL,
669 X_Conversion_Date => NULL,
670 X_Prorate_Date => NULL,
671 X_Orig_Deprn_Start_Date => NULL,
672 C_Prorate_Date => NULL,
673 C_Conversion_Date => NULL,
674 C_Orig_Deprn_Start_Date => NULL,
675 X_Method_Code => l_asset_fin_rec_new.deprn_method_code,
676 X_Life_In_Months => l_asset_fin_rec_new.life_in_months,
677 X_Fiscal_Year => -99,
678 X_Current_Period => -99,
679 X_calling_interface => 'AFTER_REV',
680 X_Rate => l_rate_in_use,
681 X_Method_Type => l_method_type,
682 X_Success => l_success, p_log_level_rec => p_log_level_rec);
683
684 if (l_success <= 0) then
685 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
686 raise reval_err;
687 end if;
688
689 UPDATE FA_BOOKS
690 SET rate_in_use = l_rate_in_use
691 WHERE book_type_code = px_asset_hdr_rec.book_type_code
692 AND asset_id = px_asset_hdr_rec.asset_id
693 AND date_ineffective is null;
694
695 end if;
696 ELSIF (p_reval_options_rec.run_mode = 'PREVIEW')
697 THEN -- run_mode is preview
698 -- insert into temp report table (ITF?)
699 -- we could also build an array here and insert in bulk periodically (as we do in faxinaj)
700
701 -- Get the category in concatenated string for the asset's current category.
702 IF NOT fa_cache_pkg.fazsys(p_log_level_rec)
703 THEN
704 RAISE reval_err;
705 END IF;
706
707 IF p_log_level_rec.statement_level
708 THEN
709 fa_debug_pkg.ADD
710 (l_calling_fn,
711 'calling concat_category with cat struct: ',
712 fa_cache_pkg.fazsys_record.category_flex_structure
713 , p_log_level_rec => p_log_level_rec);
714 fa_debug_pkg.ADD (l_calling_fn,
715 'calling concat_category with cat id: ',
716 p_asset_cat_rec.category_id
717 , p_log_level_rec => p_log_level_rec);
718 END IF;
719
720 fa_rx_shared_pkg.concat_category
721 (struct_id => fa_cache_pkg.fazsys_record.category_flex_structure,
722 ccid => p_asset_cat_rec.category_id,
723 concat_string => l_concat_cat,
724 segarray => l_cat_segs);
725
726 -- need to reset the flags to YES/NO here
727 IF (NVL (p_reval_options_rec.override_defaults_flag, 'N') = 'Y')
728 THEN
729 l_override_defaults := 'YES';
730 ELSE
731 l_override_defaults := 'NO';
732 END IF;
733
734 IF (NVL (p_reval_options_rec.reval_fully_rsvd_flag, 'N') = 'Y')
735 THEN
736 l_reval_fully_rsvd := 'YES';
737 ELSE
738 l_reval_fully_rsvd := 'NO';
739 END IF;
740
741 -- get translated values for YESNO flags
742 OPEN yes_no_meaning (l_override_defaults);
743
744 FETCH yes_no_meaning
745 INTO l_override_defaults;
746
747 CLOSE yes_no_meaning;
748
749 OPEN yes_no_meaning (l_reval_fully_rsvd);
750
751 FETCH yes_no_meaning
752 INTO l_reval_fully_rsvd;
753
754 CLOSE yes_no_meaning;
755
756 IF p_log_level_rec.statement_level
757 THEN
758 fa_debug_pkg.ADD (l_calling_fn,
759 'inserting into: ',
760 'fa_mass_reval_rep_itf'
761 , p_log_level_rec => p_log_level_rec);
762 END IF;
763
764 -- Bug6666666 SORP Added columns OLD_NBV and NEW_NBV
765 IF p_log_level_rec.statement_level
766 THEN
767 fa_debug_pkg.ADD (l_calling_fn || ' SORP', 'OLD_NBV', g_old_nbv, p_log_level_rec => p_log_level_rec);
768 fa_debug_pkg.ADD (l_calling_fn || ' SORP', 'NEW_NBV', g_new_nbv, p_log_level_rec => p_log_level_rec);
769 END IF;
770
771 INSERT INTO fa_mass_reval_rep_itf
772 (request_id,
773 mass_reval_id,
774 book_type_code,
775 transaction_date_entered,
776 asset_id,
777 asset_number,
778 description,
779 asset_type,
780 asset_category_id, CATEGORY,
781 old_life,
782 new_life,
783 old_cost, new_cost,
784 old_deprn_reserve,
785 new_deprn_reserve,
786 old_reval_reserve,
787 new_reval_reserve,
788 reval_ceiling,
789 reval_percent, override_defaults,
790 reval_fully_rsvd,
791 life_extension_factor,
792 life_extension_ceiling,
793 max_fully_rsvd_revals, old_nbv,
794 new_nbv, last_update_date,
795 last_updated_by,
796 created_by,
797 creation_date,
798 last_update_login
799 )
800 VALUES (px_trans_rec.mass_reference_id,
801 px_trans_rec.mass_transaction_id,
802 px_asset_hdr_rec.book_type_code,
803 px_trans_rec.transaction_date_entered,
804 px_asset_hdr_rec.asset_id,
805 p_asset_desc_rec.asset_number,
806 p_asset_desc_rec.description,
807 p_asset_type_rec.asset_type,
808 p_asset_cat_rec.category_id, l_concat_cat,
809 p_asset_fin_rec_old.life_in_months,
810 l_asset_fin_rec_new.life_in_months,
811 p_asset_fin_rec_old.COST, l_asset_fin_rec_new.COST,
812 p_asset_deprn_rec_old.deprn_reserve,
813 l_asset_deprn_rec_new.deprn_reserve,
814 p_asset_deprn_rec_old.reval_deprn_reserve,
815 l_asset_deprn_rec_new.reval_deprn_reserve,
816 l_asset_fin_rec_new.reval_ceiling,
817 p_reval_options_rec.reval_percent, l_override_defaults,
818 l_reval_fully_rsvd,
819 p_reval_options_rec.life_extension_factor,
820 p_reval_options_rec.life_extension_ceiling,
821 p_reval_options_rec.max_fully_rsvd_revals, g_old_nbv,
822 g_new_nbv, px_trans_rec.who_info.last_update_date,
823 px_trans_rec.who_info.last_updated_by,
824 px_trans_rec.who_info.last_updated_by,
825 px_trans_rec.who_info.last_update_date,
826 px_trans_rec.who_info.last_update_login
827 );
828
829 IF p_log_level_rec.statement_level
830 THEN
831 fa_debug_pkg.ADD (l_calling_fn,
832 'after inserting into: ',
833 'fa_mass_reval_rep_itf'
834 , p_log_level_rec => p_log_level_rec);
835 END IF;
836 END IF; -- run_mode
837
838 RETURN TRUE;
839 EXCEPTION
840 WHEN reval_err
841 THEN
842 fa_srvr_msg.add_message (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
843 RETURN FALSE;
844 WHEN OTHERS
845 THEN
846 fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
847 RETURN FALSE;
848 END do_reval;
849
850 -----------------------------------------------------------------------------
851
852 -- this function contains validation for reval on an asset
853 FUNCTION validate_reval (
854 p_trans_rec IN fa_api_types.trans_rec_type,
855 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
856 p_asset_desc_rec IN fa_api_types.asset_desc_rec_type,
857 p_asset_type_rec IN fa_api_types.asset_type_rec_type,
858 p_asset_cat_rec IN fa_api_types.asset_cat_rec_type,
859 p_asset_fin_rec_old IN fa_api_types.asset_fin_rec_type,
860 p_asset_deprn_rec_old IN fa_api_types.asset_deprn_rec_type,
861 p_reval_options_rec IN fa_api_types.reval_options_rec_type
862 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
863 RETURN BOOLEAN
864 IS
865 l_calling_fn VARCHAR2 (35) := 'do_adjustment_pvt.validate_adj';
866 BEGIN
867 RETURN TRUE;
868 EXCEPTION
869 WHEN OTHERS
870 THEN
871 fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
872 RETURN FALSE;
873 END validate_reval;
874
875 FUNCTION fareven (
876 px_trans_rec IN OUT NOCOPY fa_api_types.trans_rec_type,
877 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
878 p_asset_desc_rec IN fa_api_types.asset_desc_rec_type,
879 p_asset_type_rec IN fa_api_types.asset_type_rec_type,
880 p_asset_cat_rec IN fa_api_types.asset_cat_rec_type,
881 p_asset_fin_rec_old IN fa_api_types.asset_fin_rec_type,
882 px_asset_fin_rec_new IN OUT NOCOPY fa_api_types.asset_fin_rec_type,
883 p_asset_deprn_rec_old IN fa_api_types.asset_deprn_rec_type,
884 px_asset_deprn_rec_new IN OUT NOCOPY fa_api_types.asset_deprn_rec_type,
885 p_period_rec IN fa_api_types.period_rec_type,
886 p_mrc_sob_type_code IN VARCHAR2,
887 p_reval_options_rec IN fa_api_types.reval_options_rec_type,
888 x_reval_out OUT NOCOPY fa_std_types.reval_out_struct
889 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
890 RETURN BOOLEAN
891 IS
892 l_asset_fin_rec_adj fa_api_types.asset_fin_rec_type;
893 l_reval_rate NUMBER;
894 l_life_extension_factor NUMBER;
895 l_life_extension_ceiling NUMBER;
896 l_method_id NUMBER;
897 l_depr_last_year_flag BOOLEAN;
898 l_rate_source_rule VARCHAR2 (25);
899 l_deprn_basis_rule VARCHAR2 (25);
900 l_recalc_life NUMBER;
901 l_life_ceiling NUMBER;
902 l_reval_ceiling_flag BOOLEAN;
903 l_fully_rsvd_flag BOOLEAN;
904 l_dpr_in fa_std_types.dpr_struct;
905 l_dpr_out fa_std_types.dpr_out_struct;
906 l_dpr_arr fa_std_types.dpr_arr_type;
907 l_running_mode NUMBER := fa_std_types.fa_dpr_normal;
908 l_reval_amo_basis NUMBER;
909 l_bonus_deprn_exp NUMBER;
910 l_deprn_exp NUMBER;
911 l_impairment_exp NUMBER;
912 l_salvage_value NUMBER;
913 l_adj_in fa_adjust_type_pkg.fa_adj_row_struct;
914 l_cost_acct VARCHAR2 (25);
915 l_cip_cost_acct VARCHAR2 (25);
916 l_reval_rsv_acct VARCHAR2 (25);
917 l_deprn_rsv_acct VARCHAR2 (25);
918 l_deprn_exp_acct VARCHAR2 (25);
919 -- GBertot: enabled revaluation of YTD deprn.
920 l_ytd_deprn_acct VARCHAR2 (25);
921 -- Bonus Deprn YYOON
922 l_bonus_deprn_exp_acct VARCHAR2 (25);
923 l_bonus_deprn_rsv_acct VARCHAR2 (25);
924 -- End of Bonus Deprn Change
925 l_impairment_exp_acct VARCHAR2 (25);
926 l_impairment_rsv_acct VARCHAR2 (25);
927 l_reval_dep_rsv_flag VARCHAR2 (5);
928 l_amor_reval_rsv_flag VARCHAR2 (5);
929 -- GBertot: enabled revaluation of YTD Deprn.
930 l_reval_ytd_deprn_flag VARCHAR2 (5);
931 l_deprn_calendar VARCHAR2 (30);
932 l_fy_name VARCHAR2 (30);
933 l_last_period_counter NUMBER;
934 l_fy NUMBER;
935 l_period_num NUMBER;
936 l_polish_rule NUMBER;
937 l_skip_asset BOOLEAN;
938 l_calling_fn VARCHAR2 (40)
939 := 'FA_REVALUATION_PVT.fareven';
940 fareven_err EXCEPTION;
941 v_imp_effect NUMBER;
942 p_reval_gain NUMBER;
943 p_imp_loss_impact NUMBER;
944 p_impair_loss_acct NUMBER;
945 p_temp_imp_deprn_effect NUMBER;
946 l_sorp_reval_adj NUMBER;
947 p_reval_rsv_deprn_effect NUMBER;
948
949 l_ind binary_integer;
950 l_gain_amount number;
951 l_reval_loss_exp number;
952 l_reval_deprn_exp number;
953 l_reval_loss_acct varchar2(25);
954 l_proc_flag varchar2(1) := 'G' ;
955 l_reval_loss_balance number := 0;
956 cursor c_get_reval_loss(c_asset_id number,c_book varchar2)
957 is
958 select sum(decode(debit_credit_flag,'DR',adjustment_amount,-adjustment_amount))
959 from fa_adjustments
960 where asset_id = c_asset_id
961 and book_type_code = c_book
962 and adjustment_type = 'REVAL LOSS';
963
964 cursor c_mc_get_reval_loss(c_asset_id number,c_book varchar2,c_sob_id number)
965 is
966 select sum(decode(debit_credit_flag,'DR',adjustment_amount,-adjustment_amount))
967 from fa_mc_adjustments
968 where asset_id = c_asset_id
969 and book_type_code = c_book
970 and adjustment_type = 'REVAL LOSS'
971 and set_of_books_id = c_sob_id;
972
973 BEGIN
974 IF (p_log_level_rec.statement_level)
975 THEN
976 fa_debug_pkg.ADD ('fareven', 'begin', 1, p_log_level_rec => p_log_level_rec);
977 END IF;
978
979 -- validations come here
980 IF (p_asset_fin_rec_old.reval_ceiling IS NULL)
981 THEN
982 l_reval_ceiling_flag := FALSE;
983 ELSE
984 l_reval_ceiling_flag := TRUE;
985 END IF;
986
987 IF (p_reval_options_rec.run_mode = 'RUN')
988 THEN
989 x_reval_out.insert_txn_flag := TRUE;
990 END IF;
991
992 /*Bug8551852# - Made condition common for sorp/non sorp book */
993 IF (ABS (p_asset_fin_rec_old.recoverable_cost) <=
994 (ABS (p_asset_deprn_rec_old.deprn_reserve)+ABS(nvl(p_asset_deprn_rec_old.impairment_reserve,0))))
995 THEN
996 l_fully_rsvd_flag := TRUE;
997 ELSE
998 l_fully_rsvd_flag := FALSE;
999 END IF;
1000
1001
1002 IF ( p_asset_fin_rec_old.production_capacity IS NOT NULL
1003 AND l_fully_rsvd_flag
1004 )
1005 THEN
1006 x_reval_out.insert_txn_flag := FALSE;
1007 GOTO fareven_exit_noerr;
1008 END IF;
1009
1010 IF NOT fa_cache_pkg.fazccmt
1011 (x_method => p_asset_fin_rec_old.deprn_method_code,
1012 x_life => p_asset_fin_rec_old.life_in_months
1013 , p_log_level_rec => p_log_level_rec)
1014 THEN
1015 RAISE fareven_err;
1016 END IF;
1017
1018 IF ( fa_cache_pkg.fazccmt_record.rate_source_rule =
1019 fa_std_types.fad_rsr_flat
1020 AND l_fully_rsvd_flag
1021 )
1022 THEN
1023 x_reval_out.insert_txn_flag := FALSE;
1024 GOTO fareven_exit_noerr;
1025 END IF;
1026
1027 IF (fa_cache_pkg.fazccmt_record.deprn_basis_rule_id IS NOT NULL)
1028 THEN
1029 l_polish_rule := fa_cache_pkg.fazcdbr_record.polish_rule;
1030 END IF;
1031
1032 IF (NVL (l_polish_rule, fa_std_types.fad_dbr_polish_none) IN
1033 (fa_std_types.fad_dbr_polish_1,
1034 fa_std_types.fad_dbr_polish_2,
1035 fa_std_types.fad_dbr_polish_3,
1036 fa_std_types.fad_dbr_polish_4,
1037 fa_std_types.fad_dbr_polish_5
1038 )
1039 )
1040 THEN
1041 x_reval_out.insert_txn_flag := FALSE;
1042 GOTO fareven_exit_noerr;
1043 END IF;
1044
1045 l_reval_dep_rsv_flag :=
1046 fa_cache_pkg.fazcbc_record.reval_deprn_reserve_flag;
1047 l_reval_ytd_deprn_flag :=
1048 fa_cache_pkg.fazcbc_record.reval_ytd_deprn_flag;
1049 l_amor_reval_rsv_flag :=
1050 fa_cache_pkg.fazcbc_record.amortize_reval_reserve_flag;
1051 l_last_period_counter := fa_cache_pkg.fazcbc_record.last_period_counter;
1052 l_deprn_calendar := fa_cache_pkg.fazcbc_record.deprn_calendar;
1053 l_fy_name := fa_cache_pkg.fazcbc_record.fiscal_year_name;
1054
1055 -- Bug#6666666 SORP Start
1056 IF (p_log_level_rec.statement_level) THEN
1057
1058 fa_debug_pkg.ADD ('fareven' || ' SORP',
1059 'p_asset_fin_rec_old.salvage_value',
1060 p_asset_fin_rec_old.salvage_value
1061 , p_log_level_rec => p_log_level_rec);
1062
1063 fa_debug_pkg.ADD ('fareven' || ' SORP',
1064 'SORP_Enabled_flag',
1065 NVL (fa_cache_pkg.fazcbc_record.sorp_enabled_flag,
1066 'N'
1067 )
1068 );
1069 END IF;
1070
1071 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1072 THEN
1073 IF (p_log_level_rec.statement_level)
1074 THEN
1075 fa_debug_pkg.ADD ('fareven' || ' SORP',
1076 'Linked_flag',
1077 p_reval_options_rec.linked_flag
1078 , p_log_level_rec => p_log_level_rec);
1079 fa_debug_pkg.ADD ('fareven' || ' SORP',
1080 'Value_type',
1081 p_reval_options_rec.value_type
1082 , p_log_level_rec => p_log_level_rec);
1083 fa_debug_pkg.ADD ('fareven' || ' SORP',
1084 'Value',
1085 p_reval_options_rec.reval_percent
1086 , p_log_level_rec => p_log_level_rec);
1087 fa_debug_pkg.ADD ('fareven' || ' SORP',
1088 'p_asset_fin_rec_old.recoverable_cost',
1089 p_asset_fin_rec_old.recoverable_cost
1090 , p_log_level_rec => p_log_level_rec);
1091 fa_debug_pkg.ADD ('fareven' || ' SORP',
1092 'p_asset_deprn_rec_old.deprn_reserve',
1093 p_asset_deprn_rec_old.deprn_reserve
1094 , p_log_level_rec => p_log_level_rec);
1095 fa_debug_pkg.ADD ('fareven' || ' SORP',
1096 'p_asset_deprn_rec_old.impairment_reserve',
1097 NVL (p_asset_deprn_rec_old.impairment_reserve,
1098 0)
1099 );
1100 fa_debug_pkg.ADD ('fareven' || ' SORP',
1101 'RUN_MODE',
1102 p_reval_options_rec.run_mode
1103 , p_log_level_rec => p_log_level_rec);
1104 END IF;
1105
1106 IF p_reval_options_rec.value_type = 'NBV'
1107 THEN
1108 x_reval_out.cost_adj :=
1109 p_reval_options_rec.reval_percent
1110 - ( p_asset_fin_rec_old.recoverable_cost
1111 - p_asset_deprn_rec_old.deprn_reserve
1112 +NVL(p_asset_fin_rec_old.salvage_value,0)
1113 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0)
1114 );
1115 g_old_nbv :=
1116 ( p_asset_fin_rec_old.recoverable_cost
1117 - p_asset_deprn_rec_old.deprn_reserve
1118 +NVL(p_asset_fin_rec_old.salvage_value,0)
1119 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0)
1120 );
1121 g_new_nbv := p_reval_options_rec.reval_percent;
1122 ELSIF p_reval_options_rec.value_type = 'AMT'
1123 THEN
1124 x_reval_out.cost_adj := p_reval_options_rec.reval_percent;
1125 g_old_nbv :=
1126 ( p_asset_fin_rec_old.recoverable_cost
1127 - p_asset_deprn_rec_old.deprn_reserve
1128 +NVL(p_asset_fin_rec_old.salvage_value,0)
1129 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0)
1130 );
1131 g_new_nbv := g_old_nbv + p_reval_options_rec.reval_percent;
1132 ELSIF p_reval_options_rec.value_type = 'PER'
1133 THEN
1134 l_reval_rate := p_reval_options_rec.reval_percent / 100;
1135
1136
1137 IF (p_log_level_rec.statement_level)
1138 THEN
1139 fa_debug_pkg.ADD ('fareven' || ' SORP',
1140 'PERIOD_COUNTER_FULLY_RESERVED',
1141 'NULL'
1142 , p_log_level_rec => p_log_level_rec);
1143 END IF;
1144
1145 IF (l_reval_ceiling_flag)
1146 THEN
1147 IF (p_log_level_rec.statement_level)
1148 THEN
1149 fa_debug_pkg.ADD ('fareven' || ' SORP',
1150 'l_reval_ceiling_flag',
1151 'TRUE'
1152 , p_log_level_rec => p_log_level_rec);
1153 END IF;
1154
1155 IF (( ( p_asset_fin_rec_old.recoverable_cost
1156 - p_asset_deprn_rec_old.deprn_reserve
1157 )
1158 * (1 + l_reval_rate)
1159 ) > p_asset_fin_rec_old.reval_ceiling
1160 )
1161 THEN
1162 l_reval_rate :=
1163 ( p_asset_fin_rec_old.reval_ceiling
1164 / ( p_asset_fin_rec_old.recoverable_cost
1165 - p_asset_deprn_rec_old.deprn_reserve
1166 +NVL(p_asset_fin_rec_old.salvage_value,0)
1167 - NVL (p_asset_deprn_rec_old.impairment_reserve,
1168 0
1169 )
1170 )
1171 )
1172 - 1;
1173 END IF;
1174 END IF;
1175
1176 x_reval_out.cost_adj :=
1177 ( p_asset_fin_rec_old.recoverable_cost
1178 - p_asset_deprn_rec_old.deprn_reserve
1179 +NVL(p_asset_fin_rec_old.salvage_value,0)
1180 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0)
1181 )
1182 * l_reval_rate;
1183
1184
1185 g_old_nbv :=
1186 ( p_asset_fin_rec_old.recoverable_cost
1187 - p_asset_deprn_rec_old.deprn_reserve
1188 +NVL(p_asset_fin_rec_old.salvage_value,0)
1189 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0)
1190 );
1191 g_new_nbv := g_old_nbv + x_reval_out.cost_adj;
1192 END IF;
1193
1194 IF (p_log_level_rec.statement_level)
1195 THEN
1196 fa_debug_pkg.ADD ('fareven' || ' SORP',
1197 'x_reval_out.cost_adj',
1198 x_reval_out.cost_adj
1199 , p_log_level_rec => p_log_level_rec);
1200 fa_debug_pkg.ADD ('fareven' || ' SORP', 'g_old_nbv', g_old_nbv, p_log_level_rec => p_log_level_rec);
1201 fa_debug_pkg.ADD ('fareven' || ' SORP', 'g_new_nbv', g_new_nbv, p_log_level_rec => p_log_level_rec);
1202 END IF;
1203
1204 l_reval_loss_exp := 0;
1205 l_reval_deprn_exp := 0;
1206 -- This Call is made to caluclate impairment related amounts while performing linked revaluation
1207 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1208 AND p_reval_options_rec.linked_flag = 'YES'
1209 THEN
1210 l_gain_amount := x_reval_out.cost_adj;
1211 if not fa_sorp_revaluation_pkg.process_loss_reversal( p_asset_hdr_rec => p_asset_hdr_rec,
1212 p_period_rec => p_period_rec,
1213 p_mrc_sob_type_code => p_mrc_sob_type_code,
1214 p_set_of_books_id => p_asset_hdr_rec.set_of_books_id,
1215 p_reval_options_rec => p_reval_options_rec,
1216 p_fully_rsvd_flag => l_fully_rsvd_flag,
1217 p_flag => 'P',
1218 px_gain_amt => l_gain_amount,
1219 px_reval_loss_exp => l_reval_loss_exp,
1220 px_deprn_exp => l_reval_deprn_exp,
1221 p_log_level_rec => p_log_level_rec) then
1222 raise fareven_err;
1223 end if;
1224 IF (p_log_level_rec.statement_level)
1225 THEN
1226 fa_debug_pkg.ADD ('fareven', 'After','Processing reval losses happened before impairment linked', p_log_level_rec => p_log_level_rec);
1227 fa_debug_pkg.ADD ('fareven', 'l_gain_amount', l_gain_amount, p_log_level_rec => p_log_level_rec);
1228 fa_debug_pkg.ADD ('fareven', 'l_reval_deprn_exp', l_reval_deprn_exp, p_log_level_rec => p_log_level_rec);
1229 fa_debug_pkg.ADD ('fareven', 'l_reval_loss_exp', l_reval_loss_exp, p_log_level_rec => p_log_level_rec);
1230 fa_debug_pkg.ADD ('fareven' || ' SORP','Calling FA_SORP_REVALUATION_PKG.fa_sorp_link_reval','START', p_log_level_rec => p_log_level_rec);
1231 END IF;
1232
1233 fa_sorp_revaluation_pkg.fa_sorp_link_reval
1234 (--g_old_nbv,
1235 l_gain_amount,
1236 p_reval_options_rec.mass_reval_id,
1237 p_asset_hdr_rec.asset_id,
1238 p_asset_hdr_rec.book_type_code,
1239 p_reval_options_rec.run_mode,
1240 px_trans_rec.mass_reference_id,
1241 p_mrc_sob_type_code,
1242 p_asset_cat_rec.category_id,
1243 p_reval_options_rec.reval_type_flag,
1244 p_asset_hdr_rec.set_of_books_id,
1245 p_imp_loss_impact,
1246 p_reval_gain,
1247 p_impair_loss_acct,
1248 p_temp_imp_deprn_effect,
1249 p_reval_rsv_deprn_effect
1250 , p_log_level_rec => p_log_level_rec);
1251
1252 IF (p_log_level_rec.statement_level)
1253 THEN
1254 fa_debug_pkg.ADD
1255 ('fareven' || ' SORP',
1256 'Calling FA_SORP_REVALUATION_PKG.fa_sorp_link_reval',
1257 'END'
1258 , p_log_level_rec => p_log_level_rec);
1259 fa_debug_pkg.ADD
1260 ('fareven' || ' SORP',
1261 'Calling FA_SORP_REVALUATION_PKG.fa_imp_itf_upd',
1262 'START'
1263 , p_log_level_rec => p_log_level_rec);
1264
1265 fa_debug_pkg.ADD
1266 ('fareven' || ' SORP',
1267 'p_reval_gain',
1268 p_reval_gain
1269 , p_log_level_rec => p_log_level_rec);
1270 END IF;
1271
1272 -- This call is made to update FA_ITF_IMPAIRMENTS table with reversed amounts
1273 IF p_reval_options_rec.run_mode = 'RUN' and p_reval_gain is not null
1274 THEN
1275 fa_sorp_revaluation_pkg.fa_imp_itf_upd
1276 (px_trans_rec.mass_reference_id,
1277 p_asset_hdr_rec.book_type_code,
1278 p_asset_hdr_rec.asset_id,
1279 px_trans_rec.who_info.last_updated_by,
1280 px_trans_rec.who_info.last_update_date
1281 , p_log_level_rec => p_log_level_rec);
1282 END IF;
1283
1284 IF (p_log_level_rec.statement_level)
1285 THEN
1286 fa_debug_pkg.ADD
1287 ('fareven' || ' SORP',
1288 'Calling FA_SORP_REVALUATION_PKG.fa_imp_itf_upd',
1289 'END'
1290 , p_log_level_rec => p_log_level_rec);
1291 END IF;
1292 END IF;
1293 ELSE
1294 l_reval_rate := p_reval_options_rec.reval_percent / 100;
1295 END IF;
1296
1297 -- Bug#6666666 SORP End
1298 l_life_extension_factor := p_reval_options_rec.life_extension_factor;
1299 l_life_extension_ceiling := p_reval_options_rec.life_extension_ceiling;
1300
1301 -- Get Book Based Revaluation Rules from Book Controls Cache
1302 -- Get some more information from the Book Controls Cache
1303 IF (p_log_level_rec.statement_level)
1304 THEN
1305 fa_debug_pkg.ADD ('fareven', 'step', 2, p_log_level_rec => p_log_level_rec);
1306 END IF;
1307
1308 -- Find the Depreciation Basis Rule and Rate Source Rule
1309 -- for this depreciation method
1310 IF NOT fa_cache_pkg.fazccmt
1311 (x_method => p_asset_fin_rec_old.deprn_method_code,
1312 x_life => p_asset_fin_rec_old.life_in_months
1313 , p_log_level_rec => p_log_level_rec)
1314 THEN
1315 RAISE fareven_err;
1316 END IF;
1317
1318 l_method_id := fa_cache_pkg.fazccmt_record.method_id;
1319
1320 IF fa_cache_pkg.fazccmt_record.depreciate_lastyear_flag = 'YES'
1321 THEN
1322 l_depr_last_year_flag := TRUE;
1323 ELSE
1324 l_depr_last_year_flag := FALSE;
1325 END IF;
1326
1327 l_rate_source_rule := fa_cache_pkg.fazccmt_record.rate_source_rule;
1328 l_deprn_basis_rule := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
1329
1330 IF (p_log_level_rec.statement_level)
1331 THEN
1332 fa_debug_pkg.ADD ('fareven', '3', 3, p_log_level_rec => p_log_level_rec);
1333 END IF;
1334
1335 -- Bug#6666666 SORP Start
1336 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
1337 THEN
1338 IF (l_reval_ceiling_flag)
1339 THEN
1340 IF ((p_asset_fin_rec_old.COST * (1 + l_reval_rate)) >
1341 p_asset_fin_rec_old.reval_ceiling
1342 )
1343 THEN
1344 l_reval_rate :=
1345 ( p_asset_fin_rec_old.reval_ceiling
1346 / p_asset_fin_rec_old.COST
1347 )
1348 - 1;
1349 END IF;
1350 END IF;
1351 END IF;
1352
1353 -- Bug#6666666 SORP End
1354 IF (p_log_level_rec.statement_level)
1355 THEN
1356 fa_debug_pkg.ADD ('fareven', 'l_reval_rate', l_reval_rate, p_log_level_rec => p_log_level_rec);
1357 END IF;
1358
1359 --Calculate adjustment to asset cost
1360 -- Bug#6666666 SORP Start
1361 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
1362 THEN
1363 x_reval_out.cost_adj := p_asset_fin_rec_old.COST * l_reval_rate;
1364 END IF;
1365
1366 -- Bug#6666666 SORP End
1367 -- Round to correct precision
1368 IF NOT fa_utils_pkg.faxrnd (x_reval_out.cost_adj,
1369 p_asset_hdr_rec.book_type_code,
1370 p_asset_hdr_rec.set_of_books_id,
1371 p_log_level_rec => p_log_level_rec)
1372 THEN
1373 RAISE fareven_err;
1374 END IF;
1375
1376 -- Added for SORP
1377 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
1378 THEN
1379 px_asset_fin_rec_new.COST :=
1380 p_asset_fin_rec_old.COST + x_reval_out.cost_adj;
1381 END IF;
1382
1383 if p_reval_gain is not null then
1384 l_gain_amount := p_reval_gain;
1385 l_proc_flag := 'A';
1386 else
1387 l_proc_flag := 'G';
1388 l_gain_amount := x_reval_out.cost_adj;
1389 end if;
1390
1391 /*Bug# 15864819 */
1392 if p_asset_fin_rec_old.depreciate_flag = 'YES' then
1393 if not fa_sorp_revaluation_pkg.process_loss_reversal( p_asset_hdr_rec => p_asset_hdr_rec,
1394 p_period_rec => p_period_rec,
1395 p_mrc_sob_type_code => p_mrc_sob_type_code,
1396 p_set_of_books_id => p_asset_hdr_rec.set_of_books_id,
1397 p_reval_options_rec => p_reval_options_rec,
1398 p_fully_rsvd_flag => l_fully_rsvd_flag,
1399 p_flag => l_proc_flag,
1400 px_gain_amt => l_gain_amount,
1401 px_reval_loss_exp => l_reval_loss_exp,
1402 px_deprn_exp => l_reval_deprn_exp,
1403 p_log_level_rec => p_log_level_rec) then
1404 raise fareven_err;
1405 end if;
1406 else
1407 l_reval_loss_balance := 0;
1408 IF p_mrc_sob_type_code = 'P' THEN
1409 open c_get_reval_loss(p_asset_hdr_rec.asset_id,p_asset_hdr_rec.book_type_code);
1410 fetch c_get_reval_loss into l_reval_loss_balance;
1411 close c_get_reval_loss;
1412 ELSE
1413 open c_mc_get_reval_loss(p_asset_hdr_rec.asset_id,p_asset_hdr_rec.book_type_code,p_asset_hdr_rec.set_of_books_id);
1414 fetch c_mc_get_reval_loss into l_reval_loss_balance;
1415 close c_mc_get_reval_loss;
1416 END IF;
1417 if l_reval_loss_balance <> 0 then
1418 if l_gain_amount > l_reval_loss_balance then
1419 l_gain_amount := l_gain_amount - l_reval_loss_balance ;
1420 l_reval_loss_exp := l_reval_loss_balance;
1421 else
1422 l_reval_loss_exp := l_gain_amount ;
1423 l_gain_amount := 0;
1424 end if;
1425 l_reval_deprn_exp := 0;
1426 end if;
1427 end if;
1428 IF (p_log_level_rec.statement_level)
1429 THEN
1430 fa_debug_pkg.ADD ('fareven', 'After','Processing reval losses happened after impairment linked', p_log_level_rec => p_log_level_rec);
1431 fa_debug_pkg.ADD ('fareven', 'l_gain_amount', l_gain_amount, p_log_level_rec => p_log_level_rec);
1432 fa_debug_pkg.ADD ('fareven', 'l_reval_deprn_exp', l_reval_deprn_exp, p_log_level_rec => p_log_level_rec);
1433 fa_debug_pkg.ADD ('fareven', 'l_reval_loss_exp', l_reval_loss_exp, p_log_level_rec => p_log_level_rec);
1434 END IF;
1435
1436 l_recalc_life := p_asset_fin_rec_old.life_in_months;
1437 l_sorp_reval_adj := x_reval_out.cost_adj;
1438
1439 IF (p_log_level_rec.statement_level)
1440 THEN
1441 fa_debug_pkg.ADD ('fareven', 'old cost', p_asset_fin_rec_old.COST, p_log_level_rec => p_log_level_rec);
1442 fa_debug_pkg.ADD ('fareven',
1443 'x_reval_out.cost_adj',
1444 x_reval_out.cost_adj
1445 , p_log_level_rec => p_log_level_rec);
1446 fa_debug_pkg.ADD ('fareven', 'new cost', px_asset_fin_rec_new.COST, p_log_level_rec => p_log_level_rec);
1447 END IF;
1448
1449 -- call fazccbd to initialize cat book defaults which is called in
1450 -- calc_salvage_value
1451 IF NOT fa_cache_pkg.fazccbd
1452 (x_book => p_asset_hdr_rec.book_type_code,
1453 x_cat_id => p_asset_cat_rec.category_id,
1454 x_jdpis => TO_NUMBER
1455 (TO_CHAR
1456 (p_asset_fin_rec_old.date_placed_in_service,
1457 'J'
1458 )
1459 ),
1460 p_log_level_rec => p_log_level_rec
1461 )
1462 THEN
1463 RAISE fareven_err;
1464 END IF;
1465
1466 px_asset_fin_rec_new.annual_deprn_rounding_flag := 'REV';
1467
1468 --If the asset is not fully reserved
1469 IF (NOT l_fully_rsvd_flag)
1470 THEN
1471 IF (p_log_level_rec.statement_level)
1472 THEN
1473 fa_debug_pkg.ADD ('fareven', 'not fully reserved', 1, p_log_level_rec => p_log_level_rec);
1474 END IF;
1475
1476 -- Compute Adjustment to Depreciation Reserve
1477 -- if Depreciation Reserve is to be revalued
1478 IF l_reval_dep_rsv_flag = 'YES'
1479 THEN
1480 IF (p_log_level_rec.statement_level)
1481 THEN
1482 fa_debug_pkg.ADD ('fareven', 'reval_dep_rsv_flag is YES', 1, p_log_level_rec => p_log_level_rec);
1483 END IF;
1484
1485 x_reval_out.deprn_rsv_adj :=
1486 p_asset_deprn_rec_old.deprn_reserve * l_reval_rate;
1487
1488 -- Round to correct precision
1489 IF NOT fa_utils_pkg.faxrnd (x_reval_out.deprn_rsv_adj,
1490 p_asset_hdr_rec.book_type_code,
1491 p_asset_hdr_rec.set_of_books_id,
1492 p_log_level_rec => p_log_level_rec)
1493 THEN
1494 RAISE fareven_err;
1495 END IF;
1496
1497 -- Bonus Deprn YYOON
1498 x_reval_out.bonus_deprn_rsv_adj :=
1499 p_asset_deprn_rec_old.bonus_deprn_reserve * l_reval_rate;
1500
1501 -- Round to correct precision
1502 IF NOT fa_utils_pkg.faxrnd (x_reval_out.bonus_deprn_rsv_adj,
1503 p_asset_hdr_rec.book_type_code,
1504 p_asset_hdr_rec.set_of_books_id,
1505 p_log_level_rec => p_log_level_rec)
1506 THEN
1507 RAISE fareven_err;
1508 END IF;
1509 ELSE --if Depreciation Reserve is not to be revalued
1510 IF (p_log_level_rec.statement_level)
1511 THEN
1512 fa_debug_pkg.ADD ('fareven', 'reval_dep_rsv_flag is NO', 1, p_log_level_rec => p_log_level_rec);
1513 END IF;
1514
1515 x_reval_out.deprn_rsv_adj := -p_asset_deprn_rec_old.deprn_reserve;
1516 x_reval_out.bonus_deprn_rsv_adj :=
1517 -p_asset_deprn_rec_old.bonus_deprn_reserve;
1518
1519 -- Bug 6666666 START Added for SORP
1520 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1521 THEN
1522 IF ABS (x_reval_out.deprn_rsv_adj) <> 0
1523 THEN
1524 IF (x_reval_out.cost_adj > 0)
1525 THEN
1526 IF (ABS (x_reval_out.deprn_rsv_adj) >=
1527 x_reval_out.cost_adj
1528 )
1529 THEN
1530 x_reval_out.cost_adj :=
1531 ( ABS (x_reval_out.deprn_rsv_adj)
1532 - x_reval_out.cost_adj
1533 )
1534 * -1;
1535 ELSE
1536 x_reval_out.cost_adj :=
1537 x_reval_out.cost_adj
1538 - ABS (x_reval_out.deprn_rsv_adj);
1539 END IF;
1540 END IF;
1541 END IF;
1542 END IF;
1543 -- Bug 6666666 START
1544 END IF;
1545
1546 IF (p_log_level_rec.statement_level)
1547 THEN
1548 fa_debug_pkg.ADD ('fareven',
1549 'x_reval_out.deprn_rsv_adj',
1550 x_reval_out.deprn_rsv_adj
1551 , p_log_level_rec => p_log_level_rec);
1552 fa_debug_pkg.ADD ('fareven',
1553 'x_reval_out.bonus_deprn_rsv_adj',
1554 x_reval_out.bonus_deprn_rsv_adj
1555 , p_log_level_rec => p_log_level_rec);
1556 END IF;
1557
1558 fa_debug_pkg.ADD ('fareven',
1559 'p_asset_deprn_rec_old.impairment_reserve',
1560 p_asset_deprn_rec_old.impairment_reserve
1561 , p_log_level_rec => p_log_level_rec);
1562
1563 IF (p_asset_deprn_rec_old.impairment_reserve <> 0)
1564 THEN
1565 IF (x_reval_out.cost_adj > 0)
1566 THEN
1567 IF (p_asset_deprn_rec_old.impairment_reserve >=
1568 x_reval_out.cost_adj
1569 )
1570 THEN
1571 -- Bug 6666666 START Modified for SORP
1572 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1573 THEN
1574 x_reval_out.cost_adj :=
1575 ( p_asset_deprn_rec_old.impairment_reserve
1576 - x_reval_out.cost_adj
1577 )
1578 * -1;
1579 x_reval_out.impairment_rsv_adj :=
1580 p_asset_deprn_rec_old.impairment_reserve
1581 * -1;
1582 ELSE
1583 x_reval_out.impairment_rsv_adj :=
1584 p_asset_deprn_rec_old.impairment_reserve
1585 * -1;
1586 /* x_reval_out.cost_adj := 0;
1587 x_reval_out.deprn_rsv_adj := 0;
1588 x_reval_out.reval_rsv_adj := 0;*/
1589 END IF;
1590 ELSE
1591 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1592 THEN
1593 x_reval_out.cost_adj :=
1594 x_reval_out.cost_adj
1595 - p_asset_deprn_rec_old.impairment_reserve;
1596 x_reval_out.impairment_rsv_adj :=
1597 p_asset_deprn_rec_old.impairment_reserve
1598 * -1;
1599 ELSE
1600 x_reval_out.impairment_rsv_adj :=
1601 p_asset_deprn_rec_old.impairment_reserve
1602 * -1;
1603 -- Bug# 6684245 x_reval_out.cost_adj:= x_reval_out.cost_adj - p_asset_deprn_rec_old.impairment_reserve;
1604 x_reval_out.deprn_rsv_adj := x_reval_out.deprn_rsv_adj;
1605 x_reval_out.reval_rsv_adj :=
1606 x_reval_out.cost_adj - x_reval_out.deprn_rsv_adj;
1607 END IF;
1608 END IF;
1609 ELSE -- x_reval_out.deprn_rsv_adj < 0
1610 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
1611 THEN
1612 x_reval_out.impairment_rsv_adj := 0;
1613 ELSE
1614 x_reval_out.impairment_rsv_adj :=
1615 p_asset_deprn_rec_old.impairment_reserve
1616 * -1;
1617 x_reval_out.cost_adj :=
1618 x_reval_out.cost_adj + x_reval_out.impairment_rsv_adj;
1619 END IF;
1620 END IF;
1621 END IF;
1622
1623 /*ER 14644811 */
1624 px_asset_deprn_rec_new.impairment_reserve := p_asset_deprn_rec_old.impairment_reserve + nvl(x_reval_out.impairment_rsv_adj,0) ;
1625 -- Bug 6666666 END Modified for SORP
1626
1627 -- GBertot: compute adjustment to YTD deprn. if it is to be revalued
1628 IF l_reval_ytd_deprn_flag = 'YES'
1629 THEN
1630 IF (p_log_level_rec.statement_level)
1631 THEN
1632 fa_debug_pkg.ADD ('fareven', 'reval_ytd_deprn_flag is YES', 1, p_log_level_rec => p_log_level_rec);
1633 END IF;
1634
1635 x_reval_out.ytd_deprn_adj :=
1636 p_asset_deprn_rec_old.ytd_deprn * l_reval_rate;
1637
1638 --round to correct precision
1639 IF NOT fa_utils_pkg.faxrnd (x_reval_out.ytd_deprn_adj,
1640 p_asset_hdr_rec.book_type_code,
1641 p_asset_hdr_rec.set_of_books_id,
1642 p_log_level_rec => p_log_level_rec)
1643 THEN
1644 RAISE fareven_err;
1645 END IF;
1646
1647 -- Bonus Deprn YYOON
1648 x_reval_out.bonus_ytd_deprn_adj :=
1649 p_asset_deprn_rec_old.bonus_ytd_deprn * l_reval_rate;
1650 x_reval_out.ytd_impairment_adj :=
1651 p_asset_deprn_rec_old.ytd_impairment * l_reval_rate;
1652
1653 --round to correct precision
1654 IF NOT fa_utils_pkg.faxrnd (x_reval_out.bonus_ytd_deprn_adj,
1655 p_asset_hdr_rec.book_type_code,
1656 p_asset_hdr_rec.set_of_books_id,
1657 p_log_level_rec => p_log_level_rec)
1658 THEN
1659 RAISE fareven_err;
1660 END IF;
1661
1662 IF NOT fa_utils_pkg.faxrnd (x_reval_out.ytd_impairment_adj,
1663 p_asset_hdr_rec.book_type_code,
1664 p_asset_hdr_rec.set_of_books_id,
1665 p_log_level_rec => p_log_level_rec)
1666 THEN
1667 RAISE fareven_err;
1668 END IF;
1669 ELSE -- if YTD deprn. is not to be revalued
1670 IF (p_log_level_rec.statement_level)
1671 THEN
1672 fa_debug_pkg.ADD ('fareven', 'reval_ytd_deprn_flag is NO', 1, p_log_level_rec => p_log_level_rec);
1673 END IF;
1674
1675 x_reval_out.ytd_deprn_adj := 0;
1676 x_reval_out.bonus_ytd_deprn_adj := 0;
1677 x_reval_out.ytd_impairment_adj := 0;
1678 END IF;
1679
1680 -- Bonus Deprn - YYOON:
1681 -- Here in the following calculation of revaluation reserve amount,
1682 -- the revalued bonus_ytd_adj amount doesn't need to be
1683 -- involved in the calculation
1684 --because the ytd_deprn_adj has already included the bonus ytd amount.
1685 -- Compute Adjustment to Revaluation Reserve
1686
1687 -- Added for SORP
1688 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
1689 THEN
1690 x_reval_out.reval_rsv_adj :=
1691 x_reval_out.cost_adj - x_reval_out.deprn_rsv_adj;
1692 END IF;
1693
1694 -- GBertot: Compute adjustment to revaluation reserve due to YTD deprn.
1695 x_reval_out.reval_rsv_adj :=
1696 x_reval_out.reval_rsv_adj + x_reval_out.ytd_deprn_adj;
1697
1698 IF (p_log_level_rec.statement_level)
1699 THEN
1700 fa_debug_pkg.ADD ('fareven',
1701 'x_reval_out.reval_rsv_adj',
1702 x_reval_out.reval_rsv_adj
1703 , p_log_level_rec => p_log_level_rec);
1704 END IF;
1705
1706 x_reval_out.new_life := p_asset_fin_rec_old.life_in_months;
1707 x_reval_out.new_fully_rsvd_revals_ctr :=
1708 p_asset_fin_rec_old.fully_rsvd_revals_counter;
1709
1710 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1711 THEN
1712 px_asset_fin_rec_new.COST :=
1713 p_asset_fin_rec_old.COST + x_reval_out.cost_adj;
1714 x_reval_out.reval_rsv_adj := l_gain_amount;
1715 END IF;
1716
1717 -- Compute Recoverable Cost
1718 IF NOT fa_asset_calc_pvt.calc_salvage_value
1719 (p_trans_rec => px_trans_rec,
1720 p_asset_hdr_rec => p_asset_hdr_rec,
1721 p_asset_type_rec => p_asset_type_rec,
1722 p_asset_fin_rec_old => p_asset_fin_rec_old,
1723 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
1724 px_asset_fin_rec_new => px_asset_fin_rec_new,
1725 p_mrc_sob_type_code => p_mrc_sob_type_code
1726 , p_log_level_rec => p_log_level_rec)
1727 THEN
1728 RAISE fareven_err;
1729 END IF;
1730
1731 x_reval_out.new_salvage_value := px_asset_fin_rec_new.salvage_value;
1732
1733 IF NOT fa_asset_calc_pvt.calc_rec_cost
1734 (p_asset_hdr_rec => p_asset_hdr_rec,
1735 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
1736 px_asset_fin_rec_new => px_asset_fin_rec_new
1737 , p_log_level_rec => p_log_level_rec)
1738 THEN
1739 RAISE fareven_err;
1740 END IF;
1741
1742 px_asset_fin_rec_new.adjusted_cost :=
1743 px_asset_fin_rec_new.recoverable_cost;
1744
1745 IF NOT fa_asset_calc_pvt.calc_deprn_limit_adj_rec_cost
1746 (p_asset_hdr_rec => p_asset_hdr_rec,
1747 p_asset_type_rec => p_asset_type_rec,
1748 p_asset_fin_rec_old => p_asset_fin_rec_old,
1749 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
1750 px_asset_fin_rec_new => px_asset_fin_rec_new,
1751 p_mrc_sob_type_code => p_mrc_sob_type_code
1752 , p_log_level_rec => p_log_level_rec)
1753 THEN
1754 RAISE fareven_err;
1755 END IF;
1756
1757 IF (p_log_level_rec.statement_level)
1758 THEN
1759 fa_debug_pkg.ADD ('fareven',
1760 'after calc_salvage_value SV',
1761 px_asset_fin_rec_new.salvage_value
1762 , p_log_level_rec => p_log_level_rec);
1763 fa_debug_pkg.ADD ('fareven',
1764 'after calc_rec_cost rec cost',
1765 px_asset_fin_rec_new.recoverable_cost
1766 , p_log_level_rec => p_log_level_rec);
1767 fa_debug_pkg.ADD ('fareven',
1768 'after calc_adj_rec_cost adj_rec_cost',
1769 px_asset_fin_rec_new.adjusted_recoverable_cost
1770 , p_log_level_rec => p_log_level_rec);
1771 END IF;
1772
1773 IF NOT fa_amort_pvt.faxraf
1774 (px_trans_rec => px_trans_rec,
1775 p_asset_hdr_rec => p_asset_hdr_rec,
1776 p_asset_desc_rec => p_asset_desc_rec,
1777 p_asset_cat_rec => p_asset_cat_rec,
1778 p_asset_type_rec => p_asset_type_rec,
1779 p_asset_fin_rec_old => p_asset_fin_rec_old,
1780 px_asset_fin_rec_new => px_asset_fin_rec_new,
1781 p_asset_deprn_rec => p_asset_deprn_rec_old,
1782 p_period_rec => p_period_rec,
1783 px_deprn_exp => l_deprn_exp,
1784 px_bonus_deprn_exp => l_bonus_deprn_exp,
1785 px_impairment_exp => l_impairment_exp,
1786 px_reval_deprn_rsv_adj => x_reval_out.deprn_rsv_adj,
1787 p_mrc_sob_type_code => p_mrc_sob_type_code,
1788 p_running_mode => fa_std_types.fa_dpr_normal,
1789 p_used_by_revaluation => 1
1790 , p_log_level_rec => p_log_level_rec)
1791 THEN
1792 RAISE fareven_err;
1793 END IF;
1794 END IF; -- If the asset is not fully reserved
1795
1796 --If the asset is fully reserved
1797 IF (l_fully_rsvd_flag)
1798 THEN
1799 IF (p_log_level_rec.statement_level)
1800 THEN
1801 fa_debug_pkg.ADD ('fareven',
1802 'REVALUE FULLY RESERVED ASSET',
1803 p_reval_options_rec.reval_fully_rsvd_flag
1804 , p_log_level_rec => p_log_level_rec);
1805 END IF;
1806
1807 IF ( (NVL (p_reval_options_rec.reval_fully_rsvd_flag, 'N') = 'N')
1808 OR ( (p_asset_fin_rec_old.fully_rsvd_revals_counter >=
1809 p_reval_options_rec.max_fully_rsvd_revals
1810 )
1811 AND (p_reval_options_rec.max_fully_rsvd_revals <> -1)
1812 )
1813 )
1814 THEN
1815 x_reval_out.cost_adj := 0;
1816 x_reval_out.deprn_rsv_adj := 0;
1817 x_reval_out.reval_rsv_adj := 0;
1818 x_reval_out.ytd_deprn_adj := 0;
1819 x_reval_out.bonus_ytd_deprn_adj := 0;
1820 x_reval_out.bonus_deprn_rsv_adj := 0;
1821 x_reval_out.ytd_impairment_adj := 0;
1822 x_reval_out.impairment_rsv_adj := 0;
1823 x_reval_out.new_life := p_asset_fin_rec_old.life_in_months;
1824 x_reval_out.new_fully_rsvd_revals_ctr :=
1825 p_asset_fin_rec_old.fully_rsvd_revals_counter;
1826 x_reval_out.new_adj_cost := p_asset_fin_rec_old.adjusted_cost;
1827 x_reval_out.new_adj_capacity :=
1828 p_asset_fin_rec_old.adjusted_capacity;
1829 x_reval_out.new_rec_cost := p_asset_fin_rec_old.recoverable_cost;
1830 x_reval_out.new_raf := p_asset_fin_rec_old.rate_adjustment_factor;
1831 px_asset_fin_rec_new := p_asset_fin_rec_old;
1832 px_asset_deprn_rec_new := p_asset_deprn_rec_old;
1833 x_reval_out.insert_txn_flag := FALSE;
1834 ELSE
1835 -- If life extension factor is not specified as a part
1836 -- of revaluation rules it is an error condition
1837 IF (p_log_level_rec.statement_level)
1838 THEN
1839 fa_debug_pkg.ADD ('fareven',
1840 'l_life_extension_factor',
1841 l_life_extension_factor
1842 , p_log_level_rec => p_log_level_rec);
1843 END IF;
1844
1845 IF (l_life_extension_factor = -1)
1846 THEN
1847 RAISE fareven_err;
1848 END IF;
1849
1850 --Bug#7488735 - Depreciation not calculated for donated asset as
1851 -- cost is zero at this point and recoverable_cost is calculated as zero
1852 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
1853 THEN
1854 --Bug#7553091
1855 --if x_reval_out.cost_adj <> 0 then
1856 px_asset_fin_rec_new.COST := x_reval_out.cost_adj;
1857 --end if;
1858 end if;
1859
1860 -- Compute Recoverable Cost
1861 IF NOT fa_asset_calc_pvt.calc_salvage_value
1862 (p_trans_rec => px_trans_rec,
1863 p_asset_hdr_rec => p_asset_hdr_rec,
1864 p_asset_type_rec => p_asset_type_rec,
1865 p_asset_fin_rec_old => p_asset_fin_rec_old,
1866 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
1867 px_asset_fin_rec_new => px_asset_fin_rec_new,
1868 p_mrc_sob_type_code => p_mrc_sob_type_code
1869 , p_log_level_rec => p_log_level_rec)
1870 THEN
1871 RAISE fareven_err;
1872 END IF;
1873
1874 IF p_reval_options_rec.value_type = 'NBV' THEN
1875 px_asset_fin_rec_new.COST := px_asset_fin_rec_new.COST + px_asset_fin_rec_new.salvage_value;
1876 END IF;
1877
1878 IF NOT fa_asset_calc_pvt.calc_rec_cost
1879 (p_asset_hdr_rec => p_asset_hdr_rec,
1880 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
1881 px_asset_fin_rec_new => px_asset_fin_rec_new
1882 , p_log_level_rec => p_log_level_rec)
1883 THEN
1884 RAISE fareven_err;
1885 END IF;
1886
1887 IF NOT fa_asset_calc_pvt.calc_deprn_limit_adj_rec_cost
1888 (p_asset_hdr_rec => p_asset_hdr_rec,
1889 p_asset_type_rec => p_asset_type_rec,
1890 p_asset_fin_rec_old => p_asset_fin_rec_old,
1891 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
1892 px_asset_fin_rec_new => px_asset_fin_rec_new,
1893 p_mrc_sob_type_code => p_mrc_sob_type_code
1894 , p_log_level_rec => p_log_level_rec)
1895 THEN
1896 RAISE fareven_err;
1897 END IF;
1898
1899 IF (p_log_level_rec.statement_level)
1900 THEN
1901 fa_debug_pkg.ADD ('fareven',
1902 'after calc_salvage_value SV',
1903 px_asset_fin_rec_new.salvage_value
1904 , p_log_level_rec => p_log_level_rec);
1905 fa_debug_pkg.ADD ('fareven',
1906 'after calc_rec_cost rec cost',
1907 px_asset_fin_rec_new.recoverable_cost
1908 , p_log_level_rec => p_log_level_rec);
1909 fa_debug_pkg.ADD
1910 ('fareven',
1911 'after calc_adj_rec_cost adj_rec_cost',
1912 px_asset_fin_rec_new.adjusted_recoverable_cost
1913 , p_log_level_rec => p_log_level_rec);
1914 END IF;
1915
1916 x_reval_out.new_rec_cost := px_asset_fin_rec_new.recoverable_cost;
1917 x_reval_out.new_salvage_value :=
1918 px_asset_fin_rec_new.salvage_value;
1919
1920 IF (l_reval_dep_rsv_flag = 'YES')
1921 THEN
1922 -- If Depreciation Reserve is to be revalued
1923 IF (p_log_level_rec.statement_level)
1924 THEN
1925 fa_debug_pkg.ADD ('fareven', 'reval_dep_rsv_flag is YES',
1926 1, p_log_level_rec => p_log_level_rec);
1927 END IF;
1928
1929 -- Extend Life by the life extension factor limited by
1930 -- life extension ceiling (if specified) to compute Catchup
1931 -- Depreciation
1932 l_recalc_life :=
1933 TRUNC ( p_asset_fin_rec_old.life_in_months
1934 * l_life_extension_factor
1935 );
1936
1937 IF (p_log_level_rec.statement_level)
1938 THEN
1939 fa_debug_pkg.ADD ('fareven', 'RECALC LIFE1', 1, p_log_level_rec => p_log_level_rec);
1940 fa_debug_pkg.ADD ('fareven',
1941 'l_recalc_life1.1',
1942 l_recalc_life
1943 , p_log_level_rec => p_log_level_rec);
1944 END IF;
1945
1946 IF (l_life_extension_ceiling <> -1)
1947 THEN
1948 l_life_ceiling :=
1949 TRUNC ( p_asset_fin_rec_old.life_in_months
1950 * l_life_extension_ceiling
1951 );
1952
1953 IF (l_recalc_life > l_life_ceiling)
1954 THEN
1955 l_recalc_life := l_life_ceiling;
1956 END IF;
1957 END IF;
1958
1959 IF (p_log_level_rec.statement_level)
1960 THEN
1961 fa_debug_pkg.ADD ('fareven',
1962 'l_recalc_life1.2',
1963 l_recalc_life
1964 , p_log_level_rec => p_log_level_rec);
1965 END IF;
1966
1967 -- Find if the Depreciation Method for this
1968 -- calculated life exists
1969 IF ( (l_rate_source_rule = fa_std_types.fad_rsr_calc)
1970 OR (l_rate_source_rule = fa_std_types.fad_rsr_table)
1971 OR (l_rate_source_rule = fa_std_types.fad_rsr_formula)
1972 )
1973 THEN
1974 IF NOT fa_cache_pkg.fazccmt
1975 (x_method => p_asset_fin_rec_old.deprn_method_code,
1976 x_life => l_recalc_life
1977 , p_log_level_rec => p_log_level_rec)
1978 THEN
1979 IF (l_rate_source_rule = fa_std_types.fad_rsr_calc)
1980 THEN
1981 IF (p_log_level_rec.statement_level)
1982 THEN
1983 fa_debug_pkg.ADD ('fareven',
1984 'calling',
1985 'validate_life'
1986 , p_log_level_rec => p_log_level_rec);
1987 fa_debug_pkg.ADD
1988 ('fareven',
1989 'p_deprn_method',
1990 px_asset_fin_rec_new.deprn_method_code
1991 , p_log_level_rec => p_log_level_rec);
1992 fa_debug_pkg.ADD ('fareven',
1993 'l_recalc_life',
1994 l_recalc_life
1995 , p_log_level_rec => p_log_level_rec);
1996 END IF;
1997
1998 IF NOT fa_asset_val_pvt.validate_life
1999 (p_deprn_method => p_asset_fin_rec_old.deprn_method_code,
2000 p_rate_source_rule => l_rate_source_rule,
2001 p_life_in_months => l_recalc_life,
2002 p_lim => l_recalc_life,
2003 p_user_id => px_trans_rec.who_info.last_updated_by,
2004 p_curr_date => px_trans_rec.who_info.last_update_date,
2005 px_new_life => l_recalc_life,
2006 p_calling_fn => 'fareven'
2007 , p_log_level_rec => p_log_level_rec)
2008 THEN
2009 RAISE fareven_err;
2010 END IF;
2011 ELSE
2012 IF (p_reval_options_rec.run_mode = 'PREVIEW')
2013 THEN
2014 x_reval_out.life_notdef := l_recalc_life;
2015 x_reval_out.new_life := l_recalc_life;
2016 GOTO fareven_exit_noerr;
2017 ELSE
2018 RAISE fareven_err;
2019 END IF; -- ins_txn_flag = FALSE
2020 END IF; -- l_rate_source_rule = FAD_RSR_CALC
2021 END IF; -- end if for not fazccmt
2022 END IF; -- CALC or TABLE or FORMULA
2023
2024 -- Assign all values to the depreciation engine to compute the
2025 -- total depreciation on the asset that would have accrued till
2026 -- this point if the life of the asset had been 'recalc life'
2027 -- and cost had been new_rec_cost
2028 l_dpr_in.adj_cost := x_reval_out.new_rec_cost;
2029 l_dpr_in.rec_cost := x_reval_out.new_rec_cost;
2030 l_dpr_in.reval_amo_basis := 0;
2031 l_dpr_in.deprn_rsv := 0;
2032 l_dpr_in.reval_rsv := 0;
2033 -- Bonus Deprn YYOON
2034 l_dpr_in.bonus_deprn_rsv := 0;
2035 l_dpr_in.impairment_rsv := 0;
2036 -- End of Bonus Deprn Change
2037 l_dpr_in.adj_rate := p_asset_fin_rec_old.adjusted_rate;
2038 l_dpr_in.rate_adj_factor := 1;
2039 -- Fix For Bug #2018862. Set formula factor to 1
2040 l_dpr_in.formula_factor := 1;
2041 l_dpr_in.capacity := p_asset_fin_rec_old.production_capacity;
2042 l_dpr_in.adj_capacity :=
2043 p_asset_fin_rec_old.production_capacity;
2044 l_dpr_in.ltd_prod := 0;
2045 l_dpr_in.asset_num := p_asset_desc_rec.asset_number;
2046 l_dpr_in.calendar_type := l_deprn_calendar;
2047 l_dpr_in.ceil_name := p_asset_fin_rec_old.ceiling_name;
2048 l_dpr_in.bonus_rule := p_asset_fin_rec_old.bonus_rule;
2049 l_dpr_in.book := p_asset_hdr_rec.book_type_code;
2050 l_dpr_in.method_code := p_asset_fin_rec_old.deprn_method_code;
2051 l_dpr_in.asset_id := p_asset_hdr_rec.asset_id;
2052 l_dpr_in.jdate_in_service :=
2053 TO_NUMBER
2054 (TO_CHAR (p_asset_fin_rec_old.date_placed_in_service,
2055 'J'
2056 )
2057 );
2058 l_dpr_in.prorate_jdate :=
2059 TO_NUMBER (TO_CHAR (p_asset_fin_rec_old.prorate_date, 'J'));
2060 l_dpr_in.deprn_start_jdate :=
2061 TO_NUMBER (TO_CHAR (p_asset_fin_rec_old.deprn_start_date,
2062 'J'
2063 )
2064 );
2065 l_dpr_in.jdate_retired := 0;
2066 l_dpr_in.ret_prorate_jdate := 0;
2067 l_dpr_in.life := l_recalc_life;
2068 l_dpr_in.rsv_known_flag := TRUE;
2069 -- copy adjusted recoverable cost to l_dpr_in to
2070 -- make it compatible with faxcde() which supports
2071 -- asset with depreciation limit
2072
2073 -- **************************************************
2074 -- Assign adj_rec_cost calculated in faucrc to
2075 -- l_dpr_in.adj_rec_cost. For fully reserved assets that
2076 -- should still be fully reserved after life extension
2077 -- factor, will not calculate new reserve correctly if
2078 -- recalculated adj_rec_cost is not passed to faxcde
2079 -- Fix for 1229608 SNARAYAN
2080 -- ***************************************************
2081 l_dpr_in.adj_rec_cost :=
2082 px_asset_fin_rec_new.adjusted_recoverable_cost;
2083 --fix for 1666248 - assign new salvage value which was
2084 --calculated based on the percent specified in category
2085 l_dpr_in.salvage_value := x_reval_out.new_salvage_value;
2086 l_dpr_in.salvage_value := px_asset_fin_rec_new.salvage_value;
2087 l_dpr_in.deprn_rounding_flag := 'REV';
2088 -- Copy prior_fy_exp from reval_in_struct to
2089 -- deprn_struct.
2090 l_dpr_in.prior_fy_exp := p_asset_deprn_rec_old.prior_fy_expense;
2091 l_dpr_in.ytd_deprn := p_asset_deprn_rec_old.ytd_deprn;
2092 -- Bonus Deprn YYOON
2093 l_dpr_in.prior_fy_bonus_exp :=
2094 p_asset_deprn_rec_old.prior_fy_bonus_expense;
2095 l_dpr_in.bonus_ytd_deprn :=
2096 p_asset_deprn_rec_old.bonus_ytd_deprn;
2097 -- End of Bonus Deprn Change
2098 l_dpr_in.ytd_impairment := p_asset_deprn_rec_old.ytd_impairment;
2099 l_fy := -1;
2100 l_period_num := -1;
2101
2102 SELECT fy.fiscal_year, cp.period_num
2103 INTO l_fy, l_period_num
2104 FROM fa_fiscal_year fy, fa_calendar_periods cp
2105 WHERE fy.fiscal_year_name = l_fy_name
2106 AND cp.calendar_type = l_deprn_calendar
2107 AND p_asset_fin_rec_old.prorate_date BETWEEN cp.start_date
2108 AND cp.end_date
2109 AND p_asset_fin_rec_old.prorate_date BETWEEN fy.start_date
2110 AND fy.end_date;
2111
2112 l_dpr_in.y_begin := l_fy;
2113 l_dpr_in.p_cl_begin := 1;
2114 l_fy := -1;
2115 l_period_num := -1;
2116
2117 SELECT dp.fiscal_year, dp.period_num
2118 INTO l_fy, l_period_num
2119 FROM fa_deprn_periods dp
2120 WHERE dp.book_type_code = p_asset_hdr_rec.book_type_code
2121 AND dp.period_counter = l_last_period_counter;
2122
2123 l_dpr_in.y_end := l_fy;
2124 l_dpr_in.p_cl_end := l_period_num;
2125 -- Added for code from fa.m
2126 l_dpr_in.mrc_sob_type_code := p_mrc_sob_type_code;
2127 l_dpr_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
2128 l_dpr_in.tracking_method := p_asset_fin_rec_old.tracking_method;
2129 l_dpr_in.allocate_to_fully_ret_flag :=
2130 p_asset_fin_rec_old.allocate_to_fully_ret_flag;
2131 l_dpr_in.allocate_to_fully_rsv_flag :=
2132 p_asset_fin_rec_old.allocate_to_fully_rsv_flag;
2133 l_dpr_in.excess_allocation_option :=
2134 p_asset_fin_rec_old.excess_allocation_option;
2135 l_dpr_in.depreciation_option :=
2136 p_asset_fin_rec_old.depreciation_option;
2137 l_dpr_in.member_rollup_flag :=
2138 p_asset_fin_rec_old.member_rollup_flag;
2139 l_dpr_in.eofy_reserve := p_asset_fin_rec_old.eofy_reserve;
2140 l_dpr_in.update_override_status := FALSE;
2141 l_dpr_in.over_depreciate_option :=
2142 p_asset_fin_rec_old.over_depreciate_option;
2143 l_dpr_in.super_group_id := p_asset_fin_rec_old.super_group_id;
2144 l_dpr_in.COST := px_asset_fin_rec_new.COST;
2145
2146 if (p_reval_options_rec.run_mode = 'PREVIEW') then -- 16275774
2147 l_dpr_in.deprn_override_used_by := 'PRE';
2148 end if;
2149
2150
2151 --l_dpr_in.asset_type := p_asset_type_rec.asset_type;
2152 IF (p_log_level_rec.statement_level)
2153 THEN
2154 fa_debug_pkg.ADD ('fareven',
2155 'CALLING FAXCDE FROM FAREVEN',
2156 1
2157 , p_log_level_rec => p_log_level_rec);
2158 END IF;
2159
2160 IF (NOT fa_cde_pkg.faxcde (l_dpr_in,
2161 l_dpr_arr,
2162 l_dpr_out,
2163 l_running_mode,
2164 l_ind,
2165 p_log_level_rec
2166 )
2167 )
2168 THEN
2169 RAISE fareven_err;
2170 END IF;
2171
2172 --Compute Adjustment to Depreciation Reserve
2173 x_reval_out.deprn_rsv_adj :=
2174 l_dpr_out.new_deprn_rsv
2175 - p_asset_deprn_rec_old.deprn_reserve;
2176 -- Bonus Deprn YYOON
2177 x_reval_out.bonus_deprn_rsv_adj :=
2178 l_dpr_out.new_bonus_deprn_rsv
2179 - p_asset_deprn_rec_old.bonus_deprn_reserve;
2180 -- End of Bonus Deprn Change
2181 ELSE -- If Depreciation Reserve is to be revalued.
2182 x_reval_out.deprn_rsv_adj :=
2183 -p_asset_deprn_rec_old.deprn_reserve;
2184 x_reval_out.bonus_deprn_rsv_adj :=
2185 -p_asset_deprn_rec_old.bonus_deprn_reserve;
2186
2187 -- Added for SORP
2188 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
2189 THEN
2190 IF ABS (x_reval_out.deprn_rsv_adj) <> 0
2191 THEN
2192 --Bug#7553091
2193 IF (x_reval_out.cost_adj > 0 or x_reval_out.cost_adj=0 )
2194 THEN
2195 IF (ABS (x_reval_out.deprn_rsv_adj) >=
2196 x_reval_out.cost_adj
2197 )
2198 THEN
2199 x_reval_out.cost_adj :=
2200 ( ABS (x_reval_out.deprn_rsv_adj)
2201 - x_reval_out.cost_adj
2202 )
2203 * -1;
2204 ELSE
2205 x_reval_out.cost_adj :=
2206 x_reval_out.cost_adj
2207 - ABS (x_reval_out.deprn_rsv_adj);
2208 END IF;
2209 END IF;
2210 END IF;
2211 END IF;
2212 END IF; --If Depreciation Reserve is to be revalued.
2213
2214 --GBertot: compute adjustment to YTD deprn.
2215 -- if it is to be revalued
2216 IF (l_reval_ytd_deprn_flag = 'YES')
2217 THEN
2218 x_reval_out.ytd_deprn_adj :=
2219 p_asset_deprn_rec_old.ytd_deprn * l_reval_rate;
2220
2221 -- round to correct precision
2222 IF NOT fa_utils_pkg.faxrnd (x_reval_out.ytd_deprn_adj,
2223 p_asset_hdr_rec.book_type_code,
2224 p_asset_hdr_rec.set_of_books_id,
2225 p_log_level_rec => p_log_level_rec)
2226 THEN
2227 RAISE fareven_err;
2228 END IF;
2229
2230 -- Bonus Deprn YYOON
2231 x_reval_out.bonus_ytd_deprn_adj :=
2232 p_asset_deprn_rec_old.bonus_ytd_deprn * l_reval_rate;
2233
2234 IF NOT fa_utils_pkg.faxrnd (x_reval_out.bonus_ytd_deprn_adj,
2235 p_asset_hdr_rec.book_type_code,
2236 p_asset_hdr_rec.set_of_books_id,
2237 p_log_level_rec => p_log_level_rec)
2238 THEN
2239 RAISE fareven_err;
2240 END IF;
2241 -- End of Bonus Deprn Change
2242 ELSE -- if YTD deprn. is not to be revalued
2243 x_reval_out.ytd_deprn_adj := 0;
2244 -- Bonus Deprn YYOON
2245 x_reval_out.bonus_ytd_deprn_adj := 0;
2246 --End of Bonus Deprn Change
2247 x_reval_out.ytd_impairment_adj := 0;
2248 END IF; -- if YTD deprn. is not to be revalued
2249
2250 -- Compute Adjustment to Revaluation Reserve
2251 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
2252 THEN
2253 x_reval_out.reval_rsv_adj :=
2254 x_reval_out.cost_adj - x_reval_out.deprn_rsv_adj;
2255 END IF;
2256
2257 -- GBertot: Compute adjustment to revaluation reserve due
2258 -- to YTD deprn.
2259 x_reval_out.reval_rsv_adj :=
2260 x_reval_out.reval_rsv_adj + x_reval_out.ytd_deprn_adj;
2261 fa_debug_pkg.ADD ('SORP Debug',
2262 'p_asset_deprn_rec_old.impairment_reserve',
2263 p_asset_deprn_rec_old.impairment_reserve
2264 , p_log_level_rec => p_log_level_rec);
2265 fa_debug_pkg.ADD ('SORP Debug',
2266 'x_reval_out.cost_adj',
2267 x_reval_out.cost_adj
2268 , p_log_level_rec => p_log_level_rec);
2269
2270 IF (p_asset_deprn_rec_old.impairment_reserve <> 0)
2271 THEN
2272 IF (x_reval_out.cost_adj > 0)
2273 THEN
2274 IF (p_asset_deprn_rec_old.impairment_reserve >=
2275 x_reval_out.cost_adj
2276 )
2277 THEN
2278 -- -- Bug 6666666 START Modified for SORP
2279 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
2280 THEN
2281 x_reval_out.cost_adj :=
2282 ( p_asset_deprn_rec_old.impairment_reserve
2283 - x_reval_out.cost_adj
2284 )
2285 * -1;
2286 x_reval_out.impairment_rsv_adj :=
2287 p_asset_deprn_rec_old.impairment_reserve
2288 * -1;
2289 ELSE
2290 /*Bug#8530038 - */
2291 x_reval_out.impairment_rsv_adj :=
2292 p_asset_deprn_rec_old.impairment_reserve * -1;
2293 END IF;
2294 ELSE
2295 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
2296 THEN
2297 x_reval_out.cost_adj :=
2298 x_reval_out.cost_adj
2299 - p_asset_deprn_rec_old.impairment_reserve;
2300 x_reval_out.impairment_rsv_adj :=
2301 p_asset_deprn_rec_old.impairment_reserve
2302 * -1;
2303 ELSE
2304 x_reval_out.impairment_rsv_adj :=
2305 p_asset_deprn_rec_old.impairment_reserve
2306 * -1;
2307 x_reval_out.cost_adj :=
2308 x_reval_out.cost_adj
2309 - p_asset_deprn_rec_old.impairment_reserve;
2310 x_reval_out.deprn_rsv_adj := x_reval_out.deprn_rsv_adj;
2311 x_reval_out.reval_rsv_adj :=
2312 x_reval_out.cost_adj - x_reval_out.deprn_rsv_adj;
2313 END IF;
2314 END IF;
2315 ELSE -- x_reval_out.deprn_rsv_adj < 0
2316 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
2317 THEN
2318 x_reval_out.impairment_rsv_adj := 0;
2319 ELSE
2320 x_reval_out.impairment_rsv_adj :=
2321 p_asset_deprn_rec_old.impairment_reserve
2322 * -1;
2323 x_reval_out.cost_adj :=
2324 x_reval_out.cost_adj + x_reval_out.impairment_rsv_adj;
2325 END IF;
2326 END IF;
2327 END IF;
2328
2329 -- -- Bug 6666666 END Modified for SORP
2330
2331 -- Compute new life using life extension factor
2332 -- regardless of
2333 -- life extension ceiling
2334 l_recalc_life :=
2335 p_asset_fin_rec_old.life_in_months * l_life_extension_factor;
2336 l_recalc_life := TRUNC (l_recalc_life);
2337
2338 IF (p_log_level_rec.statement_level)
2339 THEN
2340 fa_debug_pkg.ADD ('fareven', 'RECALC LIFE2', 1, p_log_level_rec => p_log_level_rec);
2341 fa_debug_pkg.ADD ('fareven', 'l_recalc_life2.1',
2342 l_recalc_life, p_log_level_rec => p_log_level_rec);
2343 END IF;
2344
2345 -- Find if the Depreciation Method for this
2346 -- calculated life exists
2347 IF ( (l_rate_source_rule = fa_std_types.fad_rsr_calc)
2348 OR (l_rate_source_rule = fa_std_types.fad_rsr_table)
2349 OR (l_rate_source_rule = fa_std_types.fad_rsr_formula)
2350 )
2351 THEN
2352 IF NOT fa_cache_pkg.fazccmt
2353 (x_method => p_asset_fin_rec_old.deprn_method_code,
2354 x_life => l_recalc_life
2355 , p_log_level_rec => p_log_level_rec)
2356 THEN
2357 IF (p_log_level_rec.statement_level)
2358 THEN
2359 fa_debug_pkg.ADD ('fareven', 'fazccmt false', 1, p_log_level_rec => p_log_level_rec);
2360 END IF;
2361
2362 IF (l_rate_source_rule = fa_std_types.fad_rsr_calc)
2363 THEN
2364 IF (p_log_level_rec.statement_level)
2365 THEN
2366 fa_debug_pkg.ADD ('fareven',
2367 'calling validate_life',
2368 1
2369 , p_log_level_rec => p_log_level_rec);
2370 END IF;
2371
2372 IF NOT fa_asset_val_pvt.validate_life
2373 (p_deprn_method => p_asset_fin_rec_old.deprn_method_code,
2374 p_rate_source_rule => l_rate_source_rule,
2375 p_life_in_months => l_recalc_life,
2376 p_lim => l_recalc_life,
2377 p_user_id => px_trans_rec.who_info.last_updated_by,
2378 p_curr_date => px_trans_rec.who_info.last_update_date,
2379 px_new_life => l_recalc_life,
2380 p_calling_fn => 'fareven'
2381 , p_log_level_rec => p_log_level_rec)
2382 THEN
2383 RAISE fareven_err;
2384 END IF;
2385 ELSE
2386 IF (p_reval_options_rec.run_mode = 'PREVIEW')
2387 THEN
2388 x_reval_out.life_notdef := l_recalc_life;
2389 x_reval_out.new_life := l_recalc_life;
2390 GOTO fareven_exit_noerr;
2391 ELSE
2392 -- Display method/life combination that doesn't
2393 -- exist, and that the program can't create
2394 RAISE fareven_err;
2395 END IF;
2396 END IF;
2397 END IF;
2398 END IF;
2399
2400 x_reval_out.new_life := l_recalc_life;
2401 px_asset_fin_rec_new.adjusted_cost :=
2402 px_asset_fin_rec_new.recoverable_cost;
2403 px_asset_fin_rec_new.life_in_months := l_recalc_life;
2404
2405 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
2406 THEN
2407 px_asset_fin_rec_new.COST :=
2408 p_asset_fin_rec_old.COST + x_reval_out.cost_adj;
2409
2410 IF p_reval_options_rec.linked_flag = 'YES' and p_reval_gain is not null
2411 THEN
2412 x_reval_out.reval_rsv_adj := p_reval_gain;
2413 ELSE
2414 x_reval_out.reval_rsv_adj := l_sorp_reval_adj;
2415 END IF;
2416 END IF;
2417
2418 IF NOT fa_amort_pvt.faxraf
2419 (px_trans_rec => px_trans_rec,
2420 p_asset_hdr_rec => p_asset_hdr_rec,
2421 p_asset_desc_rec => p_asset_desc_rec,
2422 p_asset_cat_rec => p_asset_cat_rec,
2423 p_asset_type_rec => p_asset_type_rec,
2424 p_asset_fin_rec_old => p_asset_fin_rec_old,
2425 px_asset_fin_rec_new => px_asset_fin_rec_new,
2426 p_asset_deprn_rec => p_asset_deprn_rec_old,
2427 p_period_rec => p_period_rec,
2428 px_deprn_exp => l_deprn_exp,
2429 px_bonus_deprn_exp => l_bonus_deprn_exp,
2430 px_impairment_exp => l_impairment_exp,
2431 px_reval_deprn_rsv_adj => x_reval_out.deprn_rsv_adj,
2432 p_mrc_sob_type_code => p_mrc_sob_type_code,
2433 p_running_mode => fa_std_types.fa_dpr_normal,
2434 p_used_by_revaluation => 1
2435 , p_log_level_rec => p_log_level_rec)
2436 THEN
2437 RAISE fareven_err;
2438 END IF;
2439
2440 x_reval_out.new_fully_rsvd_revals_ctr :=
2441 p_asset_fin_rec_old.fully_rsvd_revals_counter + 1;
2442 END IF;
2443 --If fully reserved assets are to be revalued and fully
2444 --reserved reval count is < max fully reserved revaluations
2445 END IF; -- If the asset is fully reserved
2446
2447 -- populate px_asset_fin_rec_new and px_asset_deprn_rec_new
2448 IF (p_asset_type_rec.asset_type = 'CIP')
2449 THEN
2450 px_asset_fin_rec_new.rate_adjustment_factor := 1;
2451 END IF;
2452
2453 px_asset_fin_rec_new.life_in_months := l_recalc_life;
2454 px_asset_fin_rec_new.fully_rsvd_revals_counter :=
2455 x_reval_out.new_fully_rsvd_revals_ctr;
2456 px_asset_deprn_rec_new.deprn_reserve :=
2457 p_asset_deprn_rec_old.deprn_reserve + x_reval_out.deprn_rsv_adj;
2458
2459 -- Bug 6666666 SORP START
2460 -- Amortization is calculated on total amount credited to Reval Reserve Account.
2461 -- This includes reval gain + reversed deprn effect on reval adjustment amount
2462 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
2463 THEN
2464 px_asset_deprn_rec_new.reval_deprn_reserve :=
2465 p_asset_deprn_rec_old.reval_deprn_reserve
2466 + x_reval_out.reval_rsv_adj;
2467 ELSE
2468 px_asset_deprn_rec_new.reval_deprn_reserve :=
2469 p_asset_deprn_rec_old.reval_deprn_reserve
2470 + x_reval_out.reval_rsv_adj
2471 + NVL (p_reval_rsv_deprn_effect, 0);
2472 END IF;
2473
2474 -- Bug 6666666 SORP END
2475 px_asset_deprn_rec_new.bonus_deprn_reserve :=
2476 p_asset_deprn_rec_old.bonus_deprn_reserve
2477 + x_reval_out.bonus_deprn_rsv_adj;
2478
2479 /*ER 14644811 */
2480 px_asset_deprn_rec_new.impairment_reserve := p_asset_deprn_rec_old.impairment_reserve + nvl(x_reval_out.impairment_rsv_adj,0) ;
2481 -- populate new reval_amort basis here
2482 -- Bug# 6684245 impairment_reserve added to amortisation basis
2483 -- Bug 6666666 SORP START
2484 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
2485 THEN
2486 px_asset_fin_rec_new.reval_amortization_basis :=
2487 px_asset_deprn_rec_new.reval_deprn_reserve
2488 + NVL (p_asset_deprn_rec_old.impairment_reserve, 0);
2489 ELSE
2490 px_asset_fin_rec_new.reval_amortization_basis :=
2491 px_asset_deprn_rec_new.reval_deprn_reserve;
2492
2493 IF (p_log_level_rec.statement_level)
2494 THEN
2495 fa_debug_pkg.ADD ('fareven' || ' SORP',
2496 'Impairment_reserve',
2497 NVL (p_asset_deprn_rec_old.impairment_reserve,
2498 0)
2499 );
2500 fa_debug_pkg.ADD ('fareven' || ' SORP',
2501 'reval_deprn_reserve',
2502 px_asset_deprn_rec_new.reval_deprn_reserve
2503 , p_log_level_rec => p_log_level_rec);
2504 fa_debug_pkg.ADD ('fareven' || ' SORP',
2505 'reval_amortization_basis',
2506 px_asset_fin_rec_new.reval_amortization_basis
2507 , p_log_level_rec => p_log_level_rec);
2508 END IF;
2509 END IF;
2510
2511 -- Bug 6666666 SORP END
2512 -- If cost adjustment is not 0 or the new life is not the
2513 -- same as old life and INSERT TRANSACTION_FLAG is TRUE then
2514 -- insert rows in FA_ADJUSTMENTS
2515 IF (p_reval_options_rec.run_mode = 'RUN')
2516 THEN
2517 IF ( x_reval_out.cost_adj <> 0
2518 OR p_asset_fin_rec_old.life_in_months <> x_reval_out.new_life
2519 )
2520 OR ( ( x_reval_out.cost_adj = 0
2521 AND nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
2522 )
2523 OR p_asset_fin_rec_old.life_in_months <> x_reval_out.new_life
2524 )
2525 THEN
2526 IF (( p_asset_deprn_rec_old.deprn_reserve
2527 + x_reval_out.deprn_rsv_adj
2528 ) = px_asset_fin_rec_new.recoverable_cost
2529 )
2530 THEN
2531 px_trans_rec.transaction_subtype := 'FULL RSV';
2532 x_reval_out.pc_fully_res := l_last_period_counter + 1;
2533 ELSE
2534 px_trans_rec.transaction_subtype := 'STANDARD';
2535 x_reval_out.pc_fully_res := NULL;
2536 END IF;
2537
2538 px_asset_fin_rec_new.period_counter_fully_reserved :=
2539 x_reval_out.pc_fully_res;
2540 px_asset_fin_rec_new.period_counter_life_complete :=
2541 x_reval_out.pc_fully_res;
2542
2543 -- Load Adjustment structure for inserting into table
2544 -- FA_ADJUSTMENTS
2545
2546 -- Get Asset Cost Account, Revaluation Reserve Account,
2547 -- Depreciation Reserve Account
2548 -- and Bonus Deprn Reserve Account
2549 -- from Category Books Cache
2550 IF (NOT fa_cache_pkg.fazccb
2551 (x_book => p_asset_hdr_rec.book_type_code,
2552 x_cat_id => p_asset_cat_rec.category_id,
2553 p_log_level_rec => p_log_level_rec
2554 )
2555 )
2556 THEN
2557 RAISE fareven_err;
2558 END IF;
2559
2560 l_cost_acct := fa_cache_pkg.fazccb_record.asset_cost_acct;
2561 l_cip_cost_acct := fa_cache_pkg.fazccb_record.cip_cost_acct;
2562 l_reval_rsv_acct := fa_cache_pkg.fazccb_record.reval_reserve_acct;
2563 l_deprn_rsv_acct := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
2564 l_deprn_exp_acct := fa_cache_pkg.fazccb_record.deprn_expense_acct;
2565 -- Bonus Deprn - YYOON
2566 -- Getting the bonus deprn expense
2567 -- and the bonus deprn reserve account
2568 -- from asset category
2569 l_adj_in.ACCOUNT :=
2570 fa_cache_pkg.fazccb_record.bonus_deprn_expense_acct;
2571 l_adj_in.ACCOUNT :=
2572 fa_cache_pkg.fazccb_record.bonus_deprn_reserve_acct;
2573 --End of Bonus Deprn Change
2574 l_impairment_rsv_acct :=
2575 fa_cache_pkg.fazccb_record.impair_reserve_acct;
2576 l_impairment_exp_acct :=
2577 fa_cache_pkg.fazccb_record.impair_expense_acct;
2578 l_adj_in.transaction_header_id :=
2579 px_trans_rec.transaction_header_id;
2580 l_adj_in.asset_invoice_id := 0;
2581 l_adj_in.source_type_code := 'REVALUATION';
2582
2583 IF (p_asset_type_rec.asset_type = 'CIP')
2584 THEN
2585 l_adj_in.adjustment_type := 'CIP COST';
2586 ELSE
2587 l_adj_in.adjustment_type := 'COST';
2588 END IF;
2589
2590 IF (x_reval_out.cost_adj > 0)
2591 THEN
2592 l_adj_in.debit_credit_flag := 'DR';
2593 ELSE
2594 l_adj_in.debit_credit_flag := 'CR';
2595 END IF;
2596
2597 l_adj_in.code_combination_id := 0;
2598 l_adj_in.book_type_code := p_asset_hdr_rec.book_type_code;
2599 l_adj_in.period_counter_created := l_last_period_counter + 1;
2600 l_adj_in.asset_id := p_asset_hdr_rec.asset_id;
2601 l_adj_in.adjustment_amount := ABS (x_reval_out.cost_adj);
2602 l_adj_in.period_counter_adjusted := l_last_period_counter + 1;
2603 l_adj_in.distribution_id := 0;
2604 l_adj_in.annualized_adjustment := 0;
2605 l_adj_in.last_update_date :=
2606 px_trans_rec.who_info.last_update_date;
2607
2608 IF (p_asset_type_rec.asset_type = 'CIP')
2609 THEN
2610 l_adj_in.ACCOUNT := l_cip_cost_acct;
2611 l_adj_in.account_type := 'CIP_COST_ACCT';
2612 ELSE
2613 l_adj_in.ACCOUNT := l_cost_acct;
2614 l_adj_in.account_type := 'ASSET_COST_ACCT';
2615 END IF;
2616
2617 l_adj_in.current_units := p_asset_desc_rec.current_units;
2618 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2619 l_adj_in.selection_thid := 0;
2620 l_adj_in.selection_retid := 0;
2621 l_adj_in.flush_adj_flag := FALSE;
2622 l_adj_in.gen_ccid_flag := TRUE;
2623 l_adj_in.mrc_sob_type_code := p_mrc_sob_type_code;
2624 l_adj_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
2625
2626 IF (NOT fa_ins_adjust_pkg.faxinaj
2627 (l_adj_in,
2628 px_trans_rec.who_info.last_update_date,
2629 px_trans_rec.who_info.last_updated_by,
2630 px_trans_rec.who_info.last_update_login,
2631 p_log_level_rec
2632 )
2633 )
2634 THEN
2635 IF (p_log_level_rec.statement_level)
2636 THEN
2637 NULL;
2638 END IF;
2639
2640 RAISE fareven_err;
2641 END IF;
2642
2643 l_adj_in.leveling_flag := FALSE;
2644 -- GBertot: Code added to include the depreciation expense
2645 -- account in the revaluation JE
2646 l_adj_in.adjustment_type := 'EXPENSE';
2647
2648 IF (x_reval_out.ytd_deprn_adj > 0)
2649 THEN
2650 l_adj_in.debit_credit_flag := 'DR';
2651 ELSE
2652 l_adj_in.debit_credit_flag := 'CR';
2653 END IF;
2654
2655 l_adj_in.code_combination_id := 0;
2656 l_adj_in.book_type_code := p_asset_hdr_rec.book_type_code;
2657 l_adj_in.period_counter_created := l_last_period_counter + 1;
2658 l_adj_in.asset_id := p_asset_hdr_rec.asset_id;
2659 l_adj_in.adjustment_amount := ABS (x_reval_out.ytd_deprn_adj);
2660 l_adj_in.period_counter_adjusted := l_last_period_counter + 1;
2661 l_adj_in.distribution_id := 0;
2662 l_adj_in.annualized_adjustment := 0;
2663 l_adj_in.last_update_date :=
2664 px_trans_rec.who_info.last_update_date;
2665 -- BUG# 2150841
2666 -- allow for generating the deprn expense acct
2667 -- via workflow rules
2668 -- bridgway
2669 l_adj_in.ACCOUNT := l_deprn_exp_acct;
2670 l_adj_in.account_type := 'DEPRN_EXPENSE_ACCT';
2671 l_adj_in.current_units := p_asset_desc_rec.current_units;
2672 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2673 l_adj_in.selection_thid := 0;
2674 l_adj_in.selection_retid := 0;
2675 l_adj_in.flush_adj_flag := FALSE;
2676 l_adj_in.gen_ccid_flag := TRUE;
2677
2678 IF (NOT fa_ins_adjust_pkg.faxinaj
2679 (l_adj_in,
2680 px_trans_rec.who_info.last_update_date,
2681 px_trans_rec.who_info.last_updated_by,
2682 px_trans_rec.who_info.last_update_login,
2683 p_log_level_rec
2684 )
2685 )
2686 THEN
2687 IF (p_log_level_rec.statement_level)
2688 THEN
2689 NULL;
2690 END IF;
2691
2692 RAISE fareven_err;
2693 END IF;
2694
2695 l_adj_in.gen_ccid_flag := TRUE;
2696
2697 -- GBertot: End of depreciation expense account coding
2698
2699 -- Bonus Deprn YYOON
2700 IF (x_reval_out.bonus_ytd_deprn_adj <> 0)
2701 THEN
2702 l_adj_in.adjustment_type := 'BONUS EXPENSE';
2703
2704 IF (x_reval_out.bonus_ytd_deprn_adj > 0)
2705 THEN
2706 l_adj_in.debit_credit_flag := 'DR';
2707 ELSE
2708 l_adj_in.debit_credit_flag := 'CR';
2709 END IF;
2710
2711 l_adj_in.code_combination_id := 0;
2712 l_adj_in.book_type_code := p_asset_hdr_rec.book_type_code;
2713 l_adj_in.period_counter_created := l_last_period_counter + 1;
2714 l_adj_in.asset_id := p_asset_hdr_rec.asset_id;
2715 l_adj_in.adjustment_amount :=
2716 ABS (x_reval_out.bonus_ytd_deprn_adj);
2717 l_adj_in.period_counter_adjusted := l_last_period_counter + 1;
2718 l_adj_in.distribution_id := 0;
2719 l_adj_in.annualized_adjustment := 0;
2720 l_adj_in.last_update_date :=
2721 px_trans_rec.who_info.last_update_date;
2722 l_adj_in.ACCOUNT := l_bonus_deprn_exp_acct;
2723 l_adj_in.account_type := 'BONUS_DEPRN_RESERVE_ACCT';
2724 l_adj_in.current_units := p_asset_desc_rec.current_units;
2725 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2726 l_adj_in.selection_thid := 0;
2727 l_adj_in.selection_retid := 0;
2728 l_adj_in.flush_adj_flag := FALSE;
2729 -- The CCID of BONUS EXPENSE row will be generated
2730 -- through the workflow YYOON
2731 l_adj_in.gen_ccid_flag := TRUE;
2732
2733 IF (NOT fa_ins_adjust_pkg.faxinaj
2734 (l_adj_in,
2735 px_trans_rec.who_info.last_update_date,
2736 px_trans_rec.who_info.last_updated_by,
2737 px_trans_rec.who_info.last_update_login,
2738 p_log_level_rec
2739 )
2740 )
2741 THEN
2742 IF (p_log_level_rec.statement_level)
2743 THEN
2744 NULL;
2745 END IF;
2746
2747 RAISE fareven_err;
2748 END IF;
2749
2750 l_adj_in.gen_ccid_flag := TRUE;
2751 END IF;
2752
2753 -- End of Bonus Deprn Change
2754 l_adj_in.adjustment_type := 'REVAL RESERVE';
2755 -- Bug#6666666 END
2756 IF (x_reval_out.reval_rsv_adj > 0)
2757 THEN
2758 l_adj_in.debit_credit_flag := 'CR';
2759 ELSE
2760 l_adj_in.debit_credit_flag := 'DR';
2761 END IF;
2762
2763 l_adj_in.adjustment_amount := ABS (x_reval_out.reval_rsv_adj);
2764 l_adj_in.ACCOUNT := l_reval_rsv_acct;
2765 -- Added a new mode to differentiate the reval reserve
2766 -- value going
2767 -- from reval engine to fa_adjustments table vs.
2768 -- the reval reserve
2769 -- value going from depreciation engine to fa_deprn_detail
2770 -- table for bug 628863. aling
2771 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active_reval;
2772 l_adj_in.account_type := 'REVAL_RESERVE_ACCT';
2773
2774 IF (x_reval_out.reval_rsv_adj <> 0)
2775 THEN
2776 IF (NOT fa_ins_adjust_pkg.faxinaj
2777 (l_adj_in,
2778 px_trans_rec.who_info.last_update_date,
2779 px_trans_rec.who_info.last_updated_by,
2780 px_trans_rec.who_info.last_update_login,
2781 p_log_level_rec
2782 )
2783 )
2784 THEN
2785 IF (p_log_level_rec.statement_level)
2786 THEN
2787 NULL;
2788 END IF;
2789
2790 RAISE fareven_err;
2791 END IF;
2792 END IF;
2793
2794 -- Bug 6666666 Start Additional Accounting Entries For SORP START
2795 fa_debug_pkg.ADD ('SORP ACCOUNTING', 'START', 'START', p_log_level_rec => p_log_level_rec);
2796 fa_debug_pkg.ADD ('SORP_ACCOUNTING',
2797 'px_trans_rec.mass_reference_id',
2798 px_trans_rec.mass_reference_id
2799 , p_log_level_rec => p_log_level_rec);
2800
2801 IF ( nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') = 'Y'
2802 AND p_reval_options_rec.linked_flag = 'YES'
2803 and p_reval_gain is not null
2804 )
2805 THEN
2806 IF NOT fa_sorp_revaluation_pkg.fa_sorp_accounting
2807 (p_asset_hdr_rec.asset_id,
2808 px_trans_rec.mass_reference_id,
2809 l_adj_in,
2810 px_trans_rec.who_info.last_updated_by,
2811 px_trans_rec.who_info.last_update_date
2812 , p_log_level_rec => p_log_level_rec)
2813 THEN
2814 fa_debug_pkg.ADD ('SORP_ACCOUNTING', 'Failure', 'Failure', p_log_level_rec => p_log_level_rec);
2815 RAISE fareven_err;
2816 RETURN FALSE;
2817 END IF;
2818
2819 END IF;
2820
2821 l_reval_loss_acct := fa_cache_pkg.fazccb_record.reval_loss_acct;
2822 IF l_reval_loss_exp <> 0 THEN
2823 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2824 l_adj_in.adjustment_type := 'REVAL LOSS';
2825 l_adj_in.adjustment_amount := l_reval_loss_exp;
2826 l_adj_in.ACCOUNT := l_reval_loss_acct;
2827 l_adj_in.account_type := 'REVAL_LOSS_ACCT';
2828 l_adj_in.flush_adj_flag := TRUE;
2829 l_adj_in.debit_credit_flag := 'CR';
2830
2831 IF (NOT fa_ins_adjust_pkg.faxinaj
2832 (l_adj_in,
2833 px_trans_rec.who_info.last_update_date,
2834 px_trans_rec.who_info.last_updated_by,
2835 px_trans_rec.who_info.last_update_login,
2836 p_log_level_rec
2837 )
2838 )
2839 THEN
2840 IF (p_log_level_rec.statement_level)
2841 THEN
2842 fa_debug_pkg.ADD ('fareven', 'failed', 'faxinaj for l_reval_loss_exp', p_log_level_rec => p_log_level_rec);
2843 END IF;
2844 raise fareven_err;
2845 END IF;
2846 /* neutralizing entries for revaluation loss expense */
2847 IF NOT FA_SORP_UTIL_PVT.create_sorp_neutral_acct (
2848 l_reval_loss_exp
2849 , 'Y'
2850 , l_adj_in
2851 , px_trans_rec.who_info.last_updated_by
2852 , px_trans_rec.who_info.last_update_date
2853 , p_log_level_rec => p_log_level_rec) THEN
2854 raise fareven_err;
2855 END IF;
2856 END IF;
2857
2858 IF l_reval_deprn_exp <> 0 THEN
2859 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2860 l_adj_in.adjustment_type := 'REVAL LOSS';
2861 l_adj_in.adjustment_amount := l_reval_deprn_exp;
2862 l_adj_in.ACCOUNT := l_reval_loss_acct;
2863 l_adj_in.account_type := 'REVAL_LOSS_ACCT';
2864 l_adj_in.flush_adj_flag := TRUE;
2865 l_adj_in.debit_credit_flag := 'CR';
2866
2867 IF (NOT fa_ins_adjust_pkg.faxinaj
2868 (l_adj_in,
2869 px_trans_rec.who_info.last_update_date,
2870 px_trans_rec.who_info.last_updated_by,
2871 px_trans_rec.who_info.last_update_login,
2872 p_log_level_rec
2873 )
2874 )
2875 THEN
2876 IF (p_log_level_rec.statement_level)
2877 THEN
2878 fa_debug_pkg.ADD ('fareven', 'failed', 'faxinaj for l_reval_deprn_exp', p_log_level_rec => p_log_level_rec);
2879 END IF;
2880 raise fareven_err;
2881 END IF;
2882 /* neutralizing entries */
2883 IF NOT FA_SORP_UTIL_PVT.create_sorp_neutral_acct (
2884 l_reval_deprn_exp
2885 , 'Y'
2886 , l_adj_in
2887 , px_trans_rec.who_info.last_updated_by
2888 , px_trans_rec.who_info.last_update_date
2889 , p_log_level_rec => p_log_level_rec) THEN
2890 raise fareven_err;
2891 END IF;
2892
2893 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2894 l_adj_in.adjustment_type := 'REVAL OFF EXP';
2895 l_adj_in.adjustment_amount := l_reval_deprn_exp;
2896 l_adj_in.ACCOUNT := l_deprn_exp_acct;
2897 l_adj_in.account_type := 'DEPRN_EXPENSE_ACCT';
2898 l_adj_in.flush_adj_flag := TRUE;
2899 l_adj_in.debit_credit_flag := 'DR';
2900
2901 IF (NOT fa_ins_adjust_pkg.faxinaj
2902 (l_adj_in,
2903 px_trans_rec.who_info.last_update_date,
2904 px_trans_rec.who_info.last_updated_by,
2905 px_trans_rec.who_info.last_update_login,
2906 p_log_level_rec
2907 )
2908 )
2909 THEN
2910 IF (p_log_level_rec.statement_level)
2911 THEN
2912 fa_debug_pkg.ADD ('fareven', 'failed', 'faxinaj for l_reval_deprn_exp', p_log_level_rec => p_log_level_rec);
2913 END IF;
2914 raise fareven_err;
2915 END IF;
2916 /* neutralizing entries for depreciation expense */
2917 IF NOT FA_SORP_UTIL_PVT.create_sorp_neutral_acct (
2918 l_reval_deprn_exp
2919 , 'N'
2920 , l_adj_in
2921 , px_trans_rec.who_info.last_updated_by
2922 , px_trans_rec.who_info.last_update_date
2923 , p_log_level_rec => p_log_level_rec) THEN
2924 raise fareven_err;
2925 END IF;
2926 END IF;
2927 -- Bug 6666666 Additioanl Accounting Entries for SORP End
2928 -- Reset the selection mode back to the original
2929 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2930 l_adj_in.adjustment_type := 'RESERVE';
2931
2932 IF (x_reval_out.deprn_rsv_adj > 0)
2933 THEN
2934 l_adj_in.debit_credit_flag := 'CR';
2935 ELSE
2936 l_adj_in.debit_credit_flag := 'DR';
2937 END IF;
2938
2939 l_adj_in.adjustment_amount := ABS (x_reval_out.deprn_rsv_adj);
2940 l_adj_in.ACCOUNT := l_deprn_rsv_acct;
2941 l_adj_in.account_type := 'DEPRN_RESERVE_ACCT';
2942 l_adj_in.flush_adj_flag := TRUE;
2943
2944 IF (NOT fa_ins_adjust_pkg.faxinaj
2945 (l_adj_in,
2946 px_trans_rec.who_info.last_update_date,
2947 px_trans_rec.who_info.last_updated_by,
2948 px_trans_rec.who_info.last_update_login,
2949 p_log_level_rec
2950 )
2951 )
2952 THEN
2953 IF (p_log_level_rec.statement_level)
2954 THEN
2955 NULL;
2956 END IF;
2957
2958 RAISE fareven_err;
2959 END IF;
2960
2961 -- Bonus Deprn YYOON
2962 IF (x_reval_out.bonus_deprn_rsv_adj <> 0)
2963 THEN
2964 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
2965 l_adj_in.adjustment_type := 'BONUS RESERVE';
2966
2967 IF (x_reval_out.bonus_deprn_rsv_adj > 0)
2968 THEN
2969 l_adj_in.debit_credit_flag := 'CR';
2970 ELSE
2971 l_adj_in.debit_credit_flag := 'DR';
2972 END IF;
2973
2974 l_adj_in.adjustment_amount :=
2975 ABS (x_reval_out.bonus_deprn_rsv_adj);
2976 l_adj_in.ACCOUNT := l_bonus_deprn_rsv_acct;
2977 l_adj_in.account_type := 'BONUS_DEPRN_RESERVE_ACCT';
2978 l_adj_in.flush_adj_flag := TRUE;
2979 -- The CCID of BONUS EXPENSE row will be generated
2980 -- through the workflow YYOON
2981 l_adj_in.gen_ccid_flag := TRUE;
2982
2983 IF (NOT fa_ins_adjust_pkg.faxinaj
2984 (l_adj_in,
2985 px_trans_rec.who_info.last_update_date,
2986 px_trans_rec.who_info.last_updated_by,
2987 px_trans_rec.who_info.last_update_login,
2988 p_log_level_rec
2989 )
2990 )
2991 THEN
2992 IF (p_log_level_rec.statement_level)
2993 THEN
2994 NULL;
2995 END IF;
2996
2997 RAISE fareven_err;
2998 END IF;
2999 END IF;
3000
3001 -- End of Bonus Deprn Change
3002 IF (x_reval_out.impairment_rsv_adj <> 0)
3003 THEN
3004 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
3005 l_adj_in.adjustment_type := 'IMPAIR RESERVE';
3006
3007 IF (x_reval_out.impairment_rsv_adj > 0)
3008 THEN
3009 l_adj_in.debit_credit_flag := 'CR';
3010 ELSE
3011 l_adj_in.debit_credit_flag := 'DR';
3012 END IF;
3013
3014 l_adj_in.adjustment_amount :=
3015 ABS (x_reval_out.impairment_rsv_adj);
3016 l_adj_in.ACCOUNT := l_impairment_rsv_acct;
3017 l_adj_in.account_type := 'IMPAIR_RESERVE_ACCT';
3018 l_adj_in.flush_adj_flag := TRUE;
3019 -- The CCID of IMPAIR RESERVE row will be generated
3020 -- through the workflow
3021 l_adj_in.gen_ccid_flag := TRUE;
3022
3023 IF (NOT fa_ins_adjust_pkg.faxinaj
3024 (l_adj_in,
3025 px_trans_rec.who_info.last_update_date,
3026 px_trans_rec.who_info.last_updated_by,
3027 px_trans_rec.who_info.last_update_login,
3028 p_log_level_rec
3029 )
3030 )
3031 THEN
3032 IF (p_log_level_rec.statement_level)
3033 THEN
3034 NULL;
3035 END IF;
3036
3037 RAISE fareven_err;
3038 END IF;
3039
3040 -- Bug#6666666 SORP START
3041 -- Below part is byepassed due to reason these are not part of SORP accounting
3042 IF nvl(fa_cache_pkg.fazcbc_record.sorp_enabled_flag,'N') <> 'Y'
3043 THEN
3044 l_adj_in.adjustment_type := 'REVAL RESERVE';
3045
3046 IF (x_reval_out.impairment_rsv_adj > 0)
3047 THEN
3048 l_adj_in.debit_credit_flag := 'DR';
3049 ELSE
3050 l_adj_in.debit_credit_flag := 'CR';
3051 END IF;
3052
3053 l_adj_in.adjustment_amount :=
3054 ABS (x_reval_out.impairment_rsv_adj);
3055 l_adj_in.ACCOUNT := l_reval_rsv_acct;
3056 l_adj_in.selection_mode :=
3057 fa_adjust_type_pkg.fa_aj_active_reval;
3058 l_adj_in.account_type := 'REVAL_RESERVE_ACCT';
3059
3060 IF (x_reval_out.impairment_rsv_adj <> 0)
3061 THEN
3062 IF (NOT fa_ins_adjust_pkg.faxinaj
3063 (l_adj_in,
3064 px_trans_rec.who_info.last_update_date,
3065 px_trans_rec.who_info.last_updated_by,
3066 px_trans_rec.who_info.last_update_login,
3067 p_log_level_rec
3068 )
3069 )
3070 THEN
3071 IF (p_log_level_rec.statement_level)
3072 THEN
3073 NULL;
3074 END IF;
3075
3076 RAISE fareven_err;
3077 END IF;
3078 END IF;
3079 END IF;
3080 -- Bug#6666666 SORP END
3081 END IF;
3082 END IF; -- If Cost Adjustment != 0 or new life != old life
3083 /*Bug#12571702 - If in period of addition need to updated adj_cost in deprn_summary,
3084 this is to calculated adj_cost correctly when auto-deprn rollback happens*/
3085 IF p_asset_hdr_rec.period_of_addition = 'Y' THEN
3086 IF p_mrc_sob_type_code = 'P' THEN
3087 update fa_deprn_summary set adjusted_cost = px_asset_fin_rec_new.adjusted_cost
3088 where asset_id = p_asset_hdr_rec.asset_id
3089 and book_type_code = p_asset_hdr_rec.book_type_code
3090 and period_counter = l_adj_in.period_counter_adjusted - 1;
3091 ELSE
3092 update fa_mc_deprn_summary set adjusted_cost = px_asset_fin_rec_new.adjusted_cost
3093 where asset_id = p_asset_hdr_rec.asset_id
3094 and book_type_code = p_asset_hdr_rec.book_type_code
3095 and set_of_books_id = p_asset_hdr_rec.set_of_books_id
3096 and period_counter = l_adj_in.period_counter_adjusted - 1;
3097 END IF;
3098 END IF;
3099 END IF; -- If Insert Transaction Flag = TRUE
3100
3101 <<fareven_exit_noerr>>
3102 NULL;
3103 RETURN (TRUE);
3104 EXCEPTION
3105 WHEN fareven_err
3106 THEN
3107 fa_srvr_msg.add_message (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3108 RETURN FALSE;
3109 WHEN OTHERS
3110 THEN
3111 fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3112 RETURN FALSE;
3113 END fareven;
3114
3115 FUNCTION reval_loss (
3116 px_trans_rec IN OUT NOCOPY fa_api_types.trans_rec_type,
3117 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
3118 p_asset_desc_rec IN fa_api_types.asset_desc_rec_type,
3119 p_asset_type_rec IN fa_api_types.asset_type_rec_type,
3120 p_asset_cat_rec IN fa_api_types.asset_cat_rec_type,
3121 p_asset_fin_rec_old IN fa_api_types.asset_fin_rec_type,
3122 px_asset_fin_rec_new IN OUT NOCOPY fa_api_types.asset_fin_rec_type,
3123 p_asset_deprn_rec_old IN fa_api_types.asset_deprn_rec_type,
3124 px_asset_deprn_rec_new IN OUT NOCOPY fa_api_types.asset_deprn_rec_type,
3125 p_period_rec IN fa_api_types.period_rec_type,
3126 p_mrc_sob_type_code IN VARCHAR2,
3127 p_reval_options_rec IN fa_api_types.reval_options_rec_type,
3128 x_reval_out OUT NOCOPY fa_std_types.reval_out_struct,
3129 p_log_level_rec IN fa_api_types.log_level_rec_type)
3130 RETURN BOOLEAN
3131 IS
3132
3133 l_reval_rate NUMBER := 0;
3134 l_reval_loss NUMBER := 0;
3135 l_reval_loss_delta NUMBER := 0;
3136 l_asset_fin_rec_adj fa_api_types.asset_fin_rec_type;
3137
3138 l_adj_in fa_adjust_type_pkg.fa_adj_row_struct;
3139 l_cost_acct VARCHAR2 (25);
3140 l_cip_cost_acct VARCHAR2 (25);
3141 l_reval_rsv_acct VARCHAR2 (25);
3142 l_deprn_rsv_acct VARCHAR2 (25);
3143 l_bonus_deprn_rsv_acct VARCHAR2 (25);
3144 l_impairment_rsv_acct VARCHAR2 (25);
3145 l_reval_loss_acct VARCHAR2 (25);
3146 l_last_period_counter NUMBER := 0;
3147 l_deprn_exp NUMBER;
3148 l_calling_fn VARCHAR2 (40) := 'FA_REVALUATION_PVT.revl_loss';
3149 l_bonus_deprn_exp NUMBER;
3150 l_impairment_exp NUMBER;
3151
3152 farevrl_err EXCEPTION;
3153
3154 BEGIN
3155
3156 --Set insert transaction flag
3157 IF (p_reval_options_rec.run_mode = 'RUN')
3158 THEN
3159 x_reval_out.insert_txn_flag := TRUE;
3160 ELSE
3161 x_reval_out.insert_txn_flag := FALSE;
3162 END IF;
3163
3164 px_trans_rec.transaction_subtype := 'STANDARD';
3165
3166 g_old_nbv := ( p_asset_fin_rec_old.recoverable_cost
3167 - p_asset_deprn_rec_old.deprn_reserve
3168 + NVL(p_asset_fin_rec_old.salvage_value,0)
3169 - NVL (p_asset_deprn_rec_old.impairment_reserve, 0));
3170
3171 --Calculate old and new NBV and the cost adjustment amount
3172 --Cost adjustment amount = reval loss + impairment reserve + deprn reserve
3173 IF p_reval_options_rec.value_type = 'NBV'
3174 THEN
3175 g_new_nbv := p_reval_options_rec.reval_percent;
3176 ELSIF p_reval_options_rec.value_type = 'AMT'
3177 THEN
3178 g_new_nbv := g_old_nbv + p_reval_options_rec.reval_percent;
3179 ELSIF p_reval_options_rec.value_type = 'PER'
3180 THEN
3181 l_reval_rate := p_reval_options_rec.reval_percent / 100;
3182 g_new_nbv := g_old_nbv + g_old_nbv*l_reval_rate;
3183 IF NOT fa_utils_pkg.faxrnd (g_new_nbv,
3184 p_asset_hdr_rec.book_type_code,
3185 p_asset_hdr_rec.set_of_books_id,
3186 p_log_level_rec => p_log_level_rec)
3187 THEN
3188 RAISE farevrl_err;
3189 END IF;
3190 END IF;
3191
3192 --This loss amount is positive
3193 l_reval_loss_delta := g_old_nbv - g_new_nbv;
3194
3195 x_reval_out.cost_adj := g_new_nbv - p_asset_fin_rec_old.cost;
3196
3197 IF (NVL(p_asset_deprn_rec_old.reval_deprn_reserve,0) >= (l_reval_loss_delta)) THEN
3198 l_reval_loss := 0;
3199 x_reval_out.reval_rsv_adj := -l_reval_loss_delta;
3200 ELSE
3201 l_reval_loss := l_reval_loss_delta - NVL(p_asset_deprn_rec_old.reval_deprn_reserve,0);
3202 x_reval_out.reval_rsv_adj := -NVL(p_asset_deprn_rec_old.reval_deprn_reserve,0);
3203 END IF;
3204
3205 --This may not be required
3206 x_reval_out.new_life := p_asset_fin_rec_old.life_in_months;
3207 x_reval_out.new_fully_rsvd_revals_ctr := p_asset_fin_rec_old.fully_rsvd_revals_counter;
3208 x_reval_out.deprn_rsv_adj := -p_asset_deprn_rec_old.deprn_reserve;
3209 x_reval_out.bonus_deprn_rsv_adj := -p_asset_deprn_rec_old.bonus_deprn_reserve;
3210 x_reval_out.ytd_deprn_adj := 0;
3211 x_reval_out.bonus_ytd_deprn_adj := 0;
3212 x_reval_out.ytd_impairment_adj := 0;
3213 x_reval_out.impairment_rsv_adj := -p_asset_deprn_rec_old.impairment_reserve;
3214 --This may not be required ends
3215
3216 -- Get the new cost/life/
3217 -- /period counter fully reserved
3218
3219 px_asset_fin_rec_new.cost := p_asset_fin_rec_old.cost + x_reval_out.cost_adj;
3220 px_asset_fin_rec_new.annual_deprn_rounding_flag := 'REV';
3221 IF NOT fa_asset_calc_pvt.calc_salvage_value
3222 (p_trans_rec => px_trans_rec,
3223 p_asset_hdr_rec => p_asset_hdr_rec,
3224 p_asset_type_rec => p_asset_type_rec,
3225 p_asset_fin_rec_old => p_asset_fin_rec_old,
3226 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
3227 px_asset_fin_rec_new => px_asset_fin_rec_new,
3228 p_mrc_sob_type_code => p_mrc_sob_type_code,
3229 p_log_level_rec => p_log_level_rec)
3230 THEN
3231 RAISE farevrl_err;
3232 END IF;
3233
3234 x_reval_out.new_salvage_value := px_asset_fin_rec_new.salvage_value;
3235
3236 IF NOT fa_asset_calc_pvt.calc_rec_cost
3237 (p_asset_hdr_rec => p_asset_hdr_rec,
3238 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
3239 px_asset_fin_rec_new => px_asset_fin_rec_new,
3240 p_log_level_rec => p_log_level_rec)
3241 THEN
3242 RAISE farevrl_err;
3243 END IF;
3244
3245 px_asset_fin_rec_new.adjusted_cost := px_asset_fin_rec_new.recoverable_cost;
3246
3247 IF NOT fa_asset_calc_pvt.calc_deprn_limit_adj_rec_cost
3248 (p_asset_hdr_rec => p_asset_hdr_rec,
3249 p_asset_type_rec => p_asset_type_rec,
3250 p_asset_fin_rec_old => p_asset_fin_rec_old,
3251 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
3252 px_asset_fin_rec_new => px_asset_fin_rec_new,
3253 p_mrc_sob_type_code => p_mrc_sob_type_code,
3254 p_log_level_rec => p_log_level_rec)
3255 THEN
3256 RAISE farevrl_err;
3257 END IF;
3258
3259 IF NOT fa_amort_pvt.faxraf
3260 (px_trans_rec => px_trans_rec,
3261 p_asset_hdr_rec => p_asset_hdr_rec,
3262 p_asset_desc_rec => p_asset_desc_rec,
3263 p_asset_cat_rec => p_asset_cat_rec,
3264 p_asset_type_rec => p_asset_type_rec,
3265 p_asset_fin_rec_old => p_asset_fin_rec_old,
3266 px_asset_fin_rec_new => px_asset_fin_rec_new,
3267 p_asset_deprn_rec => p_asset_deprn_rec_old,
3268 p_period_rec => p_period_rec,
3269 px_deprn_exp => l_deprn_exp,
3270 px_bonus_deprn_exp => l_bonus_deprn_exp,
3271 px_impairment_exp => l_impairment_exp,
3272 px_reval_deprn_rsv_adj => x_reval_out.deprn_rsv_adj,
3273 p_mrc_sob_type_code => p_mrc_sob_type_code,
3274 p_running_mode => fa_std_types.fa_dpr_normal,
3275 p_used_by_revaluation => 1,
3276 p_log_level_rec => p_log_level_rec)
3277 THEN
3278 RAISE farevrl_err;
3279 END IF;
3280
3281 IF (p_asset_type_rec.asset_type = 'CIP')
3282 THEN
3283 px_asset_fin_rec_new.rate_adjustment_factor := 1;
3284 END IF;
3285
3286 px_asset_fin_rec_new.life_in_months := p_asset_fin_rec_old.life_in_months;
3287 px_asset_fin_rec_new.fully_rsvd_revals_counter := x_reval_out.new_fully_rsvd_revals_ctr;
3288 px_asset_deprn_rec_new.deprn_reserve := p_asset_deprn_rec_old.deprn_reserve + x_reval_out.deprn_rsv_adj;
3289 px_asset_deprn_rec_new.reval_deprn_reserve := p_asset_deprn_rec_old.reval_deprn_reserve + x_reval_out.reval_rsv_adj;
3290 px_asset_deprn_rec_new.bonus_deprn_reserve := p_asset_deprn_rec_old.bonus_deprn_reserve + x_reval_out.bonus_deprn_rsv_adj;
3291 px_asset_fin_rec_new.reval_amortization_basis := px_asset_deprn_rec_new.reval_deprn_reserve;
3292 px_asset_fin_rec_new.period_counter_fully_reserved := p_asset_fin_rec_old.period_counter_fully_reserved;
3293 px_asset_fin_rec_new.period_counter_life_complete := p_asset_fin_rec_old.period_counter_life_complete;
3294
3295 IF (p_reval_options_rec.run_mode = 'RUN') THEN
3296
3297 IF (NOT fa_cache_pkg.fazccb
3298 (x_book => p_asset_hdr_rec.book_type_code,
3299 x_cat_id => p_asset_cat_rec.category_id,
3300 p_log_level_rec => p_log_level_rec))
3301 THEN
3302 RAISE farevrl_err;
3303 END IF;
3304
3305 l_cost_acct := fa_cache_pkg.fazccb_record.asset_cost_acct;
3306 l_cip_cost_acct := fa_cache_pkg.fazccb_record.cip_cost_acct;
3307 l_reval_rsv_acct := fa_cache_pkg.fazccb_record.reval_reserve_acct;
3308 l_deprn_rsv_acct := fa_cache_pkg.fazccb_record.deprn_reserve_acct;
3309 l_impairment_rsv_acct := fa_cache_pkg.fazccb_record.impair_reserve_acct;
3310 l_bonus_deprn_rsv_acct := fa_cache_pkg.fazccb_record.bonus_deprn_reserve_acct;
3311 l_reval_loss_acct := fa_cache_pkg.fazccb_record.reval_loss_acct;
3312
3313 IF NOT fa_cache_pkg.fazccmt
3314 (x_method => p_asset_fin_rec_old.deprn_method_code,
3315 x_life => p_asset_fin_rec_old.life_in_months
3316 , p_log_level_rec => p_log_level_rec)
3317 THEN
3318 RAISE farevrl_err;
3319 END IF;
3320
3321 l_last_period_counter := fa_cache_pkg.fazcbc_record.last_period_counter;
3322 l_adj_in.code_combination_id := 0;
3323 l_adj_in.book_type_code := p_asset_hdr_rec.book_type_code;
3324 l_adj_in.period_counter_created := l_last_period_counter + 1;
3325 l_adj_in.asset_id := p_asset_hdr_rec.asset_id;
3326 l_adj_in.period_counter_adjusted := l_last_period_counter + 1;
3327 l_adj_in.distribution_id := 0;
3328 l_adj_in.annualized_adjustment := 0;
3329 l_adj_in.last_update_date := px_trans_rec.who_info.last_update_date;
3330 l_adj_in.transaction_header_id := px_trans_rec.transaction_header_id;
3331 l_adj_in.asset_invoice_id := 0;
3332 l_adj_in.source_type_code := 'REVALUATION';
3333 l_adj_in.current_units := p_asset_desc_rec.current_units;
3334 l_adj_in.selection_mode := fa_adjust_type_pkg.fa_aj_active;
3335 l_adj_in.selection_thid := 0;
3336 l_adj_in.selection_retid := 0;
3337 l_adj_in.flush_adj_flag := TRUE;
3338 l_adj_in.gen_ccid_flag := TRUE;
3339 l_adj_in.mrc_sob_type_code := p_mrc_sob_type_code;
3340 l_adj_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
3341 l_adj_in.leveling_flag := FALSE; /*Bug 16491346 */
3342
3343 --Create entry for cost adjustment (CR the amount of change in cost)
3344 IF (p_asset_type_rec.asset_type = 'CIP') THEN
3345 l_adj_in.adjustment_type := 'CIP COST';
3346 l_adj_in.account := l_cip_cost_acct;
3347 l_adj_in.account_type := 'CIP_COST_ACCT';
3348 ELSE
3349 l_adj_in.adjustment_type := 'COST';
3350 l_adj_in.account := l_cost_acct;
3351 l_adj_in.account_type := 'ASSET_COST_ACCT';
3352 END IF;
3353
3354 l_adj_in.debit_credit_flag := 'CR';
3355 l_adj_in.adjustment_amount := ABS (x_reval_out.cost_adj);
3356
3357 IF (x_reval_out.cost_adj <> 0) THEN
3358 IF (NOT fa_ins_adjust_pkg.faxinaj
3359 (l_adj_in,
3360 px_trans_rec.who_info.last_update_date,
3361 px_trans_rec.who_info.last_updated_by,
3362 px_trans_rec.who_info.last_update_login,
3363 p_log_level_rec
3364 )
3365 )
3366 THEN
3367 IF (p_log_level_rec.statement_level)
3368 THEN
3369 NULL;
3370 END IF;
3371
3372 RAISE farevrl_err;
3373 END IF;
3374 END IF;
3375
3376 --Create entry for deprn reserve adjustment (DR the entire reserve amount)
3377 l_adj_in.adjustment_type := 'RESERVE';
3378 l_adj_in.account := l_deprn_rsv_acct;
3379 l_adj_in.account_type := 'DEPRN_RESERVE_ACCT';
3380 l_adj_in.debit_credit_flag := 'DR';
3381 l_adj_in.adjustment_amount := ABS (x_reval_out.deprn_rsv_adj);
3382
3383 IF (x_reval_out.deprn_rsv_adj <> 0) THEN
3384 IF (NOT fa_ins_adjust_pkg.faxinaj
3385 (l_adj_in,
3386 px_trans_rec.who_info.last_update_date,
3387 px_trans_rec.who_info.last_updated_by,
3388 px_trans_rec.who_info.last_update_login,
3389 p_log_level_rec
3390 )
3391 )
3392 THEN
3393 IF (p_log_level_rec.statement_level)
3394 THEN
3395 NULL;
3396 END IF;
3397
3398 RAISE farevrl_err;
3399 END IF;
3400 END IF;
3401
3402 --Create entry for bonus deprn reserve adjustment (DR the entire reserve amount)
3403 l_adj_in.adjustment_type := 'BONUS RESERVE';
3404 l_adj_in.account := l_bonus_deprn_rsv_acct;
3405 l_adj_in.account_type := 'BONUS_DEPRN_RESERVE_ACCT';
3406 l_adj_in.debit_credit_flag := 'DR';
3407 l_adj_in.adjustment_amount := ABS (x_reval_out.bonus_deprn_rsv_adj);
3408
3409 IF (x_reval_out.bonus_deprn_rsv_adj <> 0) THEN
3410 IF (NOT fa_ins_adjust_pkg.faxinaj
3411 (l_adj_in,
3412 px_trans_rec.who_info.last_update_date,
3413 px_trans_rec.who_info.last_updated_by,
3414 px_trans_rec.who_info.last_update_login,
3415 p_log_level_rec
3416 )
3417 )
3418 THEN
3419 IF (p_log_level_rec.statement_level)
3420 THEN
3421 NULL;
3422 END IF;
3423
3424 RAISE farevrl_err;
3425 END IF;
3426 END IF;
3427
3428 --Create entry for reval reserve
3429 l_adj_in.adjustment_type := 'REVAL RESERVE';
3430 l_adj_in.account := l_reval_rsv_acct;
3431 l_adj_in.account_type := 'REVAL_RESERVE_ACCT';
3432 l_adj_in.debit_credit_flag := 'DR';
3433 --l_adj_in.adjustment_amount := ABS (x_reval_out.reval_rsv_adj);
3434 l_adj_in.adjustment_amount := ABS (x_reval_out.reval_rsv_adj) - NVL(p_asset_deprn_rec_old.reval_deprn_reserve,0);
3435
3436 IF (x_reval_out.reval_rsv_adj <> 0) THEN
3437 IF (NOT fa_ins_adjust_pkg.faxinaj
3438 (l_adj_in,
3439 px_trans_rec.who_info.last_update_date,
3440 px_trans_rec.who_info.last_updated_by,
3441 px_trans_rec.who_info.last_update_login,
3442 p_log_level_rec
3443 )
3444 )
3445 THEN
3446 IF (p_log_level_rec.statement_level)
3447 THEN
3448 NULL;
3449 END IF;
3450
3451 RAISE farevrl_err;
3452 END IF;
3453 END IF;
3454
3455 --Create entry for capital adjustment and general fund
3456 l_adj_in.adjustment_amount := ABS (l_reval_loss);
3457
3458 IF (l_reval_loss <> 0) THEN
3459 IF NOT FA_SORP_UTIL_PVT.create_sorp_neutral_acct ( ABS (l_reval_loss)
3460 , 'N'
3461 , l_adj_in
3462 , px_trans_rec.who_info.last_updated_by
3463 , px_trans_rec.who_info.last_update_date
3464 , p_log_level_rec => p_log_level_rec) THEN
3465 raise farevrl_err;
3466 RETURN FALSE;
3467 END IF;
3468 END IF;
3469
3470 --Create entry for impairment reserve
3471 l_adj_in.adjustment_type := 'IMPAIR RESERVE';
3472 l_adj_in.account := l_impairment_rsv_acct;
3473 l_adj_in.account_type := 'IMPAIR_RESERVE_ACCT';
3474 l_adj_in.debit_credit_flag := 'DR';
3475 l_adj_in.adjustment_amount := ABS (x_reval_out.impairment_rsv_adj);
3476
3477 IF (x_reval_out.impairment_rsv_adj <> 0) THEN
3478 IF (NOT fa_ins_adjust_pkg.faxinaj
3479 (l_adj_in,
3480 px_trans_rec.who_info.last_update_date,
3481 px_trans_rec.who_info.last_updated_by,
3482 px_trans_rec.who_info.last_update_login,
3483 p_log_level_rec
3484 )
3485 )
3486 THEN
3487 IF (p_log_level_rec.statement_level)
3488 THEN
3489 NULL;
3490 END IF;
3491
3492 RAISE farevrl_err;
3493 END IF;
3494 END IF;
3495
3496 --Create entry for reval loss account
3497 l_adj_in.adjustment_type := 'REVAL LOSS';
3498 l_adj_in.account := l_reval_loss_acct;
3499 l_adj_in.account_type := 'REVAL_LOSS_ACCT';
3500 l_adj_in.debit_credit_flag := 'DR';
3501 l_adj_in.adjustment_amount := ABS (l_reval_loss);
3502
3503 IF (l_reval_loss <> 0) THEN
3504 IF p_mrc_sob_type_code = 'P' THEN
3505 update fa_books_summary set reval_loss_balance = reval_loss_balance + ABS (l_reval_loss)
3506 where asset_id = p_asset_hdr_rec.asset_id
3507 and book_type_code = p_asset_hdr_rec.book_type_code
3508 and period_counter >= l_adj_in.period_counter_adjusted ;
3509 ELSE
3510 update fa_mc_books_summary set reval_loss_balance = reval_loss_balance + ABS (l_reval_loss)
3511 where asset_id = p_asset_hdr_rec.asset_id
3512 and book_type_code = p_asset_hdr_rec.book_type_code
3513 and set_of_books_id = p_asset_hdr_rec.set_of_books_id
3514 and period_counter >= l_adj_in.period_counter_adjusted ;
3515 END IF;
3516
3517 IF (NOT fa_ins_adjust_pkg.faxinaj
3518 (l_adj_in,
3519 px_trans_rec.who_info.last_update_date,
3520 px_trans_rec.who_info.last_updated_by,
3521 px_trans_rec.who_info.last_update_login,
3522 p_log_level_rec
3523 )
3524 )
3525 THEN
3526 IF (p_log_level_rec.statement_level)
3527 THEN
3528 NULL;
3529 END IF;
3530
3531 RAISE farevrl_err;
3532 END IF;
3533
3534 END IF;
3535 /*Bug#12571702 - If in period of addition need to updated adj_cost in deprn_summary,
3536 this is to calculated adj_cost correctly when auto-deprn rollback happens*/
3537 IF p_asset_hdr_rec.period_of_addition = 'Y' THEN
3538 IF p_mrc_sob_type_code = 'P' THEN
3539 update fa_deprn_summary set adjusted_cost = px_asset_fin_rec_new.adjusted_cost
3540 where asset_id = p_asset_hdr_rec.asset_id
3541 and book_type_code = p_asset_hdr_rec.book_type_code
3542 and period_counter = l_adj_in.period_counter_adjusted - 1;
3543 ELSE
3544 update fa_mc_deprn_summary set adjusted_cost = px_asset_fin_rec_new.adjusted_cost
3545 where asset_id = p_asset_hdr_rec.asset_id
3546 and book_type_code = p_asset_hdr_rec.book_type_code
3547 and set_of_books_id = p_asset_hdr_rec.set_of_books_id
3548 and period_counter = l_adj_in.period_counter_adjusted - 1;
3549 END IF;
3550 END IF;
3551 END IF;
3552
3553 RETURN TRUE;
3554 EXCEPTION
3555 WHEN OTHERS THEN
3556 fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3557 RETURN FALSE;
3558 END reval_loss;
3559 /*ER 14644811 */
3560 FUNCTION process_depreciation
3561 (p_trans_rec IN FA_API_TYPES.trans_rec_type,
3562 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type,
3563 p_asset_desc_rec IN FA_API_TYPES.asset_desc_rec_type,
3564 p_asset_type_rec IN FA_API_TYPES.asset_type_rec_type,
3565 p_asset_cat_rec IN FA_API_TYPES.asset_cat_rec_type,
3566 p_period_rec IN FA_API_TYPES.period_rec_type,
3567 px_asset_fin_rec_old IN OUT NOCOPY FA_API_TYPES.asset_fin_rec_type,
3568 px_asset_deprn_rec_old IN OUT NOCOPY FA_API_TYPES.asset_deprn_rec_type,
3569 p_reval_options_rec IN FA_API_TYPES.reval_options_rec_type,
3570 p_mrc_sob_type_code IN VARCHAR2,
3571 p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
3572
3573 l_dpr_row FA_STD_TYPES.FA_DEPRN_ROW_STRUCT;
3574 l_status boolean;
3575 l_dpr_in fa_std_types.dpr_struct;
3576 l_dpr_arr fa_std_types.dpr_arr_type;
3577 l_running_mode number := fa_std_types.FA_DPR_NORMAL;
3578 g_temp_integer binary_integer;
3579
3580 dpr_err exception;
3581 l_calling_fn VARCHAR2 (40) := 'FA_REVALUATION_PVT.process_depreciation';
3582 BEGIN
3583 if (p_log_level_rec.statement_level) then
3584 fa_debug_pkg.add(l_calling_fn,'Process Depreciation', 'BEGIN', p_log_level_rec => p_log_level_rec);
3585 end if;
3586
3587 if px_asset_fin_rec_old.depreciate_flag = 'NO' OR p_asset_type_rec.asset_type <> 'CAPITALIZED' then
3588 return TRUE;
3589 end if;
3590 --Prepare deprn_rec to call faxcde
3591 l_dpr_in.asset_num := p_asset_desc_rec.asset_number;
3592 l_dpr_in.calendar_type := fa_cache_pkg.fazcbc_record.deprn_calendar;
3593 l_dpr_in.book := p_asset_hdr_rec.book_type_code;
3594 l_dpr_in.asset_id := p_asset_hdr_rec.asset_id;
3595 l_dpr_in.set_of_books_id := p_asset_hdr_rec.set_of_books_id;
3596 l_dpr_in.mrc_sob_type_code := p_mrc_sob_type_code;
3597 l_dpr_row.period_ctr := p_period_rec.period_counter;
3598 l_dpr_row.dist_id := 0;
3599 l_dpr_in.rec_cost := px_asset_fin_rec_old.recoverable_cost;
3600 l_dpr_in.salvage_value := px_asset_fin_rec_old.salvage_value;
3601 l_dpr_in.adj_rec_cost := px_asset_fin_rec_old.adjusted_recoverable_cost;
3602 l_dpr_in.adj_cost := px_asset_fin_rec_old.adjusted_cost;
3603 l_dpr_in.old_adj_cost := px_asset_fin_rec_old.old_adjusted_cost;
3604 l_dpr_in.formula_factor := px_asset_fin_rec_old.formula_factor;
3605 l_dpr_in.rate_adj_factor := px_asset_fin_rec_old.rate_adjustment_factor;
3606 l_dpr_in.eofy_reserve := px_asset_fin_rec_old.eofy_reserve;
3607 l_dpr_in.method_code := px_asset_fin_rec_old.deprn_method_code;
3608 l_dpr_in.life := px_asset_fin_rec_old.life_in_months;
3609 l_dpr_in.adj_rate := px_asset_fin_rec_old.adjusted_rate;
3610 l_dpr_in.capacity := px_asset_fin_rec_old.production_capacity;
3611 l_dpr_in.adj_capacity := px_asset_fin_rec_old.adjusted_capacity;
3612 l_dpr_in.bonus_rule := px_asset_fin_rec_old.bonus_rule;
3613 l_dpr_in.ceil_name := px_asset_fin_rec_old.ceiling_name;
3614 l_dpr_in.reval_amo_basis := px_asset_fin_rec_old.reval_amortization_basis;
3615 l_dpr_in.jdate_in_service := to_number(to_char(px_asset_fin_rec_old.date_placed_in_service, 'J'));
3616 l_dpr_in.prorate_jdate := to_number(to_char(px_asset_fin_rec_old.prorate_date, 'J'));
3617 l_dpr_in.deprn_start_jdate := to_number(to_char(px_asset_fin_rec_old.deprn_start_date, 'J'));
3618 l_dpr_in.prorate_date := px_asset_fin_rec_old.prorate_date;
3619 l_dpr_in.orig_deprn_start_date := px_asset_fin_rec_old.orig_deprn_start_date;
3620 l_dpr_in.jdate_retired := 0;
3621 l_dpr_in.ret_prorate_jdate := 0;
3622 l_dpr_in.ltd_prod := px_asset_deprn_rec_old.ltd_production;
3623 l_dpr_in.ytd_deprn := px_asset_deprn_rec_old.ytd_deprn;
3624 l_dpr_in.deprn_rsv := px_asset_deprn_rec_old.deprn_reserve;
3625 l_dpr_in.reval_rsv := px_asset_deprn_rec_old.reval_deprn_reserve;
3626 l_dpr_in.bonus_deprn_exp := 0;
3627 l_dpr_in.bonus_ytd_deprn := px_asset_deprn_rec_old.bonus_ytd_deprn;
3628 l_dpr_in.bonus_deprn_rsv := px_asset_deprn_rec_old.bonus_deprn_reserve;
3629 l_dpr_in.prior_fy_exp := px_asset_deprn_rec_old.prior_fy_expense;
3630 l_dpr_in.prior_fy_bonus_exp := px_asset_deprn_rec_old.prior_fy_bonus_expense;
3631 l_dpr_in.impairment_exp := 0;
3632 l_dpr_in.ytd_impairment := px_asset_deprn_rec_old.ytd_impairment;
3633 l_dpr_in.impairment_rsv := px_asset_deprn_rec_old.impairment_reserve;
3634 l_dpr_in.short_fiscal_year_flag := px_asset_fin_rec_old.short_fiscal_year_flag;
3635 l_dpr_in.conversion_date := px_asset_fin_rec_old.conversion_date;
3636 l_dpr_in.super_group_id := px_asset_fin_rec_old.super_group_id;
3637 l_dpr_in.over_depreciate_option := px_asset_fin_rec_old.over_depreciate_option;
3638 l_dpr_in.tracking_method := px_asset_fin_rec_old.tracking_method;
3639 l_dpr_in.allocate_to_fully_ret_flag := px_asset_fin_rec_old.allocate_to_fully_ret_flag;
3640 l_dpr_in.allocate_to_fully_rsv_flag := px_asset_fin_rec_old.allocate_to_fully_rsv_flag;
3641 l_dpr_in.excess_allocation_option := px_asset_fin_rec_old.excess_allocation_option;
3642 l_dpr_in.depreciation_option := px_asset_fin_rec_old.depreciation_option;
3643 l_dpr_in.member_rollup_flag := px_asset_fin_rec_old.member_rollup_flag;
3644 l_dpr_in.pc_life_end := px_asset_fin_rec_old.period_counter_life_complete;
3645 l_dpr_in.deprn_override_flag := fa_std_types.FA_NO_OVERRIDE;
3646 l_dpr_in.rsv_known_flag := TRUE;
3647 l_dpr_in.deprn_rounding_flag := 'REV';
3648 l_dpr_in.used_by_adjustment := FALSE;
3649 l_running_mode := fa_std_types.FA_DPR_NORMAL;
3650 l_dpr_in.y_begin := p_period_rec.fiscal_year;
3651 l_dpr_in.p_cl_begin := p_period_rec.period_num;
3652 l_dpr_in.y_end := p_period_rec.fiscal_year;
3653 l_dpr_in.p_cl_end := p_period_rec.period_num;
3654
3655 if (p_reval_options_rec.run_mode = 'PREVIEW') then --16275774
3656 l_dpr_in.deprn_override_used_by := 'PRE';
3657 end if;
3658
3659
3660 --+++++++ Call Depreciation engine to calculate periodic depreciation +++++++
3661 if not FA_CDE_PKG.faxcde(l_dpr_in,
3662 l_dpr_arr,
3663 g_dpr_out,
3664 l_running_mode,
3665 p_log_level_rec => p_log_level_rec) then
3666 if (p_log_level_rec.statement_level) then
3667 fa_debug_pkg.add(l_calling_fn, 'Error calling','FA_CDE_PKG.faxcde', p_log_level_rec => p_log_level_rec);
3668 end if;
3669
3670 raise dpr_err;
3671 end if;
3672
3673 --Assign value returned by faxcde to attributes in deprn_rec_old and fin_old_rec
3674 px_asset_deprn_rec_old.deprn_amount := g_dpr_out.deprn_exp ;
3675 px_asset_deprn_rec_old.ytd_deprn := g_dpr_out.new_ytd_deprn;
3676 px_asset_deprn_rec_old.deprn_reserve := g_dpr_out.new_deprn_rsv;
3677 px_asset_fin_rec_old.adjusted_cost := g_dpr_out.new_adj_cost;
3678 px_asset_deprn_rec_old.bonus_deprn_amount := g_dpr_out.bonus_deprn_exp;
3679 px_asset_deprn_rec_old.bonus_ytd_deprn := px_asset_deprn_rec_old.bonus_ytd_deprn + g_dpr_out.bonus_deprn_exp;
3680 px_asset_deprn_rec_old.bonus_deprn_reserve := g_dpr_out.new_bonus_deprn_rsv;
3681 px_asset_deprn_rec_old.production := g_dpr_out.prod;
3682 px_asset_deprn_rec_old.ytd_production := px_asset_deprn_rec_old.ytd_production + g_dpr_out.prod;
3683 px_asset_deprn_rec_old.ltd_production := g_dpr_out.new_ltd_prod;
3684 px_asset_deprn_rec_old.reval_amortization := g_dpr_out.reval_amo;
3685 px_asset_deprn_rec_old.reval_amortization_basis := g_dpr_out.new_reval_amo_basis;
3686 px_asset_deprn_rec_old.reval_deprn_expense := g_dpr_out.reval_exp;
3687 px_asset_deprn_rec_old.reval_deprn_reserve := g_dpr_out.new_reval_rsv;
3688 px_asset_deprn_rec_old.prior_fy_expense := g_dpr_out.new_prior_fy_exp;
3689 px_asset_deprn_rec_old.prior_fy_bonus_expense := g_dpr_out.new_prior_fy_bonus_exp;
3690 if g_dpr_out.bonus_rate_used = -1 then
3691 g_dpr_out.bonus_rate_used := 0;
3692 else
3693 g_dpr_out.bonus_rate_used := g_dpr_out.bonus_rate_used;
3694 end if;
3695
3696 RETURN TRUE;
3697 EXCEPTION
3698 WHEN dpr_err THEN
3699 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3700 return false;
3701 WHEN OTHERS THEN
3702 fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
3703 RETURN FALSE;
3704 END process_depreciation;
3705
3706 -- ER 14644811 : New function for rolling back Period End Revaluation
3707 FUNCTION rollback_reval(
3708 p_asset_hdr_rec IN FA_API_TYPES.asset_hdr_rec_type,
3709 p_thid IN NUMBER,
3710 p_event_id IN NUMBER,
3711 p_mrc_sob_type_code IN VARCHAR2,
3712 p_calling_fn IN VARCHAR2,
3713 p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
3714
3715
3716 l_trx_source_info XLA_EVENTS_PUB_PKG.t_event_source_info;
3717 l_security_context XLA_EVENTS_PUB_PKG.t_security;
3718 l_asset_type_rec FA_API_TYPES.asset_type_rec_type;
3719 l_trans_rec FA_API_TYPES.trans_rec_type;
3720 l_period_rec fa_api_types.period_rec_type;
3721
3722 CURSOR c_get_new_thid IS
3723 select transaction_header_id
3724 , date_effective
3725 , last_updated_by
3726 from fa_transaction_headers
3727 where asset_id = p_asset_hdr_rec.asset_id
3728 and book_type_code = p_asset_hdr_rec.book_type_code
3729 and date_effective between l_period_rec.period_open_date
3730 and nvl(l_period_rec.period_close_date, sysdate)
3731 and calling_interface = 'FAXRRB'
3732 and transaction_key = 'RV'
3733 order by transaction_header_id desc;
3734
3735
3736 l_reval_count NUMBER := 0;
3737 l_event_status VARCHAR2(1);
3738
3739 l_secondary_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
3740 l_secondary_trans_rec fa_api_types.trans_rec_type;
3741 l_secondary_sob_id number;
3742
3743 reval_err EXCEPTION;
3744 l_calling_fn VARCHAR2 (40) := 'FA_REVALUATION_PVT.rollback_reval';
3745
3746 begin
3747
3748
3749 if (p_log_level_rec.statement_level) then
3750 fa_debug_pkg.add(l_calling_fn, 'Rollback PDR', '$$$START$$$',p_log_level_rec => p_log_level_rec);
3751 fa_debug_pkg.add(l_calling_fn, 'Book: ', p_asset_hdr_rec.book_type_code,p_log_level_rec => p_log_level_rec);
3752 fa_debug_pkg.add(l_calling_fn, 'TH_Id: ', p_thid,p_log_level_rec => p_log_level_rec);
3753 fa_debug_pkg.add(l_calling_fn, 'Asset_id: ', p_asset_hdr_rec.asset_id,p_log_level_rec => p_log_level_rec);
3754 end if;
3755
3756 if (NOT FA_UTIL_PVT.get_period_rec (
3757 p_book => p_asset_hdr_rec.book_type_code,
3758 p_effective_date => NULL,
3759 x_period_rec => l_period_rec,
3760 p_log_level_rec => p_log_level_rec -- Bug:5475024
3761 )) then
3762 raise reval_err;
3763 end if;
3764
3765 if p_event_id is not null then
3766
3767 -- Get the event status
3768 l_trx_source_info.application_id := 140;
3769 l_trx_source_info.ledger_id := p_asset_hdr_rec.set_of_books_id;
3770 l_trx_source_info.source_id_int_1 := p_thid ;
3771 l_trx_source_info.source_id_char_1 := p_asset_hdr_rec.book_type_code;
3772 l_trx_source_info.entity_type_code := 'TRANSACTIONS';
3773
3774 -- check the event status
3775
3776 l_event_status := XLA_EVENTS_PUB_PKG.get_event_status
3777 (p_event_source_info => l_trx_source_info,
3778 p_event_id => p_event_id,
3779 p_valuation_method => p_asset_hdr_rec.book_type_code,
3780 p_security_context => l_security_context);
3781
3782 else
3783 -- p_event_id will be null for alc,
3784 -- we need to find out if the reval transaction is deleted or not
3785
3786 select count(1)
3787 into l_reval_count
3788 from fa_transaction_headers
3789 where transaction_header_id = p_thid;
3790
3791 if l_reval_count = 0 then /* Event and Reval transaction is deleted */
3792 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
3793 else
3794 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED;
3795 end if;
3796
3797 end if;
3798
3799 if (p_log_level_rec.statement_level) then
3800 fa_debug_pkg.add(l_calling_fn, 'event status ', l_event_status,p_log_level_rec => p_log_level_rec);
3801 end if;
3802
3803 -- If event is not processed no need to create rollback event
3804 if l_event_status <> XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED then
3805
3806 -- Delete the event if primary
3807 if p_mrc_sob_type_code <> 'R' then
3808
3809 if (p_log_level_rec.statement_level) then
3810 fa_debug_pkg.add(l_calling_fn,'Deleting unprocessed Reval event: '
3811 , p_event_id,p_log_level_rec => p_log_level_rec);
3812 end if;
3813
3814 if not fa_xla_events_pvt.delete_transaction_event
3815 (p_ledger_id => p_asset_hdr_rec.set_of_books_id,
3816 p_transaction_header_id => p_thid,
3817 p_book_type_code => p_asset_hdr_rec.book_type_code,
3818 p_calling_fn => l_calling_fn
3819 ,p_log_level_rec => p_log_level_rec) then
3820 if (p_log_level_rec.statement_level) then
3821 fa_debug_pkg.add(l_calling_fn,'Failed ','delete_transaction_event',p_log_level_rec => p_log_level_rec);
3822 end if;
3823 raise reval_err;
3824 end if;
3825
3826 if (p_log_level_rec.statement_level) then
3827 fa_debug_pkg.add(l_calling_fn,'Deleting accounting entries of reval thid: '
3828 , p_thid,p_log_level_rec => p_log_level_rec);
3829 end if;
3830
3831 delete from fa_books
3832 where transaction_header_id_out is null
3833 and transaction_header_id_in = p_thid
3834 and book_type_code = p_asset_hdr_rec.book_type_code
3835 and asset_id = p_asset_hdr_rec.asset_id ;
3836
3837 delete from fa_adjustments
3838 where transaction_header_id = p_thid
3839 and asset_id = p_asset_hdr_rec.asset_id
3840 and book_type_code = p_asset_hdr_rec.book_type_code
3841 and period_counter_created = l_period_rec.period_counter;
3842
3843 -- Delete fa_mass_revaluations / fa_mass_revaluation_rules also ?
3844 -- Or update the status to DELETED / ROLLBACKED
3845 -- Can't do as the batch may contain other assets also
3846
3847 /*update fa_mass_Revaluations
3848 set status = 'ROLLBACKED'
3849 where */
3850
3851 update fa_books
3852 set date_ineffective = null
3853 , transaction_header_id_out = null
3854 where asset_id = p_asset_hdr_rec.asset_id
3855 and book_type_code = p_asset_hdr_rec.book_type_code
3856 and transaction_header_id_out = p_thid;
3857
3858 delete from fa_transaction_headers
3859 where transaction_header_id = p_thid;
3860
3861 else
3862
3863 -- Transaction / event is already deleted in the primary loop
3864 -- Need to handle only fa_mc_bk / adj
3865
3866 if (p_log_level_rec.statement_level) then
3867 fa_debug_pkg.add(l_calling_fn,'ALC Deleting accounting entries of reval thid: '
3868 , p_thid,p_log_level_rec => p_log_level_rec);
3869 end if;
3870
3871 delete from fa_mc_books
3872 where transaction_header_id_out is null
3873 and transaction_header_id_in = p_thid
3874 and book_type_code = p_asset_hdr_rec.book_type_code
3875 and asset_id = p_asset_hdr_rec.asset_id
3876 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3877
3878 delete from fa_mc_adjustments
3879 where transaction_header_id = p_thid
3880 and asset_id = p_asset_hdr_rec.asset_id
3881 and book_type_code = p_asset_hdr_rec.book_type_code
3882 and period_counter_created = l_period_rec.period_counter
3883 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3884
3885 update fa_mc_books
3886 set date_ineffective = null
3887 , transaction_header_id_out = null
3888 where asset_id = p_asset_hdr_rec.asset_id
3889 and book_type_code = p_asset_hdr_rec.book_type_code
3890 and transaction_header_id_out = p_thid
3891 and set_of_books_id = p_asset_hdr_rec.set_of_books_id;
3892
3893 end if;
3894
3895 elsif (l_event_status = XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED) then
3896
3897 -- create rollback event and transaction
3898 if p_mrc_sob_type_code <> 'R' then
3899
3900 SELECT fa_transaction_headers_s.nextval
3901 INTO l_trans_rec.transaction_header_id
3902 FROM DUAL;
3903
3904 --
3905 -- Populating for calling FA_XLA_EVENTS_PVT.create_transaction_event
3906 --
3907 l_trans_rec.transaction_subtype := 'STANDARD';
3908 l_trans_rec.transaction_type_code := 'REVALUATION';
3909 l_trans_rec.transaction_key := 'RV';
3910 l_trans_rec.transaction_date_entered := greatest(l_period_rec.calendar_period_open_date,
3911 least(sysdate,l_period_rec.calendar_period_close_date));
3912 --l_trans_rec.amortization_start_date := l_trans_rec.transaction_date_entered;
3913 l_trans_rec.calling_interface := 'FAXRRB';
3914 l_trans_rec.who_info.last_update_date := sysdate;
3915 l_trans_rec.who_info.last_updated_by := fnd_global.user_id;
3916 l_trans_rec.who_info.created_by := fnd_global.user_id;
3917 l_trans_rec.who_info.creation_date := sysdate;
3918
3919 if not FA_UTIL_PVT.get_asset_type_rec
3920 (p_asset_hdr_rec => p_asset_hdr_rec,
3921 px_asset_type_rec => l_asset_type_rec,
3922 p_date_effective => null, p_log_level_rec => p_log_level_rec) then
3923 raise reval_err;
3924 end if;
3925
3926 if (p_log_level_rec.statement_level) then
3927 fa_debug_pkg.add(l_calling_fn,'Creating rollback reval transaction event'
3928 , p_thid,p_log_level_rec => p_log_level_rec);
3929 end if;
3930
3931 if not FA_XLA_EVENTS_PVT.create_transaction_event(
3932 p_asset_hdr_rec => p_asset_hdr_rec,
3933 p_asset_type_rec => l_asset_type_rec,
3934 px_trans_rec => l_trans_rec,
3935 p_event_status => NULL,
3936 p_calling_fn => l_calling_fn
3937 ,p_log_level_rec => p_log_level_rec) then
3938 if (p_log_level_rec.statement_level) then
3939 fa_debug_pkg.add(l_calling_fn, 'ERROR', 'Calling create_transaction_event'
3940 ,p_log_level_rec => p_log_level_rec);
3941 end if;
3942 raise reval_err;
3943 end if;
3944
3945 /*=================================================================
3946 Secondary Changes Start
3947 If primary and secondary sob_id is different then we need to
3948 create/update/delete event for secondary ledger*/
3949
3950 l_secondary_sob_id := FA_XLA_EVENTS_PVT.get_secondary_sob_id(p_asset_hdr_rec.book_type_code);
3951 if (l_secondary_sob_id is not null) then
3952 l_secondary_asset_hdr_rec := p_asset_hdr_rec;
3953 l_secondary_trans_rec := l_trans_rec;
3954
3955 l_secondary_asset_hdr_rec.set_of_books_id := l_secondary_sob_id;
3956
3957 if not fa_xla_events_pvt.create_transaction_event
3958 (p_asset_hdr_rec => l_secondary_asset_hdr_rec,
3959 p_asset_type_rec => l_asset_type_rec,
3960 px_trans_rec => l_secondary_trans_rec,
3961 p_event_status => NULL,
3962 p_calling_fn => l_calling_fn,
3963 p_log_level_rec => p_log_level_rec) then
3964 raise reval_err;
3965 end if;
3966 end if;
3967 /*Secondary Changes End
3968 ==================================================================*/
3969
3970
3971 if (p_log_level_rec.statement_level) then
3972 fa_debug_pkg.add(l_calling_fn,'Inserting new thid: '
3973 , l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
3974 end if;
3975
3976 INSERT INTO FA_TRANSACTION_HEADERS(
3977 TRANSACTION_HEADER_ID
3978 , BOOK_TYPE_CODE
3979 , ASSET_ID
3980 , TRANSACTION_TYPE_CODE
3981 , TRANSACTION_DATE_ENTERED
3982 , DATE_EFFECTIVE
3983 , LAST_UPDATE_DATE
3984 , LAST_UPDATED_BY
3985 , TRANSACTION_NAME
3986 , INVOICE_TRANSACTION_ID
3987 , SOURCE_TRANSACTION_HEADER_ID
3988 , MASS_REFERENCE_ID
3989 , LAST_UPDATE_LOGIN
3990 , TRANSACTION_SUBTYPE
3991 , ATTRIBUTE1
3992 , ATTRIBUTE2
3993 , ATTRIBUTE3
3994 , ATTRIBUTE4
3995 , ATTRIBUTE5
3996 , ATTRIBUTE6
3997 , ATTRIBUTE7
3998 , ATTRIBUTE8
3999 , ATTRIBUTE9
4000 , ATTRIBUTE10
4001 , ATTRIBUTE11
4002 , ATTRIBUTE12
4003 , ATTRIBUTE13
4004 , ATTRIBUTE14
4005 , ATTRIBUTE15
4006 , ATTRIBUTE_CATEGORY_CODE
4007 , TRANSACTION_KEY
4008 , AMORTIZATION_START_DATE
4009 , CALLING_INTERFACE
4010 , MASS_TRANSACTION_ID
4011 , MEMBER_TRANSACTION_HEADER_ID
4012 , TRX_REFERENCE_ID
4013 , EVENT_ID
4014 ) select
4015 l_trans_rec.transaction_header_id --TRANSACTION_HEADER_ID
4016 , BOOK_TYPE_CODE
4017 , ASSET_ID
4018 , TRANSACTION_TYPE_CODE
4019 , l_trans_rec.transaction_date_entered
4020 , l_trans_rec.who_info.last_update_date -- DATE_EFFECTIVE
4021 , l_trans_rec.who_info.last_update_date -- LAST_UPDATE_DATE
4022 , l_trans_rec.who_info.last_updated_by
4023 , TRANSACTION_NAME
4024 , INVOICE_TRANSACTION_ID
4025 , SOURCE_TRANSACTION_HEADER_ID
4026 , MASS_REFERENCE_ID
4027 , LAST_UPDATE_LOGIN
4028 , TRANSACTION_SUBTYPE
4029 , ATTRIBUTE1
4030 , ATTRIBUTE2
4031 , ATTRIBUTE3
4032 , ATTRIBUTE4
4033 , ATTRIBUTE5
4034 , ATTRIBUTE6
4035 , ATTRIBUTE7
4036 , ATTRIBUTE8
4037 , ATTRIBUTE9
4038 , ATTRIBUTE10
4039 , ATTRIBUTE11
4040 , ATTRIBUTE12
4041 , ATTRIBUTE13
4042 , ATTRIBUTE14
4043 , ATTRIBUTE15
4044 , ATTRIBUTE_CATEGORY_CODE
4045 , l_trans_rec.TRANSACTION_KEY
4046 , AMORTIZATION_START_DATE
4047 , l_trans_rec.calling_interface -- CALLING_INTERFACE
4048 , MASS_TRANSACTION_ID
4049 , MEMBER_TRANSACTION_HEADER_ID
4050 , TRX_REFERENCE_ID
4051 , l_trans_rec.event_id -- EVENT_ID
4052 from fa_transaction_headers
4053 where asset_id = p_asset_hdr_rec.asset_id
4054 and book_type_code = p_asset_hdr_rec.book_type_code
4055 and transaction_header_id = p_thid
4056 ;
4057
4058 INSERT INTO FA_ADJUSTMENTS(
4059 TRANSACTION_HEADER_ID
4060 , SOURCE_TYPE_CODE
4061 , ADJUSTMENT_TYPE
4062 , DEBIT_CREDIT_FLAG
4063 , CODE_COMBINATION_ID
4064 , BOOK_TYPE_CODE
4065 , ASSET_ID
4066 , ADJUSTMENT_AMOUNT
4067 , DISTRIBUTION_ID
4068 , LAST_UPDATE_DATE
4069 , LAST_UPDATED_BY
4070 , LAST_UPDATE_LOGIN
4071 , ANNUALIZED_ADJUSTMENT
4072 , PERIOD_COUNTER_ADJUSTED
4073 , PERIOD_COUNTER_CREATED
4074 , ASSET_INVOICE_ID
4075 , GLOBAL_ATTRIBUTE1
4076 , GLOBAL_ATTRIBUTE2
4077 , GLOBAL_ATTRIBUTE3
4078 , GLOBAL_ATTRIBUTE4
4079 , GLOBAL_ATTRIBUTE5
4080 , GLOBAL_ATTRIBUTE6
4081 , GLOBAL_ATTRIBUTE7
4082 , GLOBAL_ATTRIBUTE8
4083 , GLOBAL_ATTRIBUTE9
4084 , GLOBAL_ATTRIBUTE10
4085 , GLOBAL_ATTRIBUTE11
4086 , GLOBAL_ATTRIBUTE12
4087 , GLOBAL_ATTRIBUTE13
4088 , GLOBAL_ATTRIBUTE14
4089 , GLOBAL_ATTRIBUTE15
4090 , GLOBAL_ATTRIBUTE16
4091 , GLOBAL_ATTRIBUTE17
4092 , GLOBAL_ATTRIBUTE18
4093 , GLOBAL_ATTRIBUTE19
4094 , GLOBAL_ATTRIBUTE20
4095 , GLOBAL_ATTRIBUTE_CATEGORY
4096 , DEPRN_OVERRIDE_FLAG
4097 , TRACK_MEMBER_FLAG
4098 , ADJUSTMENT_LINE_ID
4099 , SOURCE_LINE_ID
4100 , SOURCE_DEST_CODE
4101 ) select
4102 l_trans_rec.transaction_header_id -- TRANSACTION_HEADER_ID
4103 , SOURCE_TYPE_CODE
4104 , ADJUSTMENT_TYPE
4105 , decode(debit_credit_flag, 'DR', 'CR', 'DR') --DEBIT_CREDIT_FLAG
4106 , CODE_COMBINATION_ID
4107 , BOOK_TYPE_CODE
4108 , ASSET_ID
4109 , ADJUSTMENT_AMOUNT
4110 , DISTRIBUTION_ID
4111 , l_trans_rec.who_info.last_update_date --LAST_UPDATE_DATE
4112 , l_trans_rec.who_info.last_updated_by --LAST_UPDATED_BY
4113 , l_trans_rec.who_info.last_updated_by --LAST_UPDATE_LOGIN
4114 , ANNUALIZED_ADJUSTMENT
4115 , PERIOD_COUNTER_ADJUSTED
4116 , PERIOD_COUNTER_CREATED
4117 , ASSET_INVOICE_ID
4118 , GLOBAL_ATTRIBUTE1
4119 , GLOBAL_ATTRIBUTE2
4120 , GLOBAL_ATTRIBUTE3
4121 , GLOBAL_ATTRIBUTE4
4122 , GLOBAL_ATTRIBUTE5
4123 , GLOBAL_ATTRIBUTE6
4124 , GLOBAL_ATTRIBUTE7
4125 , GLOBAL_ATTRIBUTE8
4126 , GLOBAL_ATTRIBUTE9
4127 , GLOBAL_ATTRIBUTE10
4128 , GLOBAL_ATTRIBUTE11
4129 , GLOBAL_ATTRIBUTE12
4130 , GLOBAL_ATTRIBUTE13
4131 , GLOBAL_ATTRIBUTE14
4132 , GLOBAL_ATTRIBUTE15
4133 , GLOBAL_ATTRIBUTE16
4134 , GLOBAL_ATTRIBUTE17
4135 , GLOBAL_ATTRIBUTE18
4136 , GLOBAL_ATTRIBUTE19
4137 , GLOBAL_ATTRIBUTE20
4138 , GLOBAL_ATTRIBUTE_CATEGORY
4139 , DEPRN_OVERRIDE_FLAG
4140 , TRACK_MEMBER_FLAG
4141 , fa_adjustments_s.nextval -- ADJUSTMENT_LINE_ID
4142 , SOURCE_LINE_ID
4143 , SOURCE_DEST_CODE
4144 from fa_adjustments
4145 where asset_id = p_asset_hdr_rec.asset_id
4146 and book_type_code = p_asset_hdr_rec.book_type_code
4147 and transaction_header_id = p_thid
4148 ;
4149
4150 UPDATE FA_BOOKS
4151 SET DATE_INEFFECTIVE = l_trans_rec.who_info.last_update_date
4152 , last_update_date = l_trans_rec.who_info.last_update_date
4153 , TRANSACTION_HEADER_ID_OUT = l_trans_rec.transaction_header_id
4154 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
4155 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
4156 AND TRANSACTION_HEADER_ID_in = p_thid
4157 AND TRANSACTION_HEADER_ID_OUT is null;
4158
4159 INSERT INTO FA_BOOKS( BOOK_TYPE_CODE
4160 , ASSET_ID
4161 , DATE_PLACED_IN_SERVICE
4162 , DATE_EFFECTIVE
4163 , DEPRN_START_DATE
4164 , DEPRN_METHOD_CODE
4165 , LIFE_IN_MONTHS
4166 , RATE_ADJUSTMENT_FACTOR
4167 , ADJUSTED_COST
4168 , COST
4169 , ORIGINAL_COST
4170 , SALVAGE_VALUE
4171 , PRORATE_CONVENTION_CODE
4172 , PRORATE_DATE
4173 , COST_CHANGE_FLAG
4174 , ADJUSTMENT_REQUIRED_STATUS
4175 , CAPITALIZE_FLAG
4176 , RETIREMENT_PENDING_FLAG
4177 , DEPRECIATE_FLAG
4178 , LAST_UPDATE_DATE
4179 , LAST_UPDATED_BY
4180 , TRANSACTION_HEADER_ID_IN
4181 , ITC_AMOUNT_ID
4182 , ITC_AMOUNT
4183 , RETIREMENT_ID
4184 , TAX_REQUEST_ID
4185 , ITC_BASIS
4186 , BASIC_RATE
4187 , ADJUSTED_RATE
4188 , BONUS_RULE
4189 , CEILING_NAME
4190 , RECOVERABLE_COST
4191 , ADJUSTED_CAPACITY
4192 , FULLY_RSVD_REVALS_COUNTER
4193 , IDLED_FLAG
4194 , PERIOD_COUNTER_CAPITALIZED
4195 , PERIOD_COUNTER_FULLY_RESERVED
4196 , PERIOD_COUNTER_FULLY_RETIRED
4197 , PRODUCTION_CAPACITY
4198 , REVAL_AMORTIZATION_BASIS
4199 , REVAL_CEILING
4200 , UNIT_OF_MEASURE
4201 , UNREVALUED_COST
4202 , ANNUAL_DEPRN_ROUNDING_FLAG
4203 , PERCENT_SALVAGE_VALUE
4204 , ALLOWED_DEPRN_LIMIT
4205 , ALLOWED_DEPRN_LIMIT_AMOUNT
4206 , PERIOD_COUNTER_LIFE_COMPLETE
4207 , ADJUSTED_RECOVERABLE_COST
4208 , ANNUAL_ROUNDING_FLAG
4209 , GLOBAL_ATTRIBUTE1
4210 , GLOBAL_ATTRIBUTE2
4211 , GLOBAL_ATTRIBUTE3
4212 , GLOBAL_ATTRIBUTE4
4213 , GLOBAL_ATTRIBUTE5
4214 , GLOBAL_ATTRIBUTE6
4215 , GLOBAL_ATTRIBUTE7
4216 , GLOBAL_ATTRIBUTE8
4217 , GLOBAL_ATTRIBUTE9
4218 , GLOBAL_ATTRIBUTE10
4219 , GLOBAL_ATTRIBUTE11
4220 , GLOBAL_ATTRIBUTE12
4221 , GLOBAL_ATTRIBUTE13
4222 , GLOBAL_ATTRIBUTE14
4223 , GLOBAL_ATTRIBUTE15
4224 , GLOBAL_ATTRIBUTE16
4225 , GLOBAL_ATTRIBUTE17
4226 , GLOBAL_ATTRIBUTE18
4227 , GLOBAL_ATTRIBUTE19
4228 , GLOBAL_ATTRIBUTE20
4229 , GLOBAL_ATTRIBUTE_CATEGORY
4230 , EOFY_ADJ_COST
4231 , EOFY_FORMULA_FACTOR
4232 , SHORT_FISCAL_YEAR_FLAG
4233 , CONVERSION_DATE
4234 , ORIGINAL_DEPRN_START_DATE
4235 , REMAINING_LIFE1
4236 , REMAINING_LIFE2
4237 , OLD_ADJUSTED_COST
4238 , FORMULA_FACTOR
4239 , GROUP_ASSET_ID
4240 , SALVAGE_TYPE
4241 , DEPRN_LIMIT_TYPE
4242 , REDUCTION_RATE
4243 , REDUCE_ADDITION_FLAG
4244 , REDUCE_ADJUSTMENT_FLAG
4245 , REDUCE_RETIREMENT_FLAG
4246 , RECOGNIZE_GAIN_LOSS
4247 , RECAPTURE_RESERVE_FLAG
4248 , LIMIT_PROCEEDS_FLAG
4249 , TERMINAL_GAIN_LOSS
4250 , TRACKING_METHOD
4251 , EXCLUDE_FULLY_RSV_FLAG
4252 , EXCESS_ALLOCATION_OPTION
4253 , DEPRECIATION_OPTION
4254 , MEMBER_ROLLUP_FLAG
4255 , ALLOCATE_TO_FULLY_RSV_FLAG
4256 , ALLOCATE_TO_FULLY_RET_FLAG
4257 , TERMINAL_GAIN_LOSS_AMOUNT
4258 , CIP_COST
4259 , YTD_PROCEEDS
4260 , LTD_PROCEEDS
4261 , LTD_COST_OF_REMOVAL
4262 , EOFY_RESERVE
4263 , PRIOR_EOFY_RESERVE
4264 , EOP_ADJ_COST
4265 , EOP_FORMULA_FACTOR
4266 , EXCLUDE_PROCEEDS_FROM_BASIS
4267 , RETIREMENT_DEPRN_OPTION
4268 , TERMINAL_GAIN_LOSS_FLAG
4269 , SUPER_GROUP_ID
4270 , OVER_DEPRECIATE_OPTION
4271 , DISABLED_FLAG
4272 , CASH_GENERATING_UNIT_ID
4273 , RATE_IN_USE
4274 ) SELECT BOOK_TYPE_CODE
4275 , ASSET_ID
4276 , DATE_PLACED_IN_SERVICE
4277 , l_trans_rec.who_info.last_update_date -- DATE_EFFECTIVE
4278 , DEPRN_START_DATE
4279 , DEPRN_METHOD_CODE
4280 , LIFE_IN_MONTHS
4281 , RATE_ADJUSTMENT_FACTOR --RATE_ADJUSTMENT_FACTOR
4282 , ADJUSTED_COST -- ADJUSTED_COST
4283 , COST
4284 , ORIGINAL_COST
4285 , SALVAGE_VALUE
4286 , PRORATE_CONVENTION_CODE
4287 , PRORATE_DATE
4288 , COST_CHANGE_FLAG
4289 , ADJUSTMENT_REQUIRED_STATUS
4290 , CAPITALIZE_FLAG
4291 , RETIREMENT_PENDING_FLAG
4292 , DEPRECIATE_FLAG
4293 , l_trans_rec.who_info.last_update_date -- LAST_UPDATE_DATE
4294 , l_trans_rec.who_info.last_updated_by -- LAST_UPDATED_BY
4295 , l_trans_rec.transaction_header_id -- TRANSACTION_HEADER_ID_IN
4296 , ITC_AMOUNT_ID
4297 , ITC_AMOUNT
4298 , RETIREMENT_ID
4299 , TAX_REQUEST_ID
4300 , ITC_BASIS
4301 , BASIC_RATE
4302 , ADJUSTED_RATE
4303 , BONUS_RULE
4304 , CEILING_NAME
4305 , RECOVERABLE_COST
4306 , ADJUSTED_CAPACITY
4307 , FULLY_RSVD_REVALS_COUNTER
4308 , IDLED_FLAG
4309 , PERIOD_COUNTER_CAPITALIZED
4310 , PERIOD_COUNTER_FULLY_RESERVED
4311 , PERIOD_COUNTER_FULLY_RETIRED
4312 , PRODUCTION_CAPACITY
4313 , REVAL_AMORTIZATION_BASIS
4314 , REVAL_CEILING
4315 , UNIT_OF_MEASURE
4316 , UNREVALUED_COST
4317 , ANNUAL_DEPRN_ROUNDING_FLAG
4318 , PERCENT_SALVAGE_VALUE
4319 , ALLOWED_DEPRN_LIMIT
4320 , ALLOWED_DEPRN_LIMIT_AMOUNT
4321 , PERIOD_COUNTER_LIFE_COMPLETE
4322 , ADJUSTED_RECOVERABLE_COST
4323 , ANNUAL_ROUNDING_FLAG
4324 , GLOBAL_ATTRIBUTE1
4325 , GLOBAL_ATTRIBUTE2
4326 , GLOBAL_ATTRIBUTE3
4327 , GLOBAL_ATTRIBUTE4
4328 , GLOBAL_ATTRIBUTE5
4329 , GLOBAL_ATTRIBUTE6
4330 , GLOBAL_ATTRIBUTE7
4331 , GLOBAL_ATTRIBUTE8
4332 , GLOBAL_ATTRIBUTE9
4333 , GLOBAL_ATTRIBUTE10
4334 , GLOBAL_ATTRIBUTE11
4335 , GLOBAL_ATTRIBUTE12
4336 , GLOBAL_ATTRIBUTE13
4337 , GLOBAL_ATTRIBUTE14
4338 , GLOBAL_ATTRIBUTE15
4339 , GLOBAL_ATTRIBUTE16
4340 , GLOBAL_ATTRIBUTE17
4341 , GLOBAL_ATTRIBUTE18
4342 , GLOBAL_ATTRIBUTE19
4343 , GLOBAL_ATTRIBUTE20
4344 , GLOBAL_ATTRIBUTE_CATEGORY
4345 , EOFY_ADJ_COST
4346 , EOFY_FORMULA_FACTOR
4347 , SHORT_FISCAL_YEAR_FLAG
4348 , CONVERSION_DATE
4349 , ORIGINAL_DEPRN_START_DATE
4350 , REMAINING_LIFE1
4351 , REMAINING_LIFE2
4352 , OLD_ADJUSTED_COST
4353 , formula_factor --FORMULA_FACTOR
4354 , GROUP_ASSET_ID
4355 , SALVAGE_TYPE
4356 , DEPRN_LIMIT_TYPE
4357 , REDUCTION_RATE
4358 , REDUCE_ADDITION_FLAG
4359 , REDUCE_ADJUSTMENT_FLAG
4360 , REDUCE_RETIREMENT_FLAG
4361 , RECOGNIZE_GAIN_LOSS
4362 , RECAPTURE_RESERVE_FLAG
4363 , LIMIT_PROCEEDS_FLAG
4364 , TERMINAL_GAIN_LOSS
4365 , TRACKING_METHOD
4366 , EXCLUDE_FULLY_RSV_FLAG
4367 , EXCESS_ALLOCATION_OPTION
4368 , DEPRECIATION_OPTION
4369 , MEMBER_ROLLUP_FLAG
4370 , ALLOCATE_TO_FULLY_RSV_FLAG
4371 , ALLOCATE_TO_FULLY_RET_FLAG
4372 , TERMINAL_GAIN_LOSS_AMOUNT
4373 , CIP_COST
4374 , YTD_PROCEEDS
4375 , LTD_PROCEEDS
4376 , LTD_COST_OF_REMOVAL
4377 , eofy_reserve --EOFY_RESERVE
4378 , PRIOR_EOFY_RESERVE
4379 , EOP_ADJ_COST
4380 , EOP_FORMULA_FACTOR
4381 , EXCLUDE_PROCEEDS_FROM_BASIS
4382 , RETIREMENT_DEPRN_OPTION
4383 , TERMINAL_GAIN_LOSS_FLAG
4384 , SUPER_GROUP_ID
4385 , OVER_DEPRECIATE_OPTION
4386 , DISABLED_FLAG
4387 , CASH_GENERATING_UNIT_ID
4388 , RATE_IN_USE
4389 FROM FA_BOOKS
4390 WHERE TRANSACTION_HEADER_ID_out = p_thid
4391 AND ASSET_ID = p_asset_hdr_rec.asset_id
4392 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code;
4393
4394 if (p_log_level_rec.statement_level) then
4395 fa_debug_pkg.add(l_calling_fn,'Finished with new thid: '
4396 , l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
4397 end if;
4398
4399 else -- reporting loop
4400
4401 if (p_log_level_rec.statement_level) then
4402 fa_debug_pkg.add(l_calling_fn,'ALC loop: '
4403 , p_asset_hdr_rec.set_of_books_id, p_log_level_rec => p_log_level_rec);
4404 end if;
4405
4406 -- Get the rollback reval trx_hdr_id
4407 open c_get_new_thid;
4408 fetch c_get_new_thid into l_trans_rec.transaction_header_id
4409 , l_trans_rec.who_info.last_update_date
4410 , l_trans_rec.who_info.last_updated_by;
4411 close c_get_new_thid;
4412
4413 if (p_log_level_rec.statement_level) then
4414 fa_debug_pkg.add(l_calling_fn,'ALC: Creating accounting for new thid: '
4415 , l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
4416 end if;
4417
4418 INSERT INTO FA_MC_ADJUSTMENTS(
4419 SET_OF_BOOKS_ID
4420 , TRANSACTION_HEADER_ID
4421 , SOURCE_TYPE_CODE
4422 , ADJUSTMENT_TYPE
4423 , DEBIT_CREDIT_FLAG
4424 , CODE_COMBINATION_ID
4425 , BOOK_TYPE_CODE
4426 , ASSET_ID
4427 , ADJUSTMENT_AMOUNT
4428 , DISTRIBUTION_ID
4429 , LAST_UPDATE_DATE
4430 , LAST_UPDATED_BY
4431 , LAST_UPDATE_LOGIN
4432 , ANNUALIZED_ADJUSTMENT
4433 , PERIOD_COUNTER_ADJUSTED
4434 , PERIOD_COUNTER_CREATED
4435 , ASSET_INVOICE_ID
4436 , GLOBAL_ATTRIBUTE1
4437 , GLOBAL_ATTRIBUTE2
4438 , GLOBAL_ATTRIBUTE3
4439 , GLOBAL_ATTRIBUTE4
4440 , GLOBAL_ATTRIBUTE5
4441 , GLOBAL_ATTRIBUTE6
4442 , GLOBAL_ATTRIBUTE7
4443 , GLOBAL_ATTRIBUTE8
4444 , GLOBAL_ATTRIBUTE9
4445 , GLOBAL_ATTRIBUTE10
4446 , GLOBAL_ATTRIBUTE11
4447 , GLOBAL_ATTRIBUTE12
4448 , GLOBAL_ATTRIBUTE13
4449 , GLOBAL_ATTRIBUTE14
4450 , GLOBAL_ATTRIBUTE15
4451 , GLOBAL_ATTRIBUTE16
4452 , GLOBAL_ATTRIBUTE17
4453 , GLOBAL_ATTRIBUTE18
4454 , GLOBAL_ATTRIBUTE19
4455 , GLOBAL_ATTRIBUTE20
4456 , GLOBAL_ATTRIBUTE_CATEGORY
4457 , DEPRN_OVERRIDE_FLAG
4458 , TRACK_MEMBER_FLAG
4459 , ADJUSTMENT_LINE_ID
4460 , SOURCE_LINE_ID
4461 , SOURCE_DEST_CODE
4462 ) select
4463 SET_OF_BOOKS_ID
4464 , l_trans_rec.transaction_header_id -- TRANSACTION_HEADER_ID
4465 , SOURCE_TYPE_CODE
4466 , ADJUSTMENT_TYPE
4467 , decode(debit_credit_flag, 'DR', 'CR', 'DR') --DEBIT_CREDIT_FLAG
4468 , CODE_COMBINATION_ID
4469 , BOOK_TYPE_CODE
4470 , ASSET_ID
4471 , ADJUSTMENT_AMOUNT
4472 , DISTRIBUTION_ID
4473 , l_trans_rec.who_info.last_update_date --LAST_UPDATE_DATE
4474 , l_trans_rec.who_info.last_updated_by --LAST_UPDATED_BY
4475 , l_trans_rec.who_info.last_updated_by --LAST_UPDATE_LOGIN
4476 , ANNUALIZED_ADJUSTMENT
4477 , PERIOD_COUNTER_ADJUSTED
4478 , PERIOD_COUNTER_CREATED
4479 , ASSET_INVOICE_ID
4480 , GLOBAL_ATTRIBUTE1
4481 , GLOBAL_ATTRIBUTE2
4482 , GLOBAL_ATTRIBUTE3
4483 , GLOBAL_ATTRIBUTE4
4484 , GLOBAL_ATTRIBUTE5
4485 , GLOBAL_ATTRIBUTE6
4486 , GLOBAL_ATTRIBUTE7
4487 , GLOBAL_ATTRIBUTE8
4488 , GLOBAL_ATTRIBUTE9
4489 , GLOBAL_ATTRIBUTE10
4490 , GLOBAL_ATTRIBUTE11
4491 , GLOBAL_ATTRIBUTE12
4492 , GLOBAL_ATTRIBUTE13
4493 , GLOBAL_ATTRIBUTE14
4494 , GLOBAL_ATTRIBUTE15
4495 , GLOBAL_ATTRIBUTE16
4496 , GLOBAL_ATTRIBUTE17
4497 , GLOBAL_ATTRIBUTE18
4498 , GLOBAL_ATTRIBUTE19
4499 , GLOBAL_ATTRIBUTE20
4500 , GLOBAL_ATTRIBUTE_CATEGORY
4501 , DEPRN_OVERRIDE_FLAG
4502 , TRACK_MEMBER_FLAG
4503 , fa_adjustments_s.nextval -- ADJUSTMENT_LINE_ID
4504 , SOURCE_LINE_ID
4505 , SOURCE_DEST_CODE
4506 from fa_mc_adjustments
4507 where asset_id = p_asset_hdr_rec.asset_id
4508 and book_type_code = p_asset_hdr_rec.book_type_code
4509 and transaction_header_id = p_thid
4510 and set_of_books_id = p_asset_hdr_rec.set_of_books_id
4511 ;
4512
4513 UPDATE FA_MC_BOOKS
4514 SET DATE_INEFFECTIVE = l_trans_rec.who_info.last_update_date
4515 , last_update_date = l_trans_rec.who_info.last_update_date
4516 , TRANSACTION_HEADER_ID_OUT = l_trans_rec.transaction_header_id
4517 WHERE ASSET_ID = p_asset_hdr_rec.asset_id
4518 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
4519 AND set_of_books_id = p_asset_hdr_rec.set_of_books_id
4520 AND TRANSACTION_HEADER_ID_in = p_thid
4521 AND TRANSACTION_HEADER_ID_OUT is null;
4522
4523 INSERT INTO FA_MC_BOOKS( SET_OF_BOOKS_ID
4524 , BOOK_TYPE_CODE
4525 , ASSET_ID
4526 , DATE_PLACED_IN_SERVICE
4527 , DATE_EFFECTIVE
4528 , DEPRN_START_DATE
4529 , DEPRN_METHOD_CODE
4530 , LIFE_IN_MONTHS
4531 , RATE_ADJUSTMENT_FACTOR
4532 , ADJUSTED_COST
4533 , COST
4534 , ORIGINAL_COST
4535 , SALVAGE_VALUE
4536 , PRORATE_CONVENTION_CODE
4537 , PRORATE_DATE
4538 , COST_CHANGE_FLAG
4539 , ADJUSTMENT_REQUIRED_STATUS
4540 , CAPITALIZE_FLAG
4541 , RETIREMENT_PENDING_FLAG
4542 , DEPRECIATE_FLAG
4543 , LAST_UPDATE_DATE
4544 , LAST_UPDATED_BY
4545 , TRANSACTION_HEADER_ID_IN
4546 , ITC_AMOUNT_ID
4547 , ITC_AMOUNT
4548 , RETIREMENT_ID
4549 , TAX_REQUEST_ID
4550 , ITC_BASIS
4551 , BASIC_RATE
4552 , ADJUSTED_RATE
4553 , BONUS_RULE
4554 , CEILING_NAME
4555 , RECOVERABLE_COST
4556 , ADJUSTED_CAPACITY
4557 , FULLY_RSVD_REVALS_COUNTER
4558 , IDLED_FLAG
4559 , PERIOD_COUNTER_CAPITALIZED
4560 , PERIOD_COUNTER_FULLY_RESERVED
4561 , PERIOD_COUNTER_FULLY_RETIRED
4562 , PRODUCTION_CAPACITY
4563 , REVAL_AMORTIZATION_BASIS
4564 , REVAL_CEILING
4565 , UNIT_OF_MEASURE
4566 , UNREVALUED_COST
4567 , ANNUAL_DEPRN_ROUNDING_FLAG
4568 , PERCENT_SALVAGE_VALUE
4569 , ALLOWED_DEPRN_LIMIT
4570 , ALLOWED_DEPRN_LIMIT_AMOUNT
4571 , PERIOD_COUNTER_LIFE_COMPLETE
4572 , ADJUSTED_RECOVERABLE_COST
4573 , ANNUAL_ROUNDING_FLAG
4574 , GLOBAL_ATTRIBUTE1
4575 , GLOBAL_ATTRIBUTE2
4576 , GLOBAL_ATTRIBUTE3
4577 , GLOBAL_ATTRIBUTE4
4578 , GLOBAL_ATTRIBUTE5
4579 , GLOBAL_ATTRIBUTE6
4580 , GLOBAL_ATTRIBUTE7
4581 , GLOBAL_ATTRIBUTE8
4582 , GLOBAL_ATTRIBUTE9
4583 , GLOBAL_ATTRIBUTE10
4584 , GLOBAL_ATTRIBUTE11
4585 , GLOBAL_ATTRIBUTE12
4586 , GLOBAL_ATTRIBUTE13
4587 , GLOBAL_ATTRIBUTE14
4588 , GLOBAL_ATTRIBUTE15
4589 , GLOBAL_ATTRIBUTE16
4590 , GLOBAL_ATTRIBUTE17
4591 , GLOBAL_ATTRIBUTE18
4592 , GLOBAL_ATTRIBUTE19
4593 , GLOBAL_ATTRIBUTE20
4594 , GLOBAL_ATTRIBUTE_CATEGORY
4595 , EOFY_ADJ_COST
4596 , EOFY_FORMULA_FACTOR
4597 , SHORT_FISCAL_YEAR_FLAG
4598 , CONVERSION_DATE
4599 , ORIGINAL_DEPRN_START_DATE
4600 , REMAINING_LIFE1
4601 , REMAINING_LIFE2
4602 , OLD_ADJUSTED_COST
4603 , FORMULA_FACTOR
4604 , GROUP_ASSET_ID
4605 , SALVAGE_TYPE
4606 , DEPRN_LIMIT_TYPE
4607 , REDUCTION_RATE
4608 , REDUCE_ADDITION_FLAG
4609 , REDUCE_ADJUSTMENT_FLAG
4610 , REDUCE_RETIREMENT_FLAG
4611 , RECOGNIZE_GAIN_LOSS
4612 , RECAPTURE_RESERVE_FLAG
4613 , LIMIT_PROCEEDS_FLAG
4614 , TERMINAL_GAIN_LOSS
4615 , TRACKING_METHOD
4616 , EXCLUDE_FULLY_RSV_FLAG
4617 , EXCESS_ALLOCATION_OPTION
4618 , DEPRECIATION_OPTION
4619 , MEMBER_ROLLUP_FLAG
4620 , ALLOCATE_TO_FULLY_RSV_FLAG
4621 , ALLOCATE_TO_FULLY_RET_FLAG
4622 , TERMINAL_GAIN_LOSS_AMOUNT
4623 , CIP_COST
4624 , YTD_PROCEEDS
4625 , LTD_PROCEEDS
4626 , LTD_COST_OF_REMOVAL
4627 , EOFY_RESERVE
4628 , PRIOR_EOFY_RESERVE
4629 , EOP_ADJ_COST
4630 , EOP_FORMULA_FACTOR
4631 , EXCLUDE_PROCEEDS_FROM_BASIS
4632 , RETIREMENT_DEPRN_OPTION
4633 , TERMINAL_GAIN_LOSS_FLAG
4634 , SUPER_GROUP_ID
4635 , OVER_DEPRECIATE_OPTION
4636 , DISABLED_FLAG
4637 , CASH_GENERATING_UNIT_ID
4638 , RATE_IN_USE
4639 ) SELECT SET_OF_BOOKS_ID
4640 , BOOK_TYPE_CODE
4641 , ASSET_ID
4642 , DATE_PLACED_IN_SERVICE
4643 , l_trans_rec.who_info.last_update_date -- DATE_EFFECTIVE
4644 , DEPRN_START_DATE
4645 , DEPRN_METHOD_CODE
4646 , LIFE_IN_MONTHS
4647 , RATE_ADJUSTMENT_FACTOR --RATE_ADJUSTMENT_FACTOR
4648 , ADJUSTED_COST -- ADJUSTED_COST
4649 , COST
4650 , ORIGINAL_COST
4651 , SALVAGE_VALUE
4652 , PRORATE_CONVENTION_CODE
4653 , PRORATE_DATE
4654 , COST_CHANGE_FLAG
4655 , ADJUSTMENT_REQUIRED_STATUS
4656 , CAPITALIZE_FLAG
4657 , RETIREMENT_PENDING_FLAG
4658 , DEPRECIATE_FLAG
4659 , l_trans_rec.who_info.last_update_date -- LAST_UPDATE_DATE
4660 , l_trans_rec.who_info.last_updated_by -- LAST_UPDATED_BY
4661 , l_trans_rec.transaction_header_id -- TRANSACTION_HEADER_ID_IN
4662 , ITC_AMOUNT_ID
4663 , ITC_AMOUNT
4664 , RETIREMENT_ID
4665 , TAX_REQUEST_ID
4666 , ITC_BASIS
4667 , BASIC_RATE
4668 , ADJUSTED_RATE
4669 , BONUS_RULE
4670 , CEILING_NAME
4671 , RECOVERABLE_COST
4672 , ADJUSTED_CAPACITY
4673 , FULLY_RSVD_REVALS_COUNTER
4674 , IDLED_FLAG
4675 , PERIOD_COUNTER_CAPITALIZED
4676 , PERIOD_COUNTER_FULLY_RESERVED
4677 , PERIOD_COUNTER_FULLY_RETIRED
4678 , PRODUCTION_CAPACITY
4679 , REVAL_AMORTIZATION_BASIS
4680 , REVAL_CEILING
4681 , UNIT_OF_MEASURE
4682 , UNREVALUED_COST
4683 , ANNUAL_DEPRN_ROUNDING_FLAG
4684 , PERCENT_SALVAGE_VALUE
4685 , ALLOWED_DEPRN_LIMIT
4686 , ALLOWED_DEPRN_LIMIT_AMOUNT
4687 , PERIOD_COUNTER_LIFE_COMPLETE
4688 , ADJUSTED_RECOVERABLE_COST
4689 , ANNUAL_ROUNDING_FLAG
4690 , GLOBAL_ATTRIBUTE1
4691 , GLOBAL_ATTRIBUTE2
4692 , GLOBAL_ATTRIBUTE3
4693 , GLOBAL_ATTRIBUTE4
4694 , GLOBAL_ATTRIBUTE5
4695 , GLOBAL_ATTRIBUTE6
4696 , GLOBAL_ATTRIBUTE7
4697 , GLOBAL_ATTRIBUTE8
4698 , GLOBAL_ATTRIBUTE9
4699 , GLOBAL_ATTRIBUTE10
4700 , GLOBAL_ATTRIBUTE11
4701 , GLOBAL_ATTRIBUTE12
4702 , GLOBAL_ATTRIBUTE13
4703 , GLOBAL_ATTRIBUTE14
4704 , GLOBAL_ATTRIBUTE15
4705 , GLOBAL_ATTRIBUTE16
4706 , GLOBAL_ATTRIBUTE17
4707 , GLOBAL_ATTRIBUTE18
4708 , GLOBAL_ATTRIBUTE19
4709 , GLOBAL_ATTRIBUTE20
4710 , GLOBAL_ATTRIBUTE_CATEGORY
4711 , EOFY_ADJ_COST
4712 , EOFY_FORMULA_FACTOR
4713 , SHORT_FISCAL_YEAR_FLAG
4714 , CONVERSION_DATE
4715 , ORIGINAL_DEPRN_START_DATE
4716 , REMAINING_LIFE1
4717 , REMAINING_LIFE2
4718 , OLD_ADJUSTED_COST
4719 , formula_factor --FORMULA_FACTOR
4720 , GROUP_ASSET_ID
4721 , SALVAGE_TYPE
4722 , DEPRN_LIMIT_TYPE
4723 , REDUCTION_RATE
4724 , REDUCE_ADDITION_FLAG
4725 , REDUCE_ADJUSTMENT_FLAG
4726 , REDUCE_RETIREMENT_FLAG
4727 , RECOGNIZE_GAIN_LOSS
4728 , RECAPTURE_RESERVE_FLAG
4729 , LIMIT_PROCEEDS_FLAG
4730 , TERMINAL_GAIN_LOSS
4731 , TRACKING_METHOD
4732 , EXCLUDE_FULLY_RSV_FLAG
4733 , EXCESS_ALLOCATION_OPTION
4734 , DEPRECIATION_OPTION
4735 , MEMBER_ROLLUP_FLAG
4736 , ALLOCATE_TO_FULLY_RSV_FLAG
4737 , ALLOCATE_TO_FULLY_RET_FLAG
4738 , TERMINAL_GAIN_LOSS_AMOUNT
4739 , CIP_COST
4740 , YTD_PROCEEDS
4741 , LTD_PROCEEDS
4742 , LTD_COST_OF_REMOVAL
4743 , eofy_reserve --EOFY_RESERVE
4744 , PRIOR_EOFY_RESERVE
4745 , EOP_ADJ_COST
4746 , EOP_FORMULA_FACTOR
4747 , EXCLUDE_PROCEEDS_FROM_BASIS
4748 , RETIREMENT_DEPRN_OPTION
4749 , TERMINAL_GAIN_LOSS_FLAG
4750 , SUPER_GROUP_ID
4751 , OVER_DEPRECIATE_OPTION
4752 , DISABLED_FLAG
4753 , CASH_GENERATING_UNIT_ID
4754 , RATE_IN_USE
4755 FROM FA_MC_BOOKS
4756 WHERE TRANSACTION_HEADER_ID_out = p_thid
4757 AND ASSET_ID = p_asset_hdr_rec.asset_id
4758 AND BOOK_TYPE_CODE = p_asset_hdr_rec.book_type_code
4759 AND SET_OF_BOOKS_ID = p_asset_hdr_rec.set_of_books_id ;
4760
4761 if (p_log_level_rec.statement_level) then
4762 fa_debug_pkg.add(l_calling_fn,'ALC: Finished with new thid: '
4763 , l_trans_rec.transaction_header_id, p_log_level_rec => p_log_level_rec);
4764 end if;
4765 end if;
4766 end if;
4767
4768 if (p_log_level_rec.statement_level) then
4769 fa_debug_pkg.add(l_calling_fn, 'Rollback PDR', '$$$END$$$',p_log_level_rec => p_log_level_rec);
4770 end if;
4771
4772 return true;
4773
4774 EXCEPTION
4775
4776 when reval_err then
4777 fa_srvr_msg.add_message(calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
4778 return false;
4779
4780 when others then
4781 fa_srvr_msg.add_sql_error
4782 (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
4783 return false;
4784
4785 END rollback_reval;
4786
4787 END fa_revaluation_pvt;