DBA Data[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;