DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_DEPRN_EVENTS_PKG

Source


1 package body FA_DEPRN_EVENTS_PKG as
2 /* $Header: fadpevnb.pls 120.19.12020000.4 2012/12/04 18:23:16 spooyath ship $   */
3 
4 g_log_level_rec fa_api_types.log_level_rec_type;
5 
6 PROCEDURE process_deprn_events
7            (p_book_type_code varchar2,
8             p_period_counter number,
9             p_total_requests NUMBER,
10             p_request_number NUMBER,
11             p_close_period   NUMBER,
12             x_return_status  OUT NOCOPY number) IS
13 
14   l_asset_id_tbl FA_XLA_EVENTS_PVT.number_tbl_type;
15   l_rowid_tbl    rowid_tbl_type;
16   l_event_id_tbl FA_XLA_EVENTS_PVT.number_tbl_type;
17   l_event_date   date;
18 
19   l_sob_index    number;
20   l_sob_tbl      fa_cache_pkg.fazcrsob_sob_tbl_type;
21 
22   l_batch_size   number;
23   l_calling_fn   varchar2(60) := 'FA_DEPRN_EVENTS_PKG.process_deprn_events';
24 
25   error_found exception;
26 
27   CURSOR DEPRN_EVENTS (p_book_type_code varchar2,
28                        p_period_counter number
29 ) IS
30   select rowid,
31          asset_id
32     from fa_deprn_summary
33    where book_type_code = p_book_type_code
34      and period_counter = p_period_counter
35      and event_id      is null
36      and (deprn_amount - deprn_adjustment_amount <> 0 or
37           reval_amortization <> 0)
38      and MOD(asset_id, p_total_requests) = (p_request_number - 1)
39      and deprn_source_code        <> 'TRACK';
40 
41   CURSOR MC_DEPRN_EVENTS (p_set_of_books_id number,
42                           p_book_type_code  varchar2,
43                           p_period_counter  number
44 ) IS
45   select rowid,
46          asset_id
47     from fa_mc_deprn_summary
48    where set_of_books_id = p_set_of_books_id
49      and book_type_code  = p_book_type_code
50      and period_counter  = p_period_counter
51      and event_id       is null
52      and (deprn_amount - deprn_adjustment_amount <> 0 or
53           reval_amortization <> 0)
54      and MOD(asset_id, p_total_requests) = (p_request_number - 1)
55      and deprn_source_code        <> 'TRACK';
56 
57    l_deprn_run_id number;
58 
59    --Secondary Changes
60    l_secondary_sob_id number;
61    l_secondary_event_id_tbl FA_XLA_EVENTS_PVT.number_tbl_type;
62    l_secondary_deprn_run_id number;
63 
64 BEGIN
65 
66    if (not g_log_level_rec.initialized) then
67       if (NOT fa_util_pub.get_log_level_rec (
68                 x_log_level_rec =>  g_log_level_rec
69       )) then
70          raise error_found;
71       end if;
72    end if;
73 
74    -- clear the debug stack for each line
75    FA_DEBUG_PKG.Initialize;
76 
77    if (g_log_level_rec.statement_level) then
78       fa_debug_pkg.add(l_calling_fn, 'at ', 'begin' ,p_log_level_rec => g_log_level_rec);
79    end if;
80 
81    if not fa_cache_pkg.fazcbc(X_book => p_book_type_code,
82                               p_log_level_rec => g_log_level_rec) then
83       raise error_found;
84    end if;
85 
86    if not fa_cache_pkg.fazcdp(x_book_type_code  => p_book_type_code,
87                               x_period_counter  => p_period_counter,
88                               x_effective_date  => null,
89                               p_log_level_rec => g_log_level_rec) then
90       raise error_found;
91    end if;
92 
93    if (g_log_level_rec.statement_level) then
94       fa_debug_pkg.add(l_calling_fn, 'setting ', 'batch size',
95                        p_log_level_rec => g_log_level_rec);
96    end if;
97 
98    l_batch_size := nvl(fa_cache_pkg.fa_batch_size, 200);
99 
100    select fa_deprn_summary_s.nextval
101      into l_deprn_run_id
102      from dual;
103 
104    if (g_log_level_rec.statement_level) then
105       fa_debug_pkg.add(l_calling_fn, 'initializing', 'debug stack',
106                        p_log_level_rec => g_log_level_rec);
107    end if;
108 
109    if (g_log_level_rec.statement_level) then
110       fa_debug_pkg.add(l_calling_fn, 'opening', 'deprn_events cursor',
111                        p_log_level_rec => g_log_level_rec);
112    end if;
113 
114    OPEN deprn_events(p_book_type_code  => p_book_type_code,
115                      p_period_counter  => p_period_counter);
116 
117    loop
118 
119       if (g_log_level_rec.statement_level) then
120          fa_debug_pkg.add(l_calling_fn, 'in', 'loop',
121                           p_log_level_rec => g_log_level_rec);
122       end if;
123 
124       FETCH deprn_events bulk collect
125        into l_rowid_tbl,
126             l_asset_id_tbl
127       LIMIT l_batch_size;
128 
129       if (g_log_level_rec.statement_level) then
130          fa_debug_pkg.add(l_calling_fn, 'l_asset_id_tbl.count', l_asset_id_tbl.count,
131                           p_log_level_rec => g_log_level_rec);
132       end if;
133 
134       if (l_asset_id_tbl.count = 0) then
135          exit;
136       end if;
137 
138       if (g_log_level_rec.statement_level) then
139          fa_debug_pkg.add(l_calling_fn, 'calling', 'xla event api',
140                           p_log_level_rec => g_log_level_rec);
141       end if;
142 
143       l_event_date :=
144          greatest(fa_cache_pkg.fazcdp_record.calendar_period_open_date,
145                   least(nvl(fa_cache_pkg.fazcdp_record.calendar_period_close_date,
146                             sysdate),
147                         sysdate));
148 
149       fa_xla_events_pvt.create_bulk_deprn_event
150            (p_asset_id_tbl      => l_asset_id_tbl,
151             p_book_type_code    => p_book_type_code,
152             p_period_counter    => p_period_counter,
153             p_period_close_date => l_event_date,
154             p_deprn_run_id      => l_deprn_run_id,
155             p_entity_type_code  => 'DEPRECIATION',
156             x_event_id_tbl      => l_event_id_tbl,
157             p_calling_fn        => l_calling_fn,
158             p_log_level_rec     => g_log_level_rec);
159 
160       if (g_log_level_rec.statement_level) then
161          fa_debug_pkg.add(l_calling_fn, 'performing', 'bulk update - primary',
162                           p_log_level_rec => g_log_level_rec);
163       end if;
164 
165       FORALL l_count in 1..l_asset_id_tbl.count
166        UPDATE FA_DEPRN_SUMMARY
167           SET event_id          = l_event_id_tbl(l_count),
168               deprn_run_id      = l_deprn_run_id
169         WHERE rowid             = l_rowid_tbl(l_count);
170 
171       FORALL l_count in 1..l_asset_id_tbl.count
172        UPDATE FA_DEPRN_DETAIL
173           SET event_id          = l_event_id_tbl(l_count),
174               deprn_run_id      = l_deprn_run_id
175         WHERE asset_id          = l_asset_id_tbl(l_count)
176           AND book_type_code    = p_book_type_code
177           AND period_counter    = p_period_counter;
178 
179       if (g_log_level_rec.statement_level) then
180          fa_debug_pkg.add(l_calling_fn, 'performing', 'bulk update - reporting',
181                           p_log_level_rec => g_log_level_rec);
182       end if;
183 
184       -- now process all matching mrc rows
185       FORALL l_count in 1..l_asset_id_tbl.count
186        UPDATE FA_MC_DEPRN_SUMMARY
187           SET event_id          = l_event_id_tbl(l_count),
188               deprn_run_id      = l_deprn_run_id
189         WHERE asset_id          = l_asset_id_tbl(l_count)
190           AND book_type_code    = p_book_type_code
191           AND period_counter    = p_period_counter;
192 
193       FORALL l_count in 1..l_asset_id_tbl.count
194        UPDATE FA_MC_DEPRN_DETAIL
195           SET event_id          = l_event_id_tbl(l_count),
196               deprn_run_id      = l_deprn_run_id
197         WHERE asset_id          = l_asset_id_tbl(l_count)
198           AND book_type_code    = p_book_type_code
199           AND period_counter    = p_period_counter;
200 
201       if (g_log_level_rec.statement_level) then
202          fa_debug_pkg.add(l_calling_fn, 'done', 'bulk updates',
203                           p_log_level_rec => g_log_level_rec);
204       end if;
205 
206       FORALL l_count in 1..l_asset_id_tbl.count
207       INSERT into fa_deprn_events
208           (asset_id            ,
209            book_type_code      ,
210            period_counter      ,
211            deprn_run_id        ,
212            deprn_run_date      ,
213            event_id            ,
214            reversal_event_id
215            )
216        VALUES
217           (l_asset_id_tbl(l_count),
218            p_book_type_code,
219            p_period_counter,
220            l_deprn_run_id,
221            sysdate,
222            l_event_id_tbl(l_count),
223            null);
224 
225       if (g_log_level_rec.statement_level) then
226          fa_debug_pkg.add(l_calling_fn, 'done', 'bulk insert',
227                           p_log_level_rec => g_log_level_rec);
228       end if;
229 
230       commit;
231 
232       --Secondary Changes
233       l_secondary_sob_id := FA_XLA_EVENTS_PVT.get_secondary_sob_id(p_book_type_code);
234       if(l_secondary_sob_id is not null) then
235 
236           if (g_log_level_rec.statement_level) then
237              fa_debug_pkg.add(l_calling_fn, 'before', 'secondary bulk insert',
238                               p_log_level_rec => g_log_level_rec);
239           end if;
240 
241           select fa_deprn_summary_s.nextval
242             into l_secondary_deprn_run_id
243             from dual;
244 
245           fa_xla_events_pvt.create_bulk_deprn_event
246                (p_asset_id_tbl      => l_asset_id_tbl,
247                 p_book_type_code    => p_book_type_code,
248                 p_period_counter    => p_period_counter,
249                 p_period_close_date => l_event_date,
250                 p_deprn_run_id      =>   l_secondary_deprn_run_id,
251                 p_entity_type_code  => 'DEPRECIATION',
252                 p_secondary_sob_id  => l_secondary_sob_id,
253                 x_event_id_tbl      => l_secondary_event_id_tbl,
254                 p_calling_fn        => l_calling_fn,
255                 p_log_level_rec     => g_log_level_rec);
256 
257           if (g_log_level_rec.statement_level) then
258              fa_debug_pkg.add(l_calling_fn, 'after', 'secondary bulk insert',
259                               p_log_level_rec => g_log_level_rec);
260           end if;
261 
262               FORALL l_count in 1..l_asset_id_tbl.count
263                UPDATE FA_MC_DEPRN_SUMMARY
264                   SET event_id       = l_secondary_event_id_tbl(l_count),
265                       deprn_run_id   = l_secondary_deprn_run_id
266                 WHERE asset_id       = l_asset_id_tbl(l_count)
267                   AND book_type_code = p_book_type_code
268                   AND period_counter = p_period_counter
269                   and set_of_books_id = l_secondary_sob_id;
270 
271               FORALL l_count in 1..l_asset_id_tbl.count
272                UPDATE FA_MC_DEPRN_DETAIL
273                   SET event_id       = l_secondary_event_id_tbl(l_count),
274                       deprn_run_id   = l_secondary_deprn_run_id
275                 WHERE asset_id       = l_asset_id_tbl(l_count)
276                   AND book_type_code = p_book_type_code
277                   AND period_counter = p_period_counter
278                   and set_of_books_id = l_secondary_sob_id;
279 
280       end if;
281       commit;
282 
283    end loop;
284 
285    CLOSE deprn_events;
286 
287    -- now find any mrc rows which are not processed yet and update
288    if not FA_CACHE_PKG.fazcrsob
289           (x_book_type_code => p_book_type_code,
290            x_sob_tbl        => l_sob_tbl,
291            p_log_level_rec => g_log_level_rec) then
292       raise error_found;
293    end if;
294 
295    -- begin at index of 1 not 0 as in apis
296    FOR l_sob_index in 1..l_sob_tbl.count LOOP
297 
298       if (g_log_level_rec.statement_level) then
299          fa_debug_pkg.add(l_calling_fn, 'opening mc_deprn_events for sob', l_sob_tbl(l_sob_index),
300                           p_log_level_rec => g_log_level_rec);
301       end if;
302 
303       OPEN mc_deprn_events(p_set_of_books_id => l_sob_tbl(l_sob_index),
304                            p_book_type_code  => p_book_type_code,
305                            p_period_counter  => p_period_counter);
306 
307       loop
308 
309          if (g_log_level_rec.statement_level) then
310             fa_debug_pkg.add(l_calling_fn, 'in', 'mrc loop',
311                              p_log_level_rec => g_log_level_rec);
312          end if;
313 
314          FETCH mc_deprn_events bulk collect
315           into l_rowid_tbl,
316                l_asset_id_tbl
317          LIMIT l_batch_size;
318 
319          if (g_log_level_rec.statement_level) then
320             fa_debug_pkg.add(l_calling_fn, 'l_asset_id_tbl.count', l_asset_id_tbl.count,
321                              p_log_level_rec => g_log_level_rec);
322          end if;
323 
324          if (l_asset_id_tbl.count = 0) then
325             exit;
326          end if;
327 
328          -- Bug 13481113 : Using fa_deprn_periods open and close dates as they
329          --                should match mc values instead of sysdate
330          l_event_date :=
331             greatest(fa_cache_pkg.fazcdp_record.calendar_period_open_date,
332                      least(nvl(fa_cache_pkg.fazcdp_record.calendar_period_close_date,
333                                sysdate),
334                            sysdate));
335 
336          if (g_log_level_rec.statement_level) then
337             fa_debug_pkg.add(l_calling_fn, 'calling', 'xla event api',
338                              p_log_level_rec => g_log_level_rec);
339          end if;
340 
341          fa_xla_events_pvt.create_bulk_deprn_event
342               (p_asset_id_tbl      => l_asset_id_tbl,
343                p_book_type_code    => p_book_type_code,
344                p_period_counter    => p_period_counter,
345                p_period_close_date => l_event_date,
346                p_deprn_run_id      => l_deprn_run_id,
347                p_entity_type_code  => 'DEPRECIATION',
348                x_event_id_tbl      => l_event_id_tbl,
349                p_calling_fn        => l_calling_fn,
350                p_log_level_rec     => g_log_level_rec);
351 
352          if (g_log_level_rec.statement_level) then
353             fa_debug_pkg.add(l_calling_fn, 'performing', 'bulk update - reporting1',
354                              p_log_level_rec => g_log_level_rec);
355          end if;
356 
357          FORALL l_count in 1..l_asset_id_tbl.count
358          UPDATE FA_MC_DEPRN_SUMMARY
359             SET event_id          = l_event_id_tbl(l_count),
360                 deprn_run_id      = l_deprn_run_id
361           WHERE rowid             = l_rowid_tbl(l_count);
362 
363          FORALL l_count in 1..l_asset_id_tbl.count
364          UPDATE FA_MC_DEPRN_DETAIL
365             SET event_id          = l_event_id_tbl(l_count),
366                 deprn_run_id      = l_deprn_run_id
367           WHERE asset_id          = l_asset_id_tbl(l_count)
368             AND book_type_code    = p_book_type_code
369             AND period_counter    = p_period_counter;
370 
371          if (g_log_level_rec.statement_level) then
372             fa_debug_pkg.add(l_calling_fn, 'performing', 'bulk update - reporting2',
373                              p_log_level_rec => g_log_level_rec);
374          end if;
375 
376          -- now process all matching mrc rows for summary
377          FORALL l_count in 1..l_asset_id_tbl.count
378          UPDATE FA_MC_DEPRN_SUMMARY
379             SET event_id          = l_event_id_tbl(l_count),
380                 deprn_run_id      = l_deprn_run_id
381           WHERE set_of_books_id  <> l_sob_tbl(l_sob_index)
382             AND asset_id          = l_asset_id_tbl(l_count)
383             AND book_type_code    = p_book_type_code
384             AND period_counter    = p_period_counter;
385 
386          if (g_log_level_rec.statement_level) then
387             fa_debug_pkg.add(l_calling_fn, 'done', 'mc bulk updates',
388                              p_log_level_rec => g_log_level_rec);
389          end if;
390 
391          FORALL l_count in 1..l_asset_id_tbl.count
392          INSERT into fa_deprn_events
393              (asset_id            ,
394               book_type_code      ,
395               period_counter      ,
396               deprn_run_id        ,
397               deprn_run_date      ,
398               event_id            ,
399               reversal_event_id
400               )
401           VALUES
402              (l_asset_id_tbl(l_count),
403               p_book_type_code,
404               p_period_counter,
405               l_deprn_run_id,
406               sysdate,
407               l_event_id_tbl(l_count),
408               null);
409 
410          if (g_log_level_rec.statement_level) then
411             fa_debug_pkg.add(l_calling_fn, 'done', 'bulk insert',
412                              p_log_level_rec => g_log_level_rec);
413          end if;
414 
415       end loop;
416 
417       commit;
418 
419       CLOSE mc_deprn_events;
420 
421    END LOOP; -- sob loop
422 
423    -- Bug 6391045
424    -- Code hook for IAC
425 /* Bug 10417538
426    if (FA_IGI_EXT_PKG.IAC_Enabled) and
427       (p_close_period = 1) then
428        if not FA_IGI_EXT_PKG.Do_Depreciation(
429 	 p_book_type_code   =>  p_book_type_code,
430 	 p_period_counter    =>  p_period_counter,
431 	 p_calling_function  =>  l_calling_fn ) then
432 	raise error_found;
433       end if;
434    end if; -- (FA_IGI_EXT_PKG.IAC_Enabled)
435 */
436    x_return_status := 0;
437 
438 EXCEPTION
439   WHEN error_found THEN
440        fa_srvr_msg.add_message(calling_fn => l_calling_fn,
441                                p_log_level_rec => g_log_level_rec);
442        x_return_status := 2;
443 
444        commit;
445 
446        raise;
447 
448   WHEN OTHERS THEN
449        if DEPRN_EVENTS%ISOPEN then
450           close DEPRN_EVENTS;
451        end if;
452 
453        if MC_DEPRN_EVENTS%ISOPEN then
454           close MC_DEPRN_EVENTS;
455        end if;
456 
457        fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn,
458                                  p_log_level_rec => g_log_level_rec);
459        x_return_status := 2;
460 
461        commit;
462 
463        raise;
464 
465 END process_deprn_events;
466 
467 -- ER 14644811 : New procedure to create depreciation event
468 -- for single asset
469 
470 PROCEDURE process_single_deprn_event
471            (p_book_type_code       IN  varchar2,
472             p_period_counter       IN  number,
473             p_asset_id             IN  NUMBER,
474             p_calling_fn           IN  VARCHAR2,
475             x_return_status        OUT NOCOPY number,
476             p_log_level_rec        IN  FA_API_TYPES.log_level_rec_type default null) IS
477 
478    l_event_id     number;
479    l_event_date   date;
480    l_deprn_run_id number;
481    l_calling_fn   varchar2(60) := 'FA_DEPRN_EVENTS_PKG.process_single_deprn_event';
482 
483    error_found exception;
484 
485    --Secondary Changes
486    l_secondary_sob_id       number;
487    l_secondary_event_id     number;
488    l_secondary_deprn_run_id number;
489 
490 BEGIN
491 
492    if (p_log_level_rec.statement_level) then
493       fa_debug_pkg.add(l_calling_fn, 'at ', 'begin' ,p_log_level_rec => p_log_level_rec);
494    end if;
495 
496    if not fa_cache_pkg.fazcbc(X_book => p_book_type_code,
497                               p_log_level_rec => p_log_level_rec) then
498       raise error_found;
499    end if;
500 
501    if not fa_cache_pkg.fazcdp(x_book_type_code  => p_book_type_code,
502                               x_period_counter  => p_period_counter,
503                               x_effective_date  => null,
504                               p_log_level_rec => p_log_level_rec) then
505       raise error_found;
506    end if;
507 
508    select fa_deprn_summary_s.nextval
509      into l_deprn_run_id
510      from dual;
511 
512    if (p_log_level_rec.statement_level) then
513       fa_debug_pkg.add(l_calling_fn, 'calling', 'xla event api',
514                        p_log_level_rec => p_log_level_rec);
515    end if;
516 
517    l_event_date :=
518       greatest(fa_cache_pkg.fazcdp_record.calendar_period_open_date,
519                least(nvl(fa_cache_pkg.fazcdp_record.calendar_period_close_date,
520                          sysdate),
521                      sysdate));
522 
523    fa_xla_events_pvt.create_deprn_event
524         (p_asset_id          => p_asset_id,
525          p_book_type_code    => p_book_type_code,
526          p_period_counter    => p_period_counter,
527          p_period_close_date => l_event_date,
528          p_deprn_run_id      => l_deprn_run_id,
529          p_ledger_id         => fa_cache_pkg.fazcbc_record.set_of_books_id,
530          x_event_id          => l_event_id,
531          p_calling_fn        => l_calling_fn,
532          p_log_level_rec     => p_log_level_rec);
533 
534    if (p_log_level_rec.statement_level) then
535       fa_debug_pkg.add(l_calling_fn, 'Updating', 'primary deprn',
536                        p_log_level_rec => p_log_level_rec);
537    end if;
538 
539    UPDATE FA_DEPRN_SUMMARY
540       SET event_id          = l_event_id,
541           deprn_run_id      = l_deprn_run_id
542     WHERE asset_id          = p_asset_id
543       AND book_type_code    = p_book_type_code
544       AND period_counter    = p_period_counter;
545 
546    UPDATE FA_DEPRN_DETAIL
547       SET event_id          = l_event_id,
548           deprn_run_id      = l_deprn_run_id
549     WHERE asset_id          = p_asset_id
550       AND book_type_code    = p_book_type_code
551       AND period_counter    = p_period_counter;
552 
553    if (p_log_level_rec.statement_level) then
554       fa_debug_pkg.add(l_calling_fn, 'Updating', 'reporting deprn',
555                        p_log_level_rec => p_log_level_rec);
556    end if;
557 
558    UPDATE FA_MC_DEPRN_SUMMARY
559       SET event_id          = l_event_id,
560           deprn_run_id      = l_deprn_run_id
561     WHERE asset_id          = p_asset_id
562       AND book_type_code    = p_book_type_code
563       AND period_counter    = p_period_counter;
564 
565    UPDATE FA_MC_DEPRN_DETAIL
566       SET event_id          = l_event_id,
567           deprn_run_id      = l_deprn_run_id
568     WHERE asset_id          = p_asset_id
569       AND book_type_code    = p_book_type_code
570       AND period_counter    = p_period_counter;
571 
572    if (p_log_level_rec.statement_level) then
573       fa_debug_pkg.add(l_calling_fn, 'Inserting', 'deprn_events',
574                        p_log_level_rec => p_log_level_rec);
575    end if;
576 
577    INSERT into fa_deprn_events
578        (asset_id            ,
579         book_type_code      ,
580         period_counter      ,
581         deprn_run_id        ,
582         deprn_run_date      ,
583         event_id            ,
584         reversal_event_id
585         )
586     VALUES
587        (p_asset_id,
588         p_book_type_code,
589         p_period_counter,
590         l_deprn_run_id,
591         sysdate,
592         l_event_id,
593         null);
594 
595    --Secondary Changes
596    l_secondary_sob_id := FA_XLA_EVENTS_PVT.get_secondary_sob_id(p_book_type_code);
597    if(l_secondary_sob_id is not null) then
598 
599       if (p_log_level_rec.statement_level) then
600          fa_debug_pkg.add(l_calling_fn, 'before', 'secondary event creation',
601                           p_log_level_rec => p_log_level_rec);
602       end if;
603 
604       select fa_deprn_summary_s.nextval
605         into l_secondary_deprn_run_id
606         from dual;
607 
608       fa_xla_events_pvt.create_deprn_event
609            (p_asset_id          => p_asset_id,
610             p_book_type_code    => p_book_type_code,
611             p_period_counter    => p_period_counter,
612             p_period_close_date => l_event_date,
613             p_deprn_run_id      => l_secondary_deprn_run_id,
614             p_ledger_id         => l_secondary_sob_id,
615             x_event_id          => l_secondary_event_id,
616             p_calling_fn        => l_calling_fn,
617             p_log_level_rec     => p_log_level_rec);
618 
619       if (p_log_level_rec.statement_level) then
620          fa_debug_pkg.add(l_calling_fn, 'Updating', 'secondary deprn',
621                           p_log_level_rec => p_log_level_rec);
622       end if;
623 
624       UPDATE FA_MC_DEPRN_SUMMARY
625          SET event_id       = l_secondary_event_id,
626              deprn_run_id   = l_secondary_deprn_run_id
627        WHERE asset_id       = p_asset_id
628          AND book_type_code = p_book_type_code
629          AND period_counter = p_period_counter
630          and set_of_books_id = l_secondary_sob_id;
631 
632       UPDATE FA_MC_DEPRN_DETAIL
633          SET event_id       = l_secondary_event_id,
634              deprn_run_id   = l_secondary_deprn_run_id
635        WHERE asset_id       = p_asset_id
636          AND book_type_code = p_book_type_code
637          AND period_counter = p_period_counter
638          and set_of_books_id = l_secondary_sob_id;
639 
640    end if;
641 
642    x_return_status := 0;
643 
644 EXCEPTION
645   WHEN error_found THEN
646        fa_srvr_msg.add_message(calling_fn => l_calling_fn,
647                                p_log_level_rec => p_log_level_rec);
648        x_return_status := 2;
649        raise;
650 
651   WHEN OTHERS THEN
652 
653        fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn,
654                                  p_log_level_rec => p_log_level_rec);
655        x_return_status := 2;
656        raise;
657 
658 END process_single_deprn_event;
659 
660 --------------------------------------------------------------------------------
661 
662 END FA_DEPRN_EVENTS_PKG;