[Home] [Help]
PACKAGE BODY: APPS.FA_IMPAIRMENT_DELETE_PVT
Source
1 PACKAGE BODY FA_IMPAIRMENT_DELETE_PVT AS
2 /* $Header: FAVIMPDB.pls 120.11 2011/06/29 12:12:52 gigupta noship $ */
3
4 g_print_debug boolean := fa_cache_pkg.fa_print_debug;
5 g_release number := fa_cache_pkg.fazarel_release;
6
7 --
8 -- Datatypes for pl/sql tables below
9 --
10 TYPE tab_rowid_type IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
11 -- TYPE tab_num15_type IS TABLE OF NUMBER(15) INDEX BY BINARY_INTEGER;
12 TYPE tab_num_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
13 TYPE tab_date_type IS TABLE OF DATE INDEX BY BINARY_INTEGER;
14 TYPE tab_char1_type IS TABLE OF VARCHAR2(15) INDEX BY BINARY_INTEGER;
15 TYPE tab_char3_type IS TABLE OF VARCHAR2(3) INDEX BY BINARY_INTEGER;
16 TYPE tab_char15_type IS TABLE OF VARCHAR2(15) INDEX BY BINARY_INTEGER;
17 TYPE tab_char30_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
18
19 g_temp_number number;
20 g_temp_integer binary_integer;
21 g_temp_boolean boolean;
22 g_temp_varchar2 varchar2(100);
23
24
25 --*********************** Public functions ******************************--
26 FUNCTION delete_post(
27 p_request_id IN NUMBER,
28 p_book_type_code IN VARCHAR2,
29 p_period_rec IN FA_API_TYPES.period_rec_type,
30 p_worker_id IN NUMBER,
31 p_mrc_sob_type_code IN VARCHAR2,
32 p_set_of_books_id IN NUMBER,
33 p_calling_fn IN VARCHAR2
34 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
35
36 l_calling_fn varchar2(60) := 'fa_process_impairment_pvt.process_depreciation';
37
38 t_thid tab_num15_type;
39 t_asset_id tab_num15_type;
40
41
42 l_limit binary_integer := 200; -- limit constant for C1 cursor
43 del_err exception;
44
45 Cursor c_mc_get_recs is
46 select transaction_header_id_in,asset_id from
47 fa_mc_books
48 where transaction_header_id_out is null
49 and book_type_code = p_book_type_code
50 and set_of_books_id = p_set_of_books_id
51 and asset_id in (select itf.asset_id
52 from fa_mc_impairments imp
53 , fa_mc_itf_impairments itf
54 where itf.impairment_id = imp.impairment_id
55 and itf.book_type_code = p_book_type_code
56 and itf.worker_id = p_worker_id
57 and imp.request_id = p_request_id
58 and imp.set_of_books_id = p_set_of_books_id
59 and itf.set_of_books_id = p_set_of_books_id
60 and imp.status = 'DELETING POST');
61
62 Cursor c_get_recs is
63 select transaction_header_id_in,asset_id from
64 fa_books
65 where transaction_header_id_out is null
66 and book_type_code = p_book_type_code
67 and asset_id in (select itf.asset_id
68 from fa_impairments imp
69 , fa_itf_impairments itf
70 where itf.impairment_id = imp.impairment_id
71 and itf.book_type_code = p_book_type_code
72 and itf.worker_id = p_worker_id
73 and imp.request_id = p_request_id
74 and imp.status = 'DELETING POST');
75
76 BEGIN
77
78 if (p_log_level_rec.statement_level) then
79 fa_debug_pkg.add(l_calling_fn,'Begin', p_book_type_code, p_log_level_rec => p_log_level_rec);
80 end if;
81
82 if (p_mrc_sob_type_code = 'R') then
83 if G_release = 11 then
84 delete from fa_mc_books
85 where transaction_header_id_out is null
86 and book_type_code = p_book_type_code
87 and set_of_books_id = p_set_of_books_id
88 and asset_id in (select itf.asset_id
89 from fa_mc_impairments imp
90 , fa_mc_itf_impairments itf
91 where itf.impairment_id = imp.impairment_id
92 and itf.book_type_code = p_book_type_code
93 and itf.worker_id = p_worker_id
94 and itf.set_of_books_id = p_set_of_books_id
95 and imp.request_id = p_request_id
96 and imp.status = 'DELETING POST'
97 and imp.set_of_books_id = p_set_of_books_id)
98 returning transaction_header_id_in, asset_id
99 bulk collect into t_thid
100 , t_asset_id;
101 else
102 open c_mc_get_recs;
103 fetch c_mc_get_recs bulk collect into t_thid, t_asset_id;
104
105 /* Ideally no need to call this again for MRC as already processed for primary
106 not sure though.*/
107 for i in 1..t_asset_id.count loop
108 if not rollback_deprn_event(p_book_type_code,
109 t_asset_id(i),
110 p_mrc_sob_type_code,
111 p_set_of_books_id,
112 p_log_level_rec) then
113
114 raise del_err;
115 end if;
116 end loop;
117 if (p_log_level_rec.statement_level) then
118 fa_debug_pkg.add(l_calling_fn,'after rollback_deprn_event *********', '*********', p_log_level_rec => p_log_level_rec);
119 end if;
120 for i in 1..t_asset_id.count loop
121 if not rollback_impair_event(p_request_id,
122 p_book_type_code,
123 t_asset_id(i),
124 t_thid(i),
125 p_mrc_sob_type_code,
126 p_set_of_books_id,
127 p_log_level_rec) then
128 raise del_err;
129 end if;
130 end loop;
131 if (p_log_level_rec.statement_level) then
132 fa_debug_pkg.add(l_calling_fn,'after rollback_impair_event *********', '*********', p_log_level_rec => p_log_level_rec);
133 end if;
134 close c_mc_get_recs;
135 end if;
136
137 if G_release = 11 then
138 FORALL i in 1..t_thid.count
139 delete from fa_mc_adjustments
140 where transaction_header_id = t_thid(i)
141 and asset_id = t_asset_id(i)
142 and book_type_code = p_book_type_code
143 and period_counter_created = p_period_rec.period_counter
144 and set_of_books_id = p_set_of_books_id;
145 end if;
146
147 FORALL i in 1..t_thid.count
148 delete from fa_mc_deprn_detail
149 where asset_id = t_asset_id(i)
150 and book_type_code = p_book_type_code
151 and period_counter = p_period_rec.period_counter
152 and set_of_books_id = p_set_of_books_id;
153
154 FORALL i in 1..t_thid.count
155 delete from fa_mc_deprn_summary
156 where asset_id = t_asset_id(i)
157 and book_type_code = p_book_type_code
158 and period_counter = p_period_rec.period_counter
159 and set_of_books_id = p_set_of_books_id;
160
161 if G_release = 11 then
162 --Bug# 6766637 to update TRANSACTION_TYPE_CODE to ADDITION for period of addition.
163 forall i in 1..t_thid.count
164 update fa_transaction_headers
165 set transaction_type_code ='ADDITION'
166 where transaction_header_id = (
167 select transaction_header_id_in
168 from fa_mc_books
169 where transaction_header_id_out = t_thid(i)
170 and set_of_books_id = p_set_of_books_id)
171 and transaction_type_code = 'ADDITION/VOID'
172 and book_type_code = p_book_type_code;
173
174 FORALL i in 1..t_thid.count
175 update fa_mc_books
176 set date_ineffective = null
177 , transaction_header_id_out = null
178 where asset_id = t_asset_id(i)
179 and book_type_code = p_book_type_code
180 and transaction_header_id_out = t_thid(i)
181 and set_of_books_id = p_set_of_books_id ;
182 end if;
183
184 FORALL i in 1..t_thid.count
185 delete from fa_mc_itf_impairments
186 where asset_id = t_asset_id(i)
187 and book_type_code = p_book_type_code
188 and worker_id = p_worker_id
189 and period_counter = p_period_rec.period_counter
190 and set_of_books_id = p_set_of_books_id;
191
192 else
193 if G_release = 11 then
194 delete from fa_books
195 where transaction_header_id_out is null
196 and book_type_code = p_book_type_code
197 and asset_id in (select itf.asset_id
198 from fa_impairments imp
199 , fa_itf_impairments itf
200 where itf.impairment_id = imp.impairment_id
201 and itf.book_type_code = p_book_type_code
202 and itf.worker_id = p_worker_id
203 and imp.request_id = p_request_id
204 and imp.status = 'DELETING POST')
205 returning transaction_header_id_in, asset_id
206 bulk collect into t_thid
207 , t_asset_id;
208 else
209 open c_get_recs;
210 fetch c_get_recs bulk collect into t_thid, t_asset_id;
211
212 for i in 1..t_asset_id.count loop
213 if not rollback_deprn_event(p_book_type_code,
214 t_asset_id(i),
215 p_mrc_sob_type_code,
216 p_set_of_books_id,
217 p_log_level_rec) then
218
219 raise del_err;
220 end if;
221 end loop;
222 if (p_log_level_rec.statement_level) then
223 fa_debug_pkg.add(l_calling_fn,'after rollback_deprn_event *********', '*********', p_log_level_rec => p_log_level_rec);
224 end if;
225 for i in 1..t_asset_id.count loop
226 if not rollback_impair_event(p_request_id,
227 p_book_type_code,
228 t_asset_id(i),
229 t_thid(i),
230 p_mrc_sob_type_code,
231 p_set_of_books_id,
232 p_log_level_rec) then
233 raise del_err;
234 end if;
235 end loop;
236 if (p_log_level_rec.statement_level) then
237 fa_debug_pkg.add(l_calling_fn,'after rollback_impair_event *********', '*********', p_log_level_rec => p_log_level_rec);
238 end if;
239 close c_get_recs;
240 end if;
241
242 if G_release = 11 then
243 FORALL i in 1..t_thid.count
244 delete from fa_adjustments
245 where transaction_header_id = t_thid(i)
246 and asset_id = t_asset_id(i)
247 and book_type_code = p_book_type_code
248 and period_counter_created = p_period_rec.period_counter;
249 end if;
250
251 FORALL i in 1..t_thid.count
252 delete from fa_deprn_detail
253 where asset_id = t_asset_id(i)
254 and book_type_code = p_book_type_code
255 and period_counter = p_period_rec.period_counter;
256
257 FORALL i in 1..t_thid.count
258 delete from fa_deprn_summary
259 where asset_id = t_asset_id(i)
260 and book_type_code = p_book_type_code
261 and period_counter = p_period_rec.period_counter;
262
263 --Bug# 6766637 to update TRANSACTION_TYPE_CODE to ADDITION for period of addition.
264 if G_release = 11 then
265 forall i in 1..t_thid.count
266 update fa_transaction_headers
267 set transaction_type_code='ADDITION'
268 where transaction_header_id in(
269 select transaction_header_id_in
270 from fa_books
271 where transaction_header_id_out = t_thid(i))
272 and transaction_type_code = 'ADDITION/VOID'
273 and book_type_code = p_book_type_code;
274
275 FORALL i in 1..t_thid.count
276 update fa_books
277 set date_ineffective = null
278 , transaction_header_id_out = null
279 where asset_id = t_asset_id(i)
280 and book_type_code = p_book_type_code
281 and transaction_header_id_out = t_thid(i);
282
283 FORALL i in 1..t_thid.count
284 delete from fa_transaction_headers
285 where transaction_header_id = t_thid(i);
286 end if;
287
288 FORALL i in 1..t_thid.count
289 delete from fa_itf_impairments
290 where asset_id = t_asset_id(i)
291 and book_type_code = p_book_type_code
292 and worker_id = p_worker_id
293 and period_counter = p_period_rec.period_counter;
294
295 if (p_log_level_rec.statement_level) then
296 fa_debug_pkg.add(l_calling_fn,'Manual Override', 'BEGIN', p_log_level_rec => p_log_level_rec);
297 end if;
298
299 fa_std_types.deprn_override_trigger_enabled:= FALSE;
300
301 FORALL i in 1..t_thid.count
302 update fa_deprn_override
303 set status = 'POST'
304 where book_type_code = p_book_type_code
305 and asset_id = t_asset_id(i)
306 and period_name = p_period_rec.period_name
307 and used_by = 'DEPRECIATION'
308 and status = 'POSTED' ;
309
310 fa_std_types.deprn_override_trigger_enabled:= TRUE;
311
312 end if;
313
314 if (p_log_level_rec.statement_level) then
315 fa_debug_pkg.add(l_calling_fn,'End', p_book_type_code, p_log_level_rec => p_log_level_rec);
316 end if;
317
318 return true;
319
320 EXCEPTION
321 WHEN del_err THEN
322
323 if (p_log_level_rec.statement_level) then
324 fa_debug_pkg.add(l_calling_fn,'EXCEPTION', 'del_err', p_log_level_rec => p_log_level_rec);
325 fa_debug_pkg.add(l_calling_fn,'sqlerrm', substrb(sqlerrm, 1, 200));
326 end if;
327
328 return false;
329
330 WHEN OTHERS THEN
331
332 if (p_log_level_rec.statement_level) then
333 fa_debug_pkg.add(l_calling_fn,'EXCEPTION', 'OTHERS', p_log_level_rec => p_log_level_rec);
334 fa_debug_pkg.add(l_calling_fn,'sqlerrm', substrb(sqlerrm, 1, 200));
335 end if;
336
337 return false;
338
339 END delete_post;
340
341 FUNCTION process_impair_event(
342 p_book_type_code IN VARCHAR2,
343 p_mrc_sob_type_code IN VARCHAR2,
344 p_set_of_books_id IN NUMBER,
345 p_calling_fn IN VARCHAR2,
346 p_thid IN tab_num15_type,
347 p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
348
349 -- Info for event creation.
350 l_legal_entity_id number;
351 l_event_type_code varchar2(30) ;
352 l_event_id number;
353 l_event_date date;
354 l_event_id_tbl FA_XLA_EVENTS_PVT.number_tbl_type;
355 l_thid tab_num15_type;
356
357 l_calling_fn varchar2(60) := 'FA_IMPAIRMENT_DELETE_PVT.process_impair_event';
358
359 begin
360 if (p_log_level_rec.statement_level) then
361 fa_debug_pkg.add(l_calling_fn, 'Begins ', 'process_impair_event',p_log_level_rec => p_log_level_rec);
362 fa_debug_pkg.add(l_calling_fn, 'p_book_type_code ', p_book_type_code,p_log_level_rec => p_log_level_rec);
363 fa_debug_pkg.add(l_calling_fn, 'p_mrc_sob_type_code ', p_mrc_sob_type_code,p_log_level_rec => p_log_level_rec);
364 fa_debug_pkg.add(l_calling_fn, 'p_set_of_books_id ', p_set_of_books_id,p_log_level_rec => p_log_level_rec);
365 fa_debug_pkg.add(l_calling_fn, 'p_thid count ', p_thid.count ,p_log_level_rec => p_log_level_rec);
366 end if;
367
368 l_event_date :=
369 greatest(fa_cache_pkg.fazcdp_record.calendar_period_open_date,
370 least(nvl(fa_cache_pkg.fazcdp_record.calendar_period_close_date,
371 sysdate),
372 sysdate));
373
374 if (p_log_level_rec.statement_level) then
375 fa_debug_pkg.add(l_calling_fn, 'Before inserting into : ', 'xla_events_int_gt',p_log_level_rec => p_log_level_rec);
376 end if;
377 -- load the array as required by SLA:
378 -- verify event number and transaction number relevance here
379 -- since neither table uses a transaction sequence
380 forall i in 1..p_thid.count
381 insert into xla_events_int_gt
382 (APPLICATION_ID ,
383 LEDGER_ID ,
384 LEGAL_ENTITY_ID ,
385 ENTITY_CODE ,
386 event_type_code ,
387 event_date ,
388 event_number ,
389 event_status_code ,
390 transaction_number ,
391 source_id_int_1 ,
392 source_id_char_1 ,
393 -- source_id_int_2 ,
394 --source_id_int_3 ,
395 valuation_method
396 )
397 values
398 (140 ,
399 p_set_of_books_id,
400 l_legal_entity_id ,
401 'TRANSACTIONS' ,
402 'IMPAIRMENT' ,
403 l_event_date ,
404 NULL ,
405 XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
406 to_char(p_thid(i)) ,
407 p_thid(i) ,
408 p_book_type_code ,
409 -- p_period_rec.period_counter ,
410 -- NULL ,
411 p_book_type_code
412 );
413
414 if (p_log_level_rec.statement_level) then
415 fa_debug_pkg.add(l_calling_fn, 'calling : ', 'create_bulk_events',p_log_level_rec => p_log_level_rec);
416 end if;
417
418 XLA_EVENTS_PUB_PKG.create_bulk_events
419 (p_source_application_id => NULL,
420 p_application_id => 140,
421 p_legal_entity_id => l_legal_entity_id,
422 p_ledger_id => p_set_of_books_id,
423 p_entity_type_code => 'TRANSACTIONS'
424 );
425
426 if (p_log_level_rec.statement_level) then
427 fa_debug_pkg.add(l_calling_fn, 'Created events ', 'SUCCESSFULLY',p_log_level_rec => p_log_level_rec);
428 end if;
429 --Fetch event ids created.
430 select event_id,source_id_int_1 bulk collect
431 into l_event_id_tbl,l_thid
432 from xla_events_int_gt;
433
434
435 if (p_log_level_rec.statement_level) then
436 fa_debug_pkg.add(l_calling_fn, 'Updating event id in : ', 'fa_transaction_headers',p_log_level_rec => p_log_level_rec);
437 end if;
438
439 FORALL i in 1..l_thid.count
440 UPDATE FA_TRANSACTION_HEADERS
441 SET event_id = l_event_id_tbl(i)
442 WHERE TRANSACTION_HEADER_ID = l_thid(i)
443 AND BOOK_TYPE_CODE = p_book_type_code;
444
445 if (p_log_level_rec.statement_level) then
446 fa_debug_pkg.add(l_calling_fn, 'process_impair_event', 'ends',p_log_level_rec => p_log_level_rec);
447 end if;
448
449 return true;
450 EXCEPTION
451 WHEN OTHERS THEN
452 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn,
453 p_log_level_rec => p_log_level_rec);
454 return FALSE;
455 END process_impair_event;
456
457 FUNCTION rollback_deprn_event(
458 p_book_type_code IN VARCHAR2,
459 p_asset_id IN number,
460 p_mrc_sob_type_code IN VARCHAR2,
461 p_set_of_books_id IN NUMBER,
462 p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
463
464
465 --Deprn event info
466 l_deprn_source_info XLA_EVENTS_PUB_PKG.t_event_source_info;
467 l_security_context XLA_EVENTS_PUB_PKG.t_security;
468
469 l_event_id number;
470 l_deprn_run_id number;
471 l_event_status varchar2(1);
472
473 --For reversal
474 l_rev_event_id number;
475
476 l_sysdate date:= sysdate;
477 l_period_rec fa_api_types.period_rec_type;
478 l_result integer;
479 --Secondary Changes
480 l_secondary_event_id number;
481 l_secondary_event_status varchar2(1);
482 l_secondary_sob_id number;
483 l_secondary_deprn_run_id NUMBER;
484 l_secondary_rev_event_id number;
485
486 l_secondary_deprn_source_info XLA_EVENTS_PUB_PKG.t_event_source_info;
487 l_calling_fn varchar2(60) := 'FA_IMPAIRMENT_DELETE_PVT.rollback_deprn_event';
488 rb_err exception;
489
490 begin
491 if (p_log_level_rec.statement_level) then
492 fa_debug_pkg.add(l_calling_fn, 'Rollback_deprn_event ', 'Begins',p_log_level_rec => p_log_level_rec);
493 fa_debug_pkg.add(l_calling_fn, 'p_book_type_code ', p_book_type_code,p_log_level_rec => p_log_level_rec);
494 fa_debug_pkg.add(l_calling_fn, 'p_asset_id ', p_asset_id ,p_log_level_rec => p_log_level_rec);
495 fa_debug_pkg.add(l_calling_fn, 'p_mrc_sob_type_code ', p_mrc_sob_type_code,p_log_level_rec => p_log_level_rec);
496 fa_debug_pkg.add(l_calling_fn, 'p_set_of_books_id ', p_set_of_books_id,p_log_level_rec => p_log_level_rec);
497 end if;
498
499 if (NOT FA_UTIL_PVT.get_period_rec (
500 p_book => p_book_type_code,
501 p_effective_date => NULL,
502 x_period_rec => l_period_rec,
503 p_log_level_rec => p_log_level_rec
504 )) then
505 raise rb_err;
506 end if;
507
508 if (p_log_level_rec.statement_level) then
509 fa_debug_pkg.add(l_calling_fn,'fetched', 'period rec', p_log_level_rec => p_log_level_rec);
510 end if;
511 l_secondary_sob_id := FA_XLA_EVENTS_PVT.get_secondary_sob_id(p_book_type_code);
512 if (l_secondary_sob_id > 0) then
513 l_secondary_event_id := FA_XLA_EVENTS_PVT.get_secondary_event_id(p_book_type_code,
514 l_secondary_sob_id,
515 p_asset_id,
516 l_period_rec.period_counter,
517 l_secondary_deprn_run_id);
518
519 else
520 BEGIN
521 select event_id, deprn_run_id
522 into l_event_id,
523 l_deprn_run_id
524 from fa_deprn_events_v de
525 where de.book_type_code = p_book_type_code
526 and de.asset_id = p_asset_id
527 and de.period_counter = l_period_rec.period_counter
528 and de.reversal_event_id is null;
529
530 if (p_log_level_rec.statement_level) then
531 fa_debug_pkg.add(l_calling_fn, 'l_event_id', l_event_id,p_log_level_rec => p_log_level_rec);
532 fa_debug_pkg.add(l_calling_fn, 'l_deprn_run_id', l_deprn_run_id, p_log_level_rec => p_log_level_rec);
533 end if;
534 EXCEPTION
535
536 WHEN NO_DATA_FOUND THEN
537 if (p_log_level_rec.statement_level) then
538 fa_debug_pkg.add(l_calling_fn, 'no event found for this asset',p_asset_id,p_log_level_rec => p_log_level_rec);
539 end if;
540 END;
541 end if;
542 if (p_log_level_rec.statement_level) then
543 fa_debug_pkg.add(l_calling_fn,'fetched event_id :', l_event_id, p_log_level_rec => p_log_level_rec);
544 end if;
545 /*=================================================================
546 Secondary Changes Start
547 If primary and secondary sob_id is different then we need to
548 create/update/delete event for secondary ledger*/
549 if (l_secondary_event_id is not null) then
550 l_secondary_deprn_source_info.application_id := 140;
551 l_secondary_deprn_source_info.ledger_id := l_secondary_sob_id;
552 l_secondary_deprn_source_info.source_id_int_1 := p_asset_id ;
553 l_secondary_deprn_source_info.source_id_char_1 := p_book_type_code;
554 l_secondary_deprn_source_info.source_id_int_2 := l_period_rec.period_counter;
555 l_secondary_deprn_source_info.source_id_int_3 := l_secondary_deprn_run_id;
556 l_secondary_deprn_source_info.entity_type_code := 'DEPRECIATION';
557
558 if (p_log_level_rec.statement_level) then
559 fa_debug_pkg.add(l_calling_fn, 'fetching status of event ', l_secondary_event_id,p_log_level_rec => p_log_level_rec);
560 end if;
561
562 -- fetch the event status
563 l_secondary_event_status := XLA_EVENTS_PUB_PKG.get_event_status
564 (p_event_source_info => l_secondary_deprn_source_info,
565 p_event_id => l_secondary_event_id,
566 p_valuation_method => p_book_type_code,
567 p_security_context => l_security_context);
568
569 if (p_log_level_rec.statement_level) then
570 fa_debug_pkg.add(l_calling_fn, 'sec_ event status ', l_secondary_event_status,p_log_level_rec => p_log_level_rec);
571 end if;
572
573 if (l_secondary_event_status <> XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED) then
574
575 if (p_log_level_rec.statement_level) then
576 fa_debug_pkg.add(l_calling_fn, 'sec_ Deleting unprocessed event', l_secondary_event_id,p_log_level_rec => p_log_level_rec);
577 end if;
578
579 XLA_EVENTS_PUB_PKG.delete_event
580 (p_event_source_info => l_secondary_deprn_source_info,
581 p_event_id => l_secondary_event_id,
582 p_valuation_method => p_book_type_code,
583 p_security_context => l_security_context);
584
585 BEGIN
586 l_result := XLA_EVENTS_PUB_PKG.delete_entity
587 (p_source_info => l_secondary_deprn_source_info,
588 p_valuation_method => p_book_type_code,
589 p_security_context => l_security_context);
590
591 EXCEPTION
592 WHEN OTHERS THEN
593 l_result := 1;
594 fa_debug_pkg.add(l_calling_fn, 'Unable to delete entity for rb event',l_secondary_event_id, p_log_level_rec => p_log_level_rec);
595 fa_debug_pkg.add(l_calling_fn, 'l_result', l_result, p_log_level_rec => p_log_level_rec);
596 raise rb_err;
597 END; --annonymous
598 elsif (l_secondary_event_status = XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED) then
599 -- create the reversal event
600 l_secondary_rev_event_id := xla_events_pub_pkg.create_event
601 (p_event_source_info => l_secondary_deprn_source_info,
602 p_event_type_code => 'ROLLBACK_DEPRECIATION',
603 p_event_date => l_period_rec.calendar_period_close_date,
604 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
605 p_event_number => NULL,
606 p_reference_info => NULL,
607 p_valuation_method => p_book_type_code,
608 p_security_context => l_security_context);
609
610 end if;
611 end if;
612 /*Secondary Changes End
613 ==================================================================*/
614 if (l_event_id is not null) then
615 l_deprn_source_info.application_id := 140;
616 l_deprn_source_info.ledger_id := p_set_of_books_id;
617 l_deprn_source_info.source_id_int_1 := p_asset_id ;
618 l_deprn_source_info.source_id_char_1 := p_book_type_code;
619 l_deprn_source_info.source_id_int_2 := l_period_rec.period_counter;
620 l_deprn_source_info.source_id_int_3 := l_deprn_run_id;
621 l_deprn_source_info.entity_type_code := 'DEPRECIATION';
622
623 if (p_log_level_rec.statement_level) then
624 fa_debug_pkg.add(l_calling_fn, 'fetching status of event ', l_event_id,p_log_level_rec => p_log_level_rec);
625 end if;
626
627 -- fetch the event status
628 l_event_status := XLA_EVENTS_PUB_PKG.get_event_status
629 (p_event_source_info => l_deprn_source_info,
630 p_event_id => l_event_id,
631 p_valuation_method => p_book_type_code,
632 p_security_context => l_security_context);
633
634 if (p_log_level_rec.statement_level) then
635 fa_debug_pkg.add(l_calling_fn, 'event status ', l_event_status,p_log_level_rec => p_log_level_rec);
636 end if;
637
638 if (l_event_status <> XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED) then
639
640 if (p_log_level_rec.statement_level) then
641 fa_debug_pkg.add(l_calling_fn, 'Deleting unprocessed event', l_event_id,p_log_level_rec => p_log_level_rec);
642 end if;
643
644 XLA_EVENTS_PUB_PKG.delete_event
645 (p_event_source_info => l_deprn_source_info,
646 p_event_id => l_event_id,
647 p_valuation_method => p_book_type_code,
648 p_security_context => l_security_context);
649
650 BEGIN
651 l_result := XLA_EVENTS_PUB_PKG.delete_entity
652 (p_source_info => l_deprn_source_info,
653 p_valuation_method => p_book_type_code,
654 p_security_context => l_security_context);
655
656 EXCEPTION
657 WHEN OTHERS THEN
658 l_result := 1;
659 fa_debug_pkg.add(l_calling_fn, 'Unable to delete entity for rb event',l_event_id, p_log_level_rec => p_log_level_rec);
660 fa_debug_pkg.add(l_calling_fn, 'l_result', l_result, p_log_level_rec => p_log_level_rec);
661 raise rb_err;
662 END; --annonymous
663
664 DELETE from fa_deprn_events
665 where asset_id = p_asset_id
666 and book_type_code = p_book_type_code
667 and period_counter = l_period_rec.period_counter
668 and reversal_event_id is null;
669
670 elsif (l_event_status = XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED) then
671 -- create the reversal event
672 if (p_mrc_sob_type_code = 'P') then
673 l_rev_event_id := xla_events_pub_pkg.create_event
674 (p_event_source_info => l_deprn_source_info,
675 p_event_type_code => 'ROLLBACK_DEPRECIATION',
676 p_event_date => l_period_rec.calendar_period_close_date,
677 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
678 p_event_number => NULL,
679 p_reference_info => NULL,
680 p_valuation_method => p_book_type_code,
681 p_security_context => l_security_context);
682
683 if (p_log_level_rec.statement_level) then
684 fa_debug_pkg.add(l_calling_fn, 'rollback event id', l_event_id, p_log_level_rec => p_log_level_rec);
685 end if;
686
687 -- flag the header table too
688 update fa_deprn_events
689 set reversal_event_id = l_rev_event_id,
690 reversal_date = l_sysdate
691 where asset_id = p_asset_id
692 and book_type_code = p_book_type_code
693 and period_counter = l_period_rec.period_counter
694 and deprn_run_id = l_deprn_run_id;
695
696 /*Bug# 8542247 - Added following code to archive depreciation record for audit trail */
697 insert into fa_deprn_summary_h
698 (BOOK_TYPE_CODE ,
699 ASSET_ID ,
700 DEPRN_RUN_DATE ,
701 DEPRN_AMOUNT ,
702 YTD_DEPRN ,
703 DEPRN_RESERVE ,
704 DEPRN_SOURCE_CODE ,
705 ADJUSTED_COST ,
706 BONUS_RATE ,
707 LTD_PRODUCTION ,
708 PERIOD_COUNTER ,
709 PRODUCTION ,
710 REVAL_AMORTIZATION ,
711 REVAL_AMORTIZATION_BASIS ,
712 REVAL_DEPRN_EXPENSE ,
713 REVAL_RESERVE ,
714 YTD_PRODUCTION ,
715 YTD_REVAL_DEPRN_EXPENSE ,
716 PRIOR_FY_EXPENSE ,
717 BONUS_DEPRN_AMOUNT ,
718 BONUS_YTD_DEPRN ,
719 BONUS_DEPRN_RESERVE ,
720 PRIOR_FY_BONUS_EXPENSE ,
721 DEPRN_OVERRIDE_FLAG ,
722 SYSTEM_DEPRN_AMOUNT ,
723 SYSTEM_BONUS_DEPRN_AMOUNT ,
724 IMPAIRMENT_AMOUNT ,
725 YTD_IMPAIRMENT ,
726 IMPAIRMENT_RESERVE ,
727 CAPITAL_ADJUSTMENT ,
728 GENERAL_FUND ,
729 REVAL_LOSS_BALANCE ,
730 EVENT_ID ,
731 DEPRN_RUN_ID ,
732 REVERSAL_EVENT_ID ,
733 REVERSAL_DATE )
734 select
735 BOOK_TYPE_CODE ,
736 ASSET_ID ,
737 DEPRN_RUN_DATE ,
738 DEPRN_AMOUNT ,
739 YTD_DEPRN ,
740 DEPRN_RESERVE ,
741 DEPRN_SOURCE_CODE ,
742 ADJUSTED_COST ,
743 BONUS_RATE ,
744 LTD_PRODUCTION ,
745 PERIOD_COUNTER ,
746 PRODUCTION ,
747 REVAL_AMORTIZATION ,
748 REVAL_AMORTIZATION_BASIS ,
749 REVAL_DEPRN_EXPENSE ,
750 REVAL_RESERVE ,
751 YTD_PRODUCTION ,
752 YTD_REVAL_DEPRN_EXPENSE ,
753 PRIOR_FY_EXPENSE ,
754 BONUS_DEPRN_AMOUNT ,
755 BONUS_YTD_DEPRN ,
756 BONUS_DEPRN_RESERVE ,
757 PRIOR_FY_BONUS_EXPENSE ,
758 DEPRN_OVERRIDE_FLAG ,
759 SYSTEM_DEPRN_AMOUNT ,
760 SYSTEM_BONUS_DEPRN_AMOUNT ,
761 IMPAIRMENT_AMOUNT ,
762 YTD_IMPAIRMENT ,
763 IMPAIRMENT_RESERVE ,
764 CAPITAL_ADJUSTMENT ,
765 GENERAL_FUND ,
766 REVAL_LOSS_BALANCE ,
767 EVENT_ID ,
768 DEPRN_RUN_ID ,
769 l_rev_event_id ,
770 l_sysdate
771 from fa_deprn_summary ds
772 where ds.book_type_code = p_book_type_code
773 and ds.asset_id = p_asset_id
774 and ds.period_counter = l_period_rec.period_counter
775 and ds.deprn_source_code in ('DEPRN','TRACK');
776
777 insert into fa_deprn_detail_h
778 (BOOK_TYPE_CODE ,
779 ASSET_ID ,
780 PERIOD_COUNTER ,
781 DISTRIBUTION_ID ,
782 DEPRN_SOURCE_CODE ,
783 DEPRN_RUN_DATE ,
784 DEPRN_AMOUNT ,
785 YTD_DEPRN ,
786 DEPRN_RESERVE ,
787 ADDITION_COST_TO_CLEAR ,
788 COST ,
789 DEPRN_ADJUSTMENT_AMOUNT ,
790 REVAL_AMORTIZATION ,
791 REVAL_DEPRN_EXPENSE ,
792 REVAL_RESERVE ,
793 YTD_REVAL_DEPRN_EXPENSE ,
794 BONUS_DEPRN_AMOUNT ,
795 BONUS_YTD_DEPRN ,
796 BONUS_DEPRN_RESERVE ,
797 BONUS_DEPRN_ADJUSTMENT_AMOUNT ,
798 IMPAIRMENT_AMOUNT ,
799 YTD_IMPAIRMENT ,
800 IMPAIRMENT_RESERVE ,
801 CAPITAL_ADJUSTMENT ,
802 GENERAL_FUND ,
803 EVENT_ID ,
804 DEPRN_RUN_ID ,
805 REVERSAL_EVENT_ID ,
806 REVERSAL_DATE )
807 select
808 BOOK_TYPE_CODE ,
809 ASSET_ID ,
810 PERIOD_COUNTER ,
811 DISTRIBUTION_ID ,
812 DEPRN_SOURCE_CODE ,
813 DEPRN_RUN_DATE ,
814 DEPRN_AMOUNT ,
815 YTD_DEPRN ,
816 DEPRN_RESERVE ,
817 ADDITION_COST_TO_CLEAR ,
818 COST ,
819 DEPRN_ADJUSTMENT_AMOUNT ,
820 REVAL_AMORTIZATION ,
821 REVAL_DEPRN_EXPENSE ,
822 REVAL_RESERVE ,
823 YTD_REVAL_DEPRN_EXPENSE ,
824 BONUS_DEPRN_AMOUNT ,
825 BONUS_YTD_DEPRN ,
826 BONUS_DEPRN_RESERVE ,
827 BONUS_DEPRN_ADJUSTMENT_AMOUNT ,
828 IMPAIRMENT_AMOUNT ,
829 YTD_IMPAIRMENT ,
830 IMPAIRMENT_RESERVE ,
831 CAPITAL_ADJUSTMENT ,
832 GENERAL_FUND ,
833 EVENT_ID ,
834 DEPRN_RUN_ID ,
835 l_rev_event_id ,
836 l_sysdate
837 from fa_deprn_detail ds
838 where ds.book_type_code = p_book_type_code
839 and ds.asset_id = p_asset_id
840 and ds.period_counter = l_period_rec.period_counter
841 and ds.deprn_source_code in ('D','T');
842
843 insert into fa_mc_deprn_summary_h
844 (SET_OF_BOOKS_ID ,
845 BOOK_TYPE_CODE ,
846 ASSET_ID ,
847 DEPRN_RUN_DATE ,
848 DEPRN_AMOUNT ,
849 YTD_DEPRN ,
850 DEPRN_RESERVE ,
851 DEPRN_SOURCE_CODE ,
852 ADJUSTED_COST ,
853 BONUS_RATE ,
854 LTD_PRODUCTION ,
855 PERIOD_COUNTER ,
856 PRODUCTION ,
857 REVAL_AMORTIZATION ,
858 REVAL_AMORTIZATION_BASIS ,
859 REVAL_DEPRN_EXPENSE ,
860 REVAL_RESERVE ,
861 YTD_PRODUCTION ,
862 YTD_REVAL_DEPRN_EXPENSE ,
863 PRIOR_FY_EXPENSE ,
864 BONUS_DEPRN_AMOUNT ,
865 BONUS_YTD_DEPRN ,
866 BONUS_DEPRN_RESERVE ,
867 PRIOR_FY_BONUS_EXPENSE ,
868 DEPRN_OVERRIDE_FLAG ,
869 SYSTEM_DEPRN_AMOUNT ,
870 SYSTEM_BONUS_DEPRN_AMOUNT ,
871 IMPAIRMENT_AMOUNT ,
872 YTD_IMPAIRMENT ,
873 IMPAIRMENT_RESERVE ,
874 CAPITAL_ADJUSTMENT ,
875 GENERAL_FUND ,
876 REVAL_LOSS_BALANCE ,
877 EVENT_ID ,
878 DEPRN_RUN_ID ,
879 REVERSAL_EVENT_ID ,
880 REVERSAL_DATE )
881 select
882 SET_OF_BOOKS_ID ,
883 BOOK_TYPE_CODE ,
884 ASSET_ID ,
885 DEPRN_RUN_DATE ,
886 DEPRN_AMOUNT ,
887 YTD_DEPRN ,
888 DEPRN_RESERVE ,
889 DEPRN_SOURCE_CODE ,
890 ADJUSTED_COST ,
891 BONUS_RATE ,
892 LTD_PRODUCTION ,
893 PERIOD_COUNTER ,
894 PRODUCTION ,
895 REVAL_AMORTIZATION ,
896 REVAL_AMORTIZATION_BASIS ,
897 REVAL_DEPRN_EXPENSE ,
898 REVAL_RESERVE ,
899 YTD_PRODUCTION ,
900 YTD_REVAL_DEPRN_EXPENSE ,
901 PRIOR_FY_EXPENSE ,
902 BONUS_DEPRN_AMOUNT ,
903 BONUS_YTD_DEPRN ,
904 BONUS_DEPRN_RESERVE ,
905 PRIOR_FY_BONUS_EXPENSE ,
906 DEPRN_OVERRIDE_FLAG ,
907 SYSTEM_DEPRN_AMOUNT ,
908 SYSTEM_BONUS_DEPRN_AMOUNT ,
909 IMPAIRMENT_AMOUNT ,
910 YTD_IMPAIRMENT ,
911 IMPAIRMENT_RESERVE ,
912 CAPITAL_ADJUSTMENT ,
913 GENERAL_FUND ,
914 REVAL_LOSS_BALANCE ,
915 EVENT_ID ,
916 DEPRN_RUN_ID ,
917 decode(set_of_books_id,l_secondary_sob_id, l_secondary_rev_event_id,l_rev_event_id) ,
918 l_sysdate
919 from fa_mc_deprn_summary ds
920 where ds.book_type_code = p_book_type_code
921 and ds.asset_id = p_asset_id
922 and ds.period_counter = l_period_rec.period_counter
923 and ds.deprn_source_code in ('DEPRN','TRACK');
924
925 insert into fa_mc_deprn_detail_h
926 (SET_OF_BOOKS_ID ,
927 BOOK_TYPE_CODE ,
928 ASSET_ID ,
929 PERIOD_COUNTER ,
930 DISTRIBUTION_ID ,
931 DEPRN_SOURCE_CODE ,
932 DEPRN_RUN_DATE ,
933 DEPRN_AMOUNT ,
934 YTD_DEPRN ,
935 DEPRN_RESERVE ,
936 ADDITION_COST_TO_CLEAR ,
937 COST ,
938 DEPRN_ADJUSTMENT_AMOUNT ,
939 REVAL_AMORTIZATION ,
940 REVAL_DEPRN_EXPENSE ,
941 REVAL_RESERVE ,
942 YTD_REVAL_DEPRN_EXPENSE ,
943 BONUS_DEPRN_AMOUNT ,
944 BONUS_YTD_DEPRN ,
945 BONUS_DEPRN_RESERVE ,
946 BONUS_DEPRN_ADJUSTMENT_AMOUNT ,
947 IMPAIRMENT_AMOUNT ,
948 YTD_IMPAIRMENT ,
949 IMPAIRMENT_RESERVE ,
950 CAPITAL_ADJUSTMENT ,
951 GENERAL_FUND ,
952 EVENT_ID ,
953 DEPRN_RUN_ID ,
954 REVERSAL_EVENT_ID ,
955 REVERSAL_DATE )
956 select
957 SET_OF_BOOKS_ID ,
958 BOOK_TYPE_CODE ,
959 ASSET_ID ,
960 PERIOD_COUNTER ,
961 DISTRIBUTION_ID ,
962 DEPRN_SOURCE_CODE ,
963 DEPRN_RUN_DATE ,
964 DEPRN_AMOUNT ,
965 YTD_DEPRN ,
966 DEPRN_RESERVE ,
967 ADDITION_COST_TO_CLEAR ,
968 COST ,
969 DEPRN_ADJUSTMENT_AMOUNT ,
970 REVAL_AMORTIZATION ,
971 REVAL_DEPRN_EXPENSE ,
972 REVAL_RESERVE ,
973 YTD_REVAL_DEPRN_EXPENSE ,
974 BONUS_DEPRN_AMOUNT ,
975 BONUS_YTD_DEPRN ,
976 BONUS_DEPRN_RESERVE ,
977 BONUS_DEPRN_ADJUSTMENT_AMOUNT ,
978 IMPAIRMENT_AMOUNT ,
979 YTD_IMPAIRMENT ,
980 IMPAIRMENT_RESERVE ,
981 CAPITAL_ADJUSTMENT ,
982 GENERAL_FUND ,
983 EVENT_ID ,
984 DEPRN_RUN_ID ,
985 decode(set_of_books_id,l_secondary_sob_id, l_secondary_rev_event_id,l_rev_event_id),
986 l_sysdate
987 from fa_mc_deprn_detail ds
988 where ds.book_type_code = p_book_type_code
989 and ds.asset_id = p_asset_id
990 and ds.period_counter = l_period_rec.period_counter
991 and ds.deprn_source_code in ('D','T');
992 end if;
993 else
994 raise rb_err;
995 end if;
996 end if; -- event is not null
997
998 if (p_log_level_rec.statement_level) then
999 fa_debug_pkg.add(l_calling_fn, 'Rollback_deprn_event ', 'Ends',p_log_level_rec => p_log_level_rec);
1000 end if;
1001
1002 return true;
1003
1004 EXCEPTION
1005 WHEN rb_ERR THEN
1006 fa_srvr_msg.add_message(calling_fn => l_calling_fn,
1007 p_log_level_rec => p_log_level_rec);
1008 return FALSE;
1009
1010 WHEN OTHERS THEN
1011 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn,
1012 p_log_level_rec => p_log_level_rec);
1013 return FALSE;
1014
1015 END rollback_deprn_event;
1016
1017 FUNCTION rollback_impair_event(
1018 p_request_id IN NUMBER,
1019 p_book_type_code IN VARCHAR2,
1020 p_asset_id IN NUMBER,
1021 p_thid IN NUMBER,
1022 p_mrc_sob_type_code IN VARCHAR2,
1023 p_set_of_books_id IN NUMBER,
1024 p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
1025
1026 l_period_rec fa_api_types.period_rec_type;
1027 l_event_id number;
1028 l_rev_event_id number;
1029
1030 l_deprn_run_id number;
1031 l_deprn_source_info XLA_EVENTS_PUB_PKG.t_event_source_info;
1032 l_security_context XLA_EVENTS_PUB_PKG.t_security;
1033
1034 l_event_status varchar2(1);
1035 l_deprn_count number;
1036 l_sysdate date;
1037 l_result integer;
1038
1039 l_txn_status boolean;
1040
1041 l_calling_fn varchar2(60) := 'FA_IMPAIRMENT_DELETE_PVT.rollback_impair_event';
1042 rb_err exception;
1043 l_set_of_books_id number;
1044 l_amount_inserted number;
1045
1046 l_adj fa_adjust_type_pkg.fa_adj_row_struct;
1047 l_clear_adj fa_adjust_type_pkg.fa_adj_row_struct;
1048
1049 l_adj_row_rec FA_ADJUSTMENTS%rowtype;
1050 l_current_units number;
1051 l_thid number;
1052 l_login_id number(15) := fnd_global.user_id;
1053
1054 l_trx_source_info XLA_EVENTS_PUB_PKG.t_event_source_info;
1055
1056 CURSOR c_mrc_adjustments (p_thid number) IS
1057 SELECT adj.code_combination_id ,
1058 adj.distribution_id ,
1059 adj.debit_credit_flag ,
1060 adj.adjustment_amount ,
1061 adj.adjustment_type ,
1062 adj.source_type_code ,
1063 ad.current_units
1064 FROM fa_mc_adjustments adj,
1065 fa_additions_b ad
1066 WHERE transaction_header_id = p_thid
1067 AND set_of_books_id = p_set_of_books_id
1068 AND ad.asset_id = adj.asset_id;
1069
1070 CURSOR c_adjustments (p_thid number) IS
1071 SELECT adj.code_combination_id ,
1072 adj.distribution_id ,
1073 adj.debit_credit_flag ,
1074 adj.adjustment_amount ,
1075 adj.adjustment_type ,
1076 adj.source_type_code ,
1077 ad.current_units
1078 FROM fa_adjustments adj,
1079 fa_additions_b ad
1080 WHERE transaction_header_id = p_thid
1081 AND ad.asset_id = adj.asset_id;
1082
1083 begin
1084 if (p_log_level_rec.statement_level) then
1085 fa_debug_pkg.add(l_calling_fn, 'Rollback_impair_event ', 'Begins',p_log_level_rec => p_log_level_rec);
1086 fa_debug_pkg.add(l_calling_fn, 'p_request_id ', p_request_id,p_log_level_rec => p_log_level_rec);
1087 fa_debug_pkg.add(l_calling_fn, 'p_book_type_code ', p_book_type_code,p_log_level_rec => p_log_level_rec);
1088 fa_debug_pkg.add(l_calling_fn, 'p_thid ', p_thid ,p_log_level_rec => p_log_level_rec);
1089 fa_debug_pkg.add(l_calling_fn, 'p_asset_id ', p_asset_id ,p_log_level_rec => p_log_level_rec);
1090 fa_debug_pkg.add(l_calling_fn, 'p_mrc_sob_type_code ', p_mrc_sob_type_code,p_log_level_rec => p_log_level_rec);
1091 fa_debug_pkg.add(l_calling_fn, 'p_set_of_books_id ', p_set_of_books_id,p_log_level_rec => p_log_level_rec);
1092 end if;
1093
1094 if (NOT FA_UTIL_PVT.get_period_rec (
1095 p_book => p_book_type_code,
1096 p_effective_date => NULL,
1097 x_period_rec => l_period_rec,
1098 p_log_level_rec => p_log_level_rec -- Bug:5475024
1099 )) then
1100 raise rb_err;
1101 end if;
1102 if (p_log_level_rec.statement_level) then
1103 fa_debug_pkg.add(l_calling_fn,'fetched', 'period rec', p_log_level_rec => p_log_level_rec);
1104 end if;
1105
1106 /*8666930 - For mrc we will not find event as it was already deleted for primary if uprocessed*/
1107 BEGIN
1108
1109 select event_id
1110 into l_event_id
1111 from fa_transaction_headers
1112 where asset_id = p_asset_id
1113 and book_type_code = p_book_type_code
1114 and transaction_header_id = p_thid;
1115
1116 EXCEPTION
1117
1118 WHEN NO_DATA_FOUND THEN
1119 if (p_log_level_rec.statement_level) then
1120 fa_debug_pkg.add(l_calling_fn, 'no event found for this asset',p_asset_id,p_log_level_rec => p_log_level_rec);
1121 end if;
1122 END;
1123
1124 if (p_log_level_rec.statement_level) then
1125 fa_debug_pkg.add(l_calling_fn,'l_event_id : ', l_event_id, p_log_level_rec => p_log_level_rec);
1126 end if;
1127
1128 if (l_event_id is not null) then
1129 l_trx_source_info.application_id := 140;
1130 l_trx_source_info.ledger_id := p_set_of_books_id;
1131 l_trx_source_info.source_id_int_1 := p_thid ;
1132 l_trx_source_info.source_id_char_1 := p_book_type_code;
1133 l_trx_source_info.entity_type_code := 'TRANSACTIONS';
1134
1135 -- check the event status
1136
1137 l_event_status := XLA_EVENTS_PUB_PKG.get_event_status
1138 (p_event_source_info => l_trx_source_info,
1139 p_event_id => l_event_id,
1140 p_valuation_method => p_book_type_code,
1141 p_security_context => l_security_context);
1142 if (p_log_level_rec.statement_level) then
1143 fa_debug_pkg.add(l_calling_fn, 'event status ', l_event_status,p_log_level_rec => p_log_level_rec);
1144 end if;
1145
1146 if l_event_status = FA_XLA_EVENTS_PVT.C_EVENT_UNPROCESSED then
1147 if (p_log_level_rec.statement_level) then
1148 fa_debug_pkg.add(l_calling_fn,'deleting unprocessed impairment event',p_thid,p_log_level_rec => p_log_level_rec);
1149 end if;
1150
1151 if not fa_xla_events_pvt.delete_transaction_event
1152 (p_ledger_id => p_set_of_books_id,
1153 p_transaction_header_id => p_thid,
1154 p_book_type_code => p_book_type_code,
1155 p_calling_fn => l_calling_fn
1156 ,p_log_level_rec => p_log_level_rec) then
1157 if (p_log_level_rec.statement_level) then
1158 fa_debug_pkg.add(l_calling_fn,'Failed ','delete_transaction_event',p_log_level_rec => p_log_level_rec);
1159 end if;
1160 raise rb_err;
1161 end if;
1162
1163 if (p_log_level_rec.statement_level) then
1164 fa_debug_pkg.add(l_calling_fn,'deleted accounting impacts for impairment thid',p_thid,p_log_level_rec => p_log_level_rec);
1165 end if;
1166
1167 delete from fa_books
1168 where transaction_header_id_out is null
1169 and transaction_header_id_in = p_thid
1170 and book_type_code = p_book_type_code
1171 and asset_id = p_asset_id ;
1172
1173 delete from fa_adjustments
1174 where transaction_header_id = p_thid
1175 and asset_id = p_asset_id
1176 and book_type_code = p_book_type_code
1177 and period_counter_created = l_period_rec.period_counter;
1178
1179 update fa_books
1180 set date_ineffective = null
1181 , transaction_header_id_out = null
1182 where asset_id = p_asset_id
1183 and book_type_code = p_book_type_code
1184 and transaction_header_id_out = p_thid;
1185
1186 delete from fa_transaction_headers
1187 where transaction_header_id = p_thid;
1188
1189 elsif (l_event_status = XLA_EVENTS_PUB_PKG.C_EVENT_PROCESSED) then
1190 if (p_log_level_rec.statement_level) then
1191 fa_debug_pkg.add(l_calling_fn,'event already processed need to reverse impairment entries.',p_thid,p_log_level_rec => p_log_level_rec);
1192 end if;
1193
1194 if (p_mrc_sob_type_code = 'R') then
1195
1196 UPDATE FA_TRANSACTION_HEADERS
1197 SET ATTRIBUTE15 = ATTRIBUTE15
1198 WHERE ASSET_ID = p_asset_id
1199 AND BOOK_TYPE_CODE = p_book_type_code
1200 AND TRANSACTION_TYPE_CODE = 'ADJUSTMENT'
1201 AND TRANSACTION_SUBTYPE = 'AMORTIZED'
1202 AND TRANSACTION_KEY = 'IM'
1203 AND CALLING_INTERFACE = 'FAPIMP'
1204 AND MASS_TRANSACTION_ID = p_request_id
1205 RETURNING TRANSACTION_HEADER_ID INTO l_thid;
1206 else
1207 INSERT INTO FA_TRANSACTION_HEADERS(
1208 TRANSACTION_HEADER_ID
1209 , BOOK_TYPE_CODE
1210 , ASSET_ID
1211 , TRANSACTION_TYPE_CODE
1212 , TRANSACTION_DATE_ENTERED
1213 , DATE_EFFECTIVE
1214 , LAST_UPDATE_DATE
1215 , LAST_UPDATED_BY
1216 , TRANSACTION_SUBTYPE
1217 , TRANSACTION_KEY
1218 , AMORTIZATION_START_DATE
1219 , CALLING_INTERFACE
1220 , MASS_TRANSACTION_ID
1221 ) VALUES (
1222 FA_TRANSACTION_HEADERS_S.NEXTVAL
1223 , p_book_type_code
1224 , p_asset_id
1225 , 'ADJUSTMENT' /*This must be some new transaction */
1226 , l_period_rec.calendar_period_open_date /* need to modify to populate correct who info */
1227 , sysdate
1228 , SYSDATE
1229 , fnd_global.user_id
1230 , 'AMORTIZED'
1231 , 'RM' --8582979
1232 , l_period_rec.calendar_period_open_date
1233 , 'FAPIMP'
1234 , p_request_id ) RETURNING transaction_header_id INTO l_thid;
1235
1236 --Populate to create event for reversal
1237 l_trx_source_info.application_id := 140;
1238 l_trx_source_info.legal_entity_id := NULL;
1239 l_trx_source_info.ledger_id := p_set_of_books_id;
1240 l_trx_source_info.transaction_number := to_char(l_thid);
1241 l_trx_source_info.source_id_int_1 := l_thid;
1242 l_trx_source_info.source_id_char_1 := p_book_type_code;
1243
1244 --Bug 10024912: Event_type_code should be ROLLBACK_IMPAIRMENT
1245 l_rev_event_id := xla_events_pub_pkg.create_event
1246 (p_event_source_info => l_trx_source_info,
1247 p_event_type_code => 'ROLLBACK_IMPAIRMENT',
1248 p_event_date => l_period_rec.calendar_period_close_date,
1249 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
1250 p_event_number => NULL,
1251 p_reference_info => NULL,
1252 p_valuation_method => p_book_type_code,
1253 p_security_context => l_security_context);
1254
1255 if (p_log_level_rec.statement_level) then
1256 fa_debug_pkg.add(l_calling_fn, 'rolled back IMPAIRMENT event id', l_rev_event_id,p_log_level_rec => p_log_level_rec);
1257 end if;
1258
1259 update fa_transaction_headers
1260 set event_id = l_rev_event_id
1261 where transaction_header_id = l_thid;
1262
1263 if (p_log_level_rec.statement_level) then
1264 fa_debug_pkg.add(l_calling_fn,'Deactivating ', 'FA_BOOKS', p_log_level_rec => p_log_level_rec);
1265 end if;
1266 end if;
1267
1268 if (p_mrc_sob_type_code = 'R') then
1269 UPDATE FA_MC_BOOKS
1270 SET DATE_INEFFECTIVE = sysdate
1271 , TRANSACTION_HEADER_ID_OUT = l_thid
1272 WHERE ASSET_ID = p_asset_id
1273 AND BOOK_TYPE_CODE = p_book_type_code
1274 AND TRANSACTION_HEADER_ID_in = p_thid
1275 AND TRANSACTION_HEADER_ID_OUT is null
1276 AND SET_OF_BOOKS_ID = p_set_of_books_id;
1277 else
1278 UPDATE FA_BOOKS
1279 SET DATE_INEFFECTIVE = sysdate
1280 , TRANSACTION_HEADER_ID_OUT = l_thid
1281 WHERE ASSET_ID = p_asset_id
1282 AND BOOK_TYPE_CODE = p_book_type_code
1283 AND TRANSACTION_HEADER_ID_in = p_thid
1284 AND TRANSACTION_HEADER_ID_OUT is null;
1285 end if;
1286
1287
1288 if (p_mrc_sob_type_code = 'R') then
1289 INSERT INTO FA_MC_BOOKS( SET_OF_BOOKS_ID
1290 , BOOK_TYPE_CODE
1291 , ASSET_ID
1292 , DATE_PLACED_IN_SERVICE
1293 , DATE_EFFECTIVE
1294 , DEPRN_START_DATE
1295 , DEPRN_METHOD_CODE
1296 , LIFE_IN_MONTHS
1297 , RATE_ADJUSTMENT_FACTOR
1298 , ADJUSTED_COST
1299 , COST
1300 , ORIGINAL_COST
1301 , SALVAGE_VALUE
1302 , PRORATE_CONVENTION_CODE
1303 , PRORATE_DATE
1304 , COST_CHANGE_FLAG
1305 , ADJUSTMENT_REQUIRED_STATUS
1306 , CAPITALIZE_FLAG
1307 , RETIREMENT_PENDING_FLAG
1308 , DEPRECIATE_FLAG
1309 , LAST_UPDATE_DATE
1310 , LAST_UPDATED_BY
1311 , TRANSACTION_HEADER_ID_IN
1312 , ITC_AMOUNT_ID
1313 , ITC_AMOUNT
1314 , RETIREMENT_ID
1315 , TAX_REQUEST_ID
1316 , ITC_BASIS
1317 , BASIC_RATE
1318 , ADJUSTED_RATE
1319 , BONUS_RULE
1320 , CEILING_NAME
1321 , RECOVERABLE_COST
1322 , ADJUSTED_CAPACITY
1323 , FULLY_RSVD_REVALS_COUNTER
1324 , IDLED_FLAG
1325 , PERIOD_COUNTER_CAPITALIZED
1326 , PERIOD_COUNTER_FULLY_RESERVED
1327 , PERIOD_COUNTER_FULLY_RETIRED
1328 , PRODUCTION_CAPACITY
1329 , REVAL_AMORTIZATION_BASIS
1330 , REVAL_CEILING
1331 , UNIT_OF_MEASURE
1332 , UNREVALUED_COST
1333 , ANNUAL_DEPRN_ROUNDING_FLAG
1334 , PERCENT_SALVAGE_VALUE
1335 , ALLOWED_DEPRN_LIMIT
1336 , ALLOWED_DEPRN_LIMIT_AMOUNT
1337 , PERIOD_COUNTER_LIFE_COMPLETE
1338 , ADJUSTED_RECOVERABLE_COST
1339 , ANNUAL_ROUNDING_FLAG
1340 , GLOBAL_ATTRIBUTE1
1341 , GLOBAL_ATTRIBUTE2
1342 , GLOBAL_ATTRIBUTE3
1343 , GLOBAL_ATTRIBUTE4
1344 , GLOBAL_ATTRIBUTE5
1345 , GLOBAL_ATTRIBUTE6
1346 , GLOBAL_ATTRIBUTE7
1347 , GLOBAL_ATTRIBUTE8
1348 , GLOBAL_ATTRIBUTE9
1349 , GLOBAL_ATTRIBUTE10
1350 , GLOBAL_ATTRIBUTE11
1351 , GLOBAL_ATTRIBUTE12
1352 , GLOBAL_ATTRIBUTE13
1353 , GLOBAL_ATTRIBUTE14
1354 , GLOBAL_ATTRIBUTE15
1355 , GLOBAL_ATTRIBUTE16
1356 , GLOBAL_ATTRIBUTE17
1357 , GLOBAL_ATTRIBUTE18
1358 , GLOBAL_ATTRIBUTE19
1359 , GLOBAL_ATTRIBUTE20
1360 , GLOBAL_ATTRIBUTE_CATEGORY
1361 , EOFY_ADJ_COST
1362 , EOFY_FORMULA_FACTOR
1363 , SHORT_FISCAL_YEAR_FLAG
1364 , CONVERSION_DATE
1365 , ORIGINAL_DEPRN_START_DATE
1366 , REMAINING_LIFE1
1367 , REMAINING_LIFE2
1368 , OLD_ADJUSTED_COST
1369 , FORMULA_FACTOR
1370 , GROUP_ASSET_ID
1371 , SALVAGE_TYPE
1372 , DEPRN_LIMIT_TYPE
1373 , REDUCTION_RATE
1374 , REDUCE_ADDITION_FLAG
1375 , REDUCE_ADJUSTMENT_FLAG
1376 , REDUCE_RETIREMENT_FLAG
1377 , RECOGNIZE_GAIN_LOSS
1378 , RECAPTURE_RESERVE_FLAG
1379 , LIMIT_PROCEEDS_FLAG
1380 , TERMINAL_GAIN_LOSS
1381 , TRACKING_METHOD
1382 , EXCLUDE_FULLY_RSV_FLAG
1383 , EXCESS_ALLOCATION_OPTION
1384 , DEPRECIATION_OPTION
1385 , MEMBER_ROLLUP_FLAG
1386 , ALLOCATE_TO_FULLY_RSV_FLAG
1387 , ALLOCATE_TO_FULLY_RET_FLAG
1388 , TERMINAL_GAIN_LOSS_AMOUNT
1389 , CIP_COST
1390 , YTD_PROCEEDS
1391 , LTD_PROCEEDS
1392 , LTD_COST_OF_REMOVAL
1393 , EOFY_RESERVE
1394 , PRIOR_EOFY_RESERVE
1395 , EOP_ADJ_COST
1396 , EOP_FORMULA_FACTOR
1397 , EXCLUDE_PROCEEDS_FROM_BASIS
1398 , RETIREMENT_DEPRN_OPTION
1399 , TERMINAL_GAIN_LOSS_FLAG
1400 , SUPER_GROUP_ID
1401 , OVER_DEPRECIATE_OPTION
1402 , DISABLED_FLAG
1403 , CASH_GENERATING_UNIT_ID
1404 , RATE_IN_USE
1405 ) SELECT SET_OF_BOOKS_ID
1406 , BOOK_TYPE_CODE
1407 , ASSET_ID
1408 , DATE_PLACED_IN_SERVICE
1409 , SYSDATE -- DATE_EFFECTIVE
1410 , DEPRN_START_DATE
1411 , DEPRN_METHOD_CODE
1412 , LIFE_IN_MONTHS
1413 , RATE_ADJUSTMENT_FACTOR --RATE_ADJUSTMENT_FACTOR
1414 , ADJUSTED_COST -- ADJUSTED_COST
1415 , COST
1416 , ORIGINAL_COST
1417 , SALVAGE_VALUE
1418 , PRORATE_CONVENTION_CODE
1419 , PRORATE_DATE
1420 , COST_CHANGE_FLAG
1421 , ADJUSTMENT_REQUIRED_STATUS
1422 , CAPITALIZE_FLAG
1423 , RETIREMENT_PENDING_FLAG
1424 , DEPRECIATE_FLAG
1425 , sysdate -- LAST_UPDATE_DATE
1426 , fnd_global.user_id -- LAST_UPDATED_BY
1427 , l_thid -- TRANSACTION_HEADER_ID_IN
1428 , ITC_AMOUNT_ID
1429 , ITC_AMOUNT
1430 , RETIREMENT_ID
1431 , TAX_REQUEST_ID
1432 , ITC_BASIS
1433 , BASIC_RATE
1434 , ADJUSTED_RATE
1435 , BONUS_RULE
1436 , CEILING_NAME
1437 , RECOVERABLE_COST
1438 , ADJUSTED_CAPACITY
1439 , FULLY_RSVD_REVALS_COUNTER
1440 , IDLED_FLAG
1441 , PERIOD_COUNTER_CAPITALIZED
1442 , PERIOD_COUNTER_FULLY_RESERVED
1443 , PERIOD_COUNTER_FULLY_RETIRED
1444 , PRODUCTION_CAPACITY
1445 , REVAL_AMORTIZATION_BASIS
1446 , REVAL_CEILING
1447 , UNIT_OF_MEASURE
1448 , UNREVALUED_COST
1449 , ANNUAL_DEPRN_ROUNDING_FLAG
1450 , PERCENT_SALVAGE_VALUE
1451 , ALLOWED_DEPRN_LIMIT
1452 , ALLOWED_DEPRN_LIMIT_AMOUNT
1453 , PERIOD_COUNTER_LIFE_COMPLETE
1454 , ADJUSTED_RECOVERABLE_COST
1455 , ANNUAL_ROUNDING_FLAG
1456 , GLOBAL_ATTRIBUTE1
1457 , GLOBAL_ATTRIBUTE2
1458 , GLOBAL_ATTRIBUTE3
1459 , GLOBAL_ATTRIBUTE4
1460 , GLOBAL_ATTRIBUTE5
1461 , GLOBAL_ATTRIBUTE6
1462 , GLOBAL_ATTRIBUTE7
1463 , GLOBAL_ATTRIBUTE8
1464 , GLOBAL_ATTRIBUTE9
1465 , GLOBAL_ATTRIBUTE10
1466 , GLOBAL_ATTRIBUTE11
1467 , GLOBAL_ATTRIBUTE12
1468 , GLOBAL_ATTRIBUTE13
1469 , GLOBAL_ATTRIBUTE14
1470 , GLOBAL_ATTRIBUTE15
1471 , GLOBAL_ATTRIBUTE16
1472 , GLOBAL_ATTRIBUTE17
1473 , GLOBAL_ATTRIBUTE18
1474 , GLOBAL_ATTRIBUTE19
1475 , GLOBAL_ATTRIBUTE20
1476 , GLOBAL_ATTRIBUTE_CATEGORY
1477 , EOFY_ADJ_COST
1478 , EOFY_FORMULA_FACTOR
1479 , SHORT_FISCAL_YEAR_FLAG
1480 , CONVERSION_DATE
1481 , ORIGINAL_DEPRN_START_DATE
1482 , REMAINING_LIFE1
1483 , REMAINING_LIFE2
1484 , OLD_ADJUSTED_COST
1485 , formula_factor --FORMULA_FACTOR
1486 , GROUP_ASSET_ID
1487 , SALVAGE_TYPE
1488 , DEPRN_LIMIT_TYPE
1489 , REDUCTION_RATE
1490 , REDUCE_ADDITION_FLAG
1491 , REDUCE_ADJUSTMENT_FLAG
1492 , REDUCE_RETIREMENT_FLAG
1493 , RECOGNIZE_GAIN_LOSS
1494 , RECAPTURE_RESERVE_FLAG
1495 , LIMIT_PROCEEDS_FLAG
1496 , TERMINAL_GAIN_LOSS
1497 , TRACKING_METHOD
1498 , EXCLUDE_FULLY_RSV_FLAG
1499 , EXCESS_ALLOCATION_OPTION
1500 , DEPRECIATION_OPTION
1501 , MEMBER_ROLLUP_FLAG
1502 , ALLOCATE_TO_FULLY_RSV_FLAG
1503 , ALLOCATE_TO_FULLY_RET_FLAG
1504 , TERMINAL_GAIN_LOSS_AMOUNT
1505 , CIP_COST
1506 , YTD_PROCEEDS
1507 , LTD_PROCEEDS
1508 , LTD_COST_OF_REMOVAL
1509 , eofy_reserve --EOFY_RESERVE
1510 , PRIOR_EOFY_RESERVE
1511 , EOP_ADJ_COST
1512 , EOP_FORMULA_FACTOR
1513 , EXCLUDE_PROCEEDS_FROM_BASIS
1514 , RETIREMENT_DEPRN_OPTION
1515 , TERMINAL_GAIN_LOSS_FLAG
1516 , SUPER_GROUP_ID
1517 , OVER_DEPRECIATE_OPTION
1518 , DISABLED_FLAG
1519 , CASH_GENERATING_UNIT_ID
1520 , RATE_IN_USE
1521 FROM FA_MC_BOOKS
1522 WHERE TRANSACTION_HEADER_ID_out = p_thid
1523 AND SET_OF_BOOKS_ID = p_set_of_books_id ;
1524 else
1525 INSERT INTO FA_BOOKS( BOOK_TYPE_CODE
1526 , ASSET_ID
1527 , DATE_PLACED_IN_SERVICE
1528 , DATE_EFFECTIVE
1529 , DEPRN_START_DATE
1530 , DEPRN_METHOD_CODE
1531 , LIFE_IN_MONTHS
1532 , RATE_ADJUSTMENT_FACTOR
1533 , ADJUSTED_COST
1534 , COST
1535 , ORIGINAL_COST
1536 , SALVAGE_VALUE
1537 , PRORATE_CONVENTION_CODE
1538 , PRORATE_DATE
1539 , COST_CHANGE_FLAG
1540 , ADJUSTMENT_REQUIRED_STATUS
1541 , CAPITALIZE_FLAG
1542 , RETIREMENT_PENDING_FLAG
1543 , DEPRECIATE_FLAG
1544 , LAST_UPDATE_DATE
1545 , LAST_UPDATED_BY
1546 , TRANSACTION_HEADER_ID_IN
1547 , ITC_AMOUNT_ID
1548 , ITC_AMOUNT
1549 , RETIREMENT_ID
1550 , TAX_REQUEST_ID
1551 , ITC_BASIS
1552 , BASIC_RATE
1553 , ADJUSTED_RATE
1554 , BONUS_RULE
1555 , CEILING_NAME
1556 , RECOVERABLE_COST
1557 , ADJUSTED_CAPACITY
1558 , FULLY_RSVD_REVALS_COUNTER
1559 , IDLED_FLAG
1560 , PERIOD_COUNTER_CAPITALIZED
1561 , PERIOD_COUNTER_FULLY_RESERVED
1562 , PERIOD_COUNTER_FULLY_RETIRED
1563 , PRODUCTION_CAPACITY
1564 , REVAL_AMORTIZATION_BASIS
1565 , REVAL_CEILING
1566 , UNIT_OF_MEASURE
1567 , UNREVALUED_COST
1568 , ANNUAL_DEPRN_ROUNDING_FLAG
1569 , PERCENT_SALVAGE_VALUE
1570 , ALLOWED_DEPRN_LIMIT
1571 , ALLOWED_DEPRN_LIMIT_AMOUNT
1572 , PERIOD_COUNTER_LIFE_COMPLETE
1573 , ADJUSTED_RECOVERABLE_COST
1574 , ANNUAL_ROUNDING_FLAG
1575 , GLOBAL_ATTRIBUTE1
1576 , GLOBAL_ATTRIBUTE2
1577 , GLOBAL_ATTRIBUTE3
1578 , GLOBAL_ATTRIBUTE4
1579 , GLOBAL_ATTRIBUTE5
1580 , GLOBAL_ATTRIBUTE6
1581 , GLOBAL_ATTRIBUTE7
1582 , GLOBAL_ATTRIBUTE8
1583 , GLOBAL_ATTRIBUTE9
1584 , GLOBAL_ATTRIBUTE10
1585 , GLOBAL_ATTRIBUTE11
1586 , GLOBAL_ATTRIBUTE12
1587 , GLOBAL_ATTRIBUTE13
1588 , GLOBAL_ATTRIBUTE14
1589 , GLOBAL_ATTRIBUTE15
1590 , GLOBAL_ATTRIBUTE16
1591 , GLOBAL_ATTRIBUTE17
1592 , GLOBAL_ATTRIBUTE18
1593 , GLOBAL_ATTRIBUTE19
1594 , GLOBAL_ATTRIBUTE20
1595 , GLOBAL_ATTRIBUTE_CATEGORY
1596 , EOFY_ADJ_COST
1597 , EOFY_FORMULA_FACTOR
1598 , SHORT_FISCAL_YEAR_FLAG
1599 , CONVERSION_DATE
1600 , ORIGINAL_DEPRN_START_DATE
1601 , REMAINING_LIFE1
1602 , REMAINING_LIFE2
1603 , OLD_ADJUSTED_COST
1604 , FORMULA_FACTOR
1605 , GROUP_ASSET_ID
1606 , SALVAGE_TYPE
1607 , DEPRN_LIMIT_TYPE
1608 , REDUCTION_RATE
1609 , REDUCE_ADDITION_FLAG
1610 , REDUCE_ADJUSTMENT_FLAG
1611 , REDUCE_RETIREMENT_FLAG
1612 , RECOGNIZE_GAIN_LOSS
1613 , RECAPTURE_RESERVE_FLAG
1614 , LIMIT_PROCEEDS_FLAG
1615 , TERMINAL_GAIN_LOSS
1616 , TRACKING_METHOD
1617 , EXCLUDE_FULLY_RSV_FLAG
1618 , EXCESS_ALLOCATION_OPTION
1619 , DEPRECIATION_OPTION
1620 , MEMBER_ROLLUP_FLAG
1621 , ALLOCATE_TO_FULLY_RSV_FLAG
1622 , ALLOCATE_TO_FULLY_RET_FLAG
1623 , TERMINAL_GAIN_LOSS_AMOUNT
1624 , CIP_COST
1625 , YTD_PROCEEDS
1626 , LTD_PROCEEDS
1627 , LTD_COST_OF_REMOVAL
1628 , EOFY_RESERVE
1629 , PRIOR_EOFY_RESERVE
1630 , EOP_ADJ_COST
1631 , EOP_FORMULA_FACTOR
1632 , EXCLUDE_PROCEEDS_FROM_BASIS
1633 , RETIREMENT_DEPRN_OPTION
1634 , TERMINAL_GAIN_LOSS_FLAG
1635 , SUPER_GROUP_ID
1636 , OVER_DEPRECIATE_OPTION
1637 , DISABLED_FLAG
1638 , CASH_GENERATING_UNIT_ID
1639 , RATE_IN_USE
1640 ) SELECT BOOK_TYPE_CODE
1641 , ASSET_ID
1642 , DATE_PLACED_IN_SERVICE
1643 , SYSDATE -- DATE_EFFECTIVE
1644 , DEPRN_START_DATE
1645 , DEPRN_METHOD_CODE
1646 , LIFE_IN_MONTHS
1647 , RATE_ADJUSTMENT_FACTOR --RATE_ADJUSTMENT_FACTOR
1648 , ADJUSTED_COST -- ADJUSTED_COST
1649 , COST
1650 , ORIGINAL_COST
1651 , SALVAGE_VALUE
1652 , PRORATE_CONVENTION_CODE
1653 , PRORATE_DATE
1654 , COST_CHANGE_FLAG
1655 , ADJUSTMENT_REQUIRED_STATUS
1656 , CAPITALIZE_FLAG
1657 , RETIREMENT_PENDING_FLAG
1658 , DEPRECIATE_FLAG
1659 , sysdate -- LAST_UPDATE_DATE
1660 , fnd_global.user_id -- LAST_UPDATED_BY
1661 , l_thid -- TRANSACTION_HEADER_ID_IN
1662 , ITC_AMOUNT_ID
1663 , ITC_AMOUNT
1664 , RETIREMENT_ID
1665 , TAX_REQUEST_ID
1666 , ITC_BASIS
1667 , BASIC_RATE
1668 , ADJUSTED_RATE
1669 , BONUS_RULE
1670 , CEILING_NAME
1671 , RECOVERABLE_COST
1672 , ADJUSTED_CAPACITY
1673 , FULLY_RSVD_REVALS_COUNTER
1674 , IDLED_FLAG
1675 , PERIOD_COUNTER_CAPITALIZED
1676 , PERIOD_COUNTER_FULLY_RESERVED
1677 , PERIOD_COUNTER_FULLY_RETIRED
1678 , PRODUCTION_CAPACITY
1679 , REVAL_AMORTIZATION_BASIS
1680 , REVAL_CEILING
1681 , UNIT_OF_MEASURE
1682 , UNREVALUED_COST
1683 , ANNUAL_DEPRN_ROUNDING_FLAG
1684 , PERCENT_SALVAGE_VALUE
1685 , ALLOWED_DEPRN_LIMIT
1686 , ALLOWED_DEPRN_LIMIT_AMOUNT
1687 , PERIOD_COUNTER_LIFE_COMPLETE
1688 , ADJUSTED_RECOVERABLE_COST
1689 , ANNUAL_ROUNDING_FLAG
1690 , GLOBAL_ATTRIBUTE1
1691 , GLOBAL_ATTRIBUTE2
1692 , GLOBAL_ATTRIBUTE3
1693 , GLOBAL_ATTRIBUTE4
1694 , GLOBAL_ATTRIBUTE5
1695 , GLOBAL_ATTRIBUTE6
1696 , GLOBAL_ATTRIBUTE7
1697 , GLOBAL_ATTRIBUTE8
1698 , GLOBAL_ATTRIBUTE9
1699 , GLOBAL_ATTRIBUTE10
1700 , GLOBAL_ATTRIBUTE11
1701 , GLOBAL_ATTRIBUTE12
1702 , GLOBAL_ATTRIBUTE13
1703 , GLOBAL_ATTRIBUTE14
1704 , GLOBAL_ATTRIBUTE15
1705 , GLOBAL_ATTRIBUTE16
1706 , GLOBAL_ATTRIBUTE17
1707 , GLOBAL_ATTRIBUTE18
1708 , GLOBAL_ATTRIBUTE19
1709 , GLOBAL_ATTRIBUTE20
1710 , GLOBAL_ATTRIBUTE_CATEGORY
1711 , EOFY_ADJ_COST
1712 , EOFY_FORMULA_FACTOR
1713 , SHORT_FISCAL_YEAR_FLAG
1714 , CONVERSION_DATE
1715 , ORIGINAL_DEPRN_START_DATE
1716 , REMAINING_LIFE1
1717 , REMAINING_LIFE2
1718 , OLD_ADJUSTED_COST
1719 , formula_factor --FORMULA_FACTOR
1720 , GROUP_ASSET_ID
1721 , SALVAGE_TYPE
1722 , DEPRN_LIMIT_TYPE
1723 , REDUCTION_RATE
1724 , REDUCE_ADDITION_FLAG
1725 , REDUCE_ADJUSTMENT_FLAG
1726 , REDUCE_RETIREMENT_FLAG
1727 , RECOGNIZE_GAIN_LOSS
1728 , RECAPTURE_RESERVE_FLAG
1729 , LIMIT_PROCEEDS_FLAG
1730 , TERMINAL_GAIN_LOSS
1731 , TRACKING_METHOD
1732 , EXCLUDE_FULLY_RSV_FLAG
1733 , EXCESS_ALLOCATION_OPTION
1734 , DEPRECIATION_OPTION
1735 , MEMBER_ROLLUP_FLAG
1736 , ALLOCATE_TO_FULLY_RSV_FLAG
1737 , ALLOCATE_TO_FULLY_RET_FLAG
1738 , TERMINAL_GAIN_LOSS_AMOUNT
1739 , CIP_COST
1740 , YTD_PROCEEDS
1741 , LTD_PROCEEDS
1742 , LTD_COST_OF_REMOVAL
1743 , eofy_reserve --EOFY_RESERVE
1744 , PRIOR_EOFY_RESERVE
1745 , EOP_ADJ_COST
1746 , EOP_FORMULA_FACTOR
1747 , EXCLUDE_PROCEEDS_FROM_BASIS
1748 , RETIREMENT_DEPRN_OPTION
1749 , TERMINAL_GAIN_LOSS_FLAG
1750 , SUPER_GROUP_ID
1751 , OVER_DEPRECIATE_OPTION
1752 , DISABLED_FLAG
1753 , CASH_GENERATING_UNIT_ID
1754 , RATE_IN_USE
1755 FROM FA_BOOKS
1756 WHERE TRANSACTION_HEADER_ID_out = p_thid;
1757 end if;
1758 if (p_mrc_sob_type_code = 'R') then
1759 open c_mrc_adjustments(p_thid => p_thid);
1760 else
1761 open c_adjustments(p_thid => p_thid);
1762 end if;
1763
1764 loop
1765 if (p_mrc_sob_type_code = 'R') then
1766 fetch c_mrc_adjustments
1767 into l_adj_row_rec.code_combination_id ,
1768 l_adj_row_rec.distribution_id ,
1769 l_adj_row_rec.debit_credit_flag ,
1770 l_adj_row_rec.adjustment_amount ,
1771 l_adj_row_rec.adjustment_type ,
1772 l_adj_row_rec.source_type_code ,
1773 l_current_units;
1774 else
1775 fetch c_adjustments
1776 into l_adj_row_rec.code_combination_id ,
1777 l_adj_row_rec.distribution_id ,
1778 l_adj_row_rec.debit_credit_flag ,
1779 l_adj_row_rec.adjustment_amount ,
1780 l_adj_row_rec.adjustment_type ,
1781 l_adj_row_rec.source_type_code ,
1782 l_current_units;
1783 end if;
1784
1785 if (p_mrc_sob_type_code = 'R') then
1786 EXIT WHEN c_mrc_adjustments%NOTFOUND;
1787 else
1788 EXIT WHEN c_adjustments%NOTFOUND;
1789 end if;
1790
1791
1792 l_adj.transaction_header_id := l_thid;
1793 l_adj.asset_id := p_asset_id;
1794 l_adj.book_type_code := p_book_type_code;
1795 l_adj.period_counter_created := l_period_rec.period_counter;
1796 l_adj.period_counter_adjusted := l_period_rec.period_counter;
1797 l_adj.current_units := l_current_units;
1798 l_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_SINGLE;
1799 l_adj.selection_thid := 0;
1800 l_adj.selection_retid := 0;
1801 l_adj.leveling_flag := FALSE;
1802 l_adj.last_update_date := sysdate ; --px_trans_rec.who_info.last_update_date;
1803
1804 l_adj.gen_ccid_flag := FALSE;
1805 l_adj.annualized_adjustment := 0;
1806 l_adj.asset_invoice_id := 0;
1807 l_adj.code_combination_id := l_adj_row_rec.code_combination_id;
1808 l_adj.distribution_id := l_adj_row_rec.distribution_id;
1809
1810 l_adj.adjustment_amount := l_adj_row_rec.adjustment_amount;
1811 l_adj.flush_adj_flag := FALSE;
1812 l_adj.adjustment_type := l_adj_row_rec.adjustment_type;
1813 l_adj.source_type_code := l_adj_row_rec.source_type_code;
1814 l_adj.set_of_books_id := p_set_of_books_id; -- RER12
1815 if (l_adj_row_rec.debit_credit_flag = 'DR') then
1816 l_adj.debit_credit_flag := 'CR';
1817 else
1818 l_adj.debit_credit_flag := 'DR';
1819 end if;
1820
1821 l_adj.account := NULL;
1822
1823 if (l_adj_row_rec.adjustment_type = 'IMPAIR RESERVE') then
1824 l_adj.account_type := 'IMPAIR_RESERVE_ACCT';
1825 elsif (l_adj_row_rec.adjustment_type = 'IMPAIR EXPENSE') then
1826 l_adj.account_type := 'IMPAIR_EXPENSE_ACCT';
1827 elsif (l_adj_row_rec.adjustment_type = 'REVAL RESERVE') then
1828 l_adj.account_type := 'REVAL_RESERVE_ACCT';
1829 elsif (l_adj_row_rec.adjustment_type = 'CAPITAL ADJ') then
1830 l_adj.account_type := 'CAPITAL_ADJ_ACCT';
1831 elsif (l_adj_row_rec.adjustment_type = 'GENERAL FUND') then
1832 l_adj.account_type := 'GENERAL_FUND_ACCT';
1833 end if;
1834
1835 l_adj.mrc_sob_type_code := p_mrc_sob_type_code;
1836
1837 if not FA_INS_ADJUST_PKG.faxinaj
1838 (l_adj,
1839 sysdate,
1840 l_login_id,
1841 l_login_id
1842 ,p_log_level_rec => p_log_level_rec) then
1843 raise rb_err;
1844 end if;
1845
1846 end loop;
1847 -- now flush the rows to db
1848 l_adj.transaction_header_id := 0;
1849 l_adj.flush_adj_flag := TRUE;
1850 l_adj.leveling_flag := TRUE;
1851
1852 if not FA_INS_ADJUST_PKG.faxinaj
1853 (l_adj,
1854 sysdate,
1855 l_login_id,
1856 l_login_id
1857 ,p_log_level_rec => p_log_level_rec) then
1858 raise rb_err;
1859 end if;
1860
1861 if (p_mrc_sob_type_code = 'R') then
1862 close c_mrc_adjustments;
1863 else
1864 close c_adjustments;
1865 end if;
1866 /* not sure whether we need to update event_id to null for impairment transaction if event is already processed.*/
1867
1868 end if;--Event status
1869 elsif (l_event_id is null and p_mrc_sob_type_code = 'R') then
1870 /*if event is already deleted for primary currency,this block will execute for reporting currency */
1871 delete from fa_mc_books
1872 where transaction_header_id_out is null
1873 and transaction_header_id_in = p_thid
1874 and book_type_code = p_book_type_code
1875 and asset_id = p_asset_id
1876 and set_of_books_id = p_set_of_books_id;
1877
1878 delete from fa_mc_adjustments
1879 where transaction_header_id = p_thid
1880 and asset_id = p_asset_id
1881 and book_type_code = p_book_type_code
1882 and period_counter_created = l_period_rec.period_counter
1883 and set_of_books_id = p_set_of_books_id;
1884
1885 update fa_mc_books
1886 set date_ineffective = null
1887 , transaction_header_id_out = null
1888 where asset_id = p_asset_id
1889 and book_type_code = p_book_type_code
1890 and transaction_header_id_out = p_thid
1891 and set_of_books_id = p_set_of_books_id;
1892
1893 end if;-- Event id not null
1894 if (p_log_level_rec.statement_level) then
1895 fa_debug_pkg.add(l_calling_fn,'rollback_impair_event ','Ends',p_log_level_rec => p_log_level_rec);
1896 end if;
1897 return true;
1898 EXCEPTION
1899
1900 WHEN rb_ERR THEN
1901 fa_srvr_msg.add_message(calling_fn => l_calling_fn,
1902 p_log_level_rec => p_log_level_rec); -- Bug:5475024
1903 return FALSE;
1904
1905 WHEN OTHERS THEN
1906 fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn,
1907 p_log_level_rec => p_log_level_rec); -- Bug:5475024
1908 return FALSE;
1909 End rollback_impair_event;
1910
1911 END FA_IMPAIRMENT_DELETE_PVT;