DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_TRANSFER_PVT

Source


1 PACKAGE BODY FA_TRANSFER_PVT AS
2 /* $Header: FAVTFRB.pls 120.9.12010000.3 2008/12/19 07:07:21 mswetha ship $   */
3 
4 
5 FUNCTION faxzdrs (drs in out nocopy fa_std_types.fa_deprn_row_struct
6                 ,p_log_level_rec           IN     FA_API_TYPES.log_level_rec_type default null)
7          return boolean is
8 
9 begin <<FAXZDRS>>
10     drs.asset_id            := 0;
11     drs.book                := '0';
12     drs.dist_id             := 0;
13     drs.period_ctr          := 0;
14     drs.adjusted_flag       := FALSE;
15     drs.deprn_exp           := 0;
16     drs.reval_deprn_exp     := 0;
17     drs.reval_amo           := 0;
18     drs.prod                := 0;
19     drs.ytd_deprn           := 0;
20     drs.ytd_reval_deprn_exp := 0;
21     drs.ytd_prod            := 0;
22     drs.deprn_adjust_exp    := 0;
23     drs.deprn_rsv           := 0;
24     drs.reval_rsv           := 0;
25     drs.ltd_prod            := 0;
26     drs.cost                := 0;
27     drs.adj_cost            := 0;
28     drs.reval_amo_basis     := 0;
29     drs.bonus_rate          := 0;
30     drs.add_cost_to_clear   := 0;
31     drs.deprn_source_code   := null;
32     drs.bonus_deprn_amount        := 0; --
33     drs.bonus_ytd_deprn           := 0;
34     drs.bonus_deprn_rsv           := 0;
35 --    drs.bonus_deprn_adjust_exp    := 0;
36 --    drs.bonus_reval_deprn_exp     := 0;
37 --    drs.bonus_ytd_reval_deprn_exp := 0;
38 
39     drs.prior_fy_exp := 0;
40     drs.prior_fy_bonus_exp := 0;
41 
42     return (TRUE);
43 end FAXZDRS;
44 
45 
46 FUNCTION faxidda
47              (p_trans_rec       fa_api_types.trans_rec_type,
48               p_asset_hdr_rec   fa_api_types.asset_hdr_rec_type,
49               p_asset_desc_rec  fa_api_types.asset_desc_rec_type,
50               p_asset_cat_rec   fa_api_types.asset_cat_rec_type,
51               p_asset_dist_rec  fa_api_types.asset_dist_rec_type,
52               cur_per_ctr       integer,
53               adj_amts          in out nocopy fa_std_types.fa_deprn_row_struct,
54               source            varchar2,
55               reverse_flag      boolean,
56               ann_adj_amts      fa_std_types.fa_deprn_row_struct,
57               mrc_sob_type_code varchar2
58              ,p_log_level_rec           IN     FA_API_TYPES.log_level_rec_type default null) return boolean is
59 
60    account              varchar2(40);
61    adj                  fa_adjust_type_pkg.fa_adj_row_struct;
62    h_interco_num        number;
63    h_tfr_num            number;
64    h_transaction_units  number;
65    h_orig_units         number;
66 
67    X_LAST_UPDATE_DATE  date := sysdate;
68    X_last_updated_by   number := -888;
69    X_last_update_login number := -888;
70 
71    l_calling_fn       varchar2(40) := '';
72    error_found        exception;
73 
74 begin <<FAXIDDA>>
75 
76    adj.transaction_header_id   := p_trans_rec.transaction_header_id;
77    adj.asset_invoice_id        := 0;
78    adj.source_type_code        := source;
79    adj.code_combination_id     := p_asset_dist_rec.expense_ccid;
80    adj.book_type_code          := p_asset_hdr_rec.book_type_code;
81    adj.period_counter_created  := cur_per_ctr;
82    adj.asset_id                := p_asset_hdr_rec.asset_id;
83    adj.period_counter_adjusted := cur_per_ctr;
84    adj.distribution_id         := p_asset_dist_rec.distribution_id;
85    adj.annualized_adjustment   := 0;
86    adj.last_update_date        := p_trans_rec.who_info.last_update_date;
87    adj.current_units           := p_asset_desc_rec.current_units;
88    adj.selection_mode          := fa_adjust_type_pkg.FA_AJ_SINGLE;
89    adj.selection_thid          := 0;
90    adj.selection_retid         := 0;
91    adj.flush_adj_flag          := TRUE;
92    adj.leveling_flag           := TRUE;
93    adj.annualized_adjustment   := 0;
94    adj.mrc_sob_type_code       := mrc_sob_type_code;
95    adj.gen_ccid_flag := TRUE;
96 
97    if not fa_cache_pkg.fazccb (p_asset_hdr_rec.book_type_code,
98                                p_asset_cat_rec.category_id
99                                ,p_log_level_rec => p_log_level_rec) then
100       raise error_found;
101    end if;
102 
103 
104 
105    /* Insert FA_ADJUSTMENTS rows for all nonzero elements, and for */
106    /* Deprn Expense even if zero */
107 
108    if TRUE then
109 
110       account               := fa_cache_pkg.fazccb_record.DEPRN_EXPENSE_ACCT;
111       adj.adjustment_type   := 'EXPENSE';
112       adj.debit_credit_flag := 'DR';
113 
114       if reverse_flag then
115          adj.adjustment_amount     := -adj_amts.deprn_exp;
116          adj_amts.deprn_exp        := -adj_amts.deprn_exp;
117          adj.source_dest_code      := 'SOURCE';
118       else
119          adj.adjustment_amount     := adj_amts.deprn_exp;
120          adj.annualized_adjustment := ann_adj_amts.deprn_exp;
121          adj.source_dest_code      := 'DEST';
122       end if;
123 
124       adj.account_type := 'DEPRN_EXPENSE_ACCT';
125       adj.account      := account;
126 
127       if (p_log_level_rec.statement_level) then
128          fa_debug_pkg.add(l_calling_fn,'adjustment_amount', adj.adjustment_amount
129                   ,p_log_level_rec => p_log_level_rec);
130          fa_debug_pkg.add(l_calling_fn,'annualized', adj.annualized_adjustment
131                   ,p_log_level_rec => p_log_level_rec);
132       end if;
133 
134       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
135                                         X_last_update_date,
136                                         X_last_updated_by,
137                                         X_last_update_login
138                                         ,p_log_level_rec => p_log_level_rec)) then
139          raise error_found;
140       end if;
141 
142       if (p_log_level_rec.statement_level) then
143          fa_debug_pkg.add(l_calling_fn,'after faxinaj',1
144                   ,p_log_level_rec => p_log_level_rec);
145       end if;
146 
147    end if;
148 
149    if (p_log_level_rec.statement_level) then
150       fa_debug_pkg.add(l_calling_fn, 'adj_amts.reval_deprn_exp', adj_amts.reval_deprn_exp
151             ,p_log_level_rec => p_log_level_rec);
152       fa_debug_pkg.add(l_calling_fn, 'adj_amts.reval_amo ', adj_amts.reval_amo
153             ,p_log_level_rec => p_log_level_rec);
154       fa_debug_pkg.add(l_calling_fn, 'adj_amts.deprn_rsv',  adj_amts.deprn_rsv
155             ,p_log_level_rec => p_log_level_rec);
156    end if;
157 
158 
159    if adj_amts.bonus_deprn_amount <> 0 then
160       -- Post bonus_deprn_exp to BONUS_DEPRN_EXPENSE_ACCT,
161       -- so use value of account/account_type (set above)
162 
163       account               := fa_cache_pkg.fazccb_record.BONUS_DEPRN_EXPENSE_ACCT;
164       adj.adjustment_type   := 'BONUS EXPENSE';
165       adj.debit_credit_flag :=  'DR';
166 
167       if reverse_flag then
168          adj.adjustment_amount        := -adj_amts.bonus_deprn_amount;
169          adj_amts.bonus_deprn_amount  := -adj_amts.bonus_deprn_amount;
170          adj.source_dest_code         := 'SOURCE';
171       else
172          adj.adjustment_amount     := adj_amts.bonus_deprn_amount;
173          adj.annualized_adjustment := ann_adj_amts.bonus_deprn_amount;
174          adj.source_dest_code      := 'DEST';
175       end if;
176 
177       adj.account_type  := 'BONUS_DEPRN_EXPENSE_ACCT';
178       adj.account       := account;
179 
180       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
181                                         X_last_update_date,
182                                         X_last_updated_by,
183                                         X_last_update_login
184                                         ,p_log_level_rec => p_log_level_rec)) then
185 
186          raise error_found;
187       end if;
188    end if;
189 
190    if adj_amts.bonus_deprn_rsv <> 0 then
191 
192       -- Post bonus_deprn_rsv to BONUS_DEPRN_RESERVE_ACCT,
193       -- so use value of account/account_type (set above)
194 
195       account               := fa_cache_pkg.fazccb_record.BONUS_DEPRN_RESERVE_ACCT;
196       adj.adjustment_type   := 'BONUS RESERVE';
197       adj.debit_credit_flag :=  'DR';
198 
199       if reverse_flag then
200          adj.adjustment_amount     := -adj_amts.bonus_deprn_rsv;
201          adj_amts.bonus_deprn_rsv  := -adj_amts.bonus_deprn_rsv;
202          adj.source_dest_code      := 'SOURCE';
203       else
204          adj.adjustment_amount     := adj_amts.bonus_deprn_rsv;
205          adj.annualized_adjustment := ann_adj_amts.bonus_deprn_rsv;
206          adj.source_dest_code      := 'DEST';
207       end if;
208 
209       adj.account_type  := 'BONUS_DEPRN_RESERVE_ACCT';
210       adj.account       := account;
211 
212       if p_trans_rec.transaction_type_code = 'TRANSFER' then
213          adj.source_type_code := 'TRANSFER';
214       end if;
215 
216       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
217                                         X_last_update_date,
218                                         X_last_updated_by,
219                                         X_last_update_login
220                                         ,p_log_level_rec => p_log_level_rec)) then
221          raise error_found;
222       end if;
223    end if;
224 
225    if adj_amts.reval_deprn_exp <> 0 then
226 
227       -- Post reval_deprn_exp to DEPRN_EXPENSE_ACCT,
228       -- so use value of account/account_type (set above)
229 
230       account := fa_cache_pkg.fazccb_record.DEPRN_EXPENSE_ACCT;
231       adj.debit_credit_flag := 'DR';
232       adj.adjustment_type := 'REVAL EXPENSE';
233       adj.debit_credit_flag :=  'DR';
234 
235       if reverse_flag then
236          adj.adjustment_amount     := -adj_amts.reval_deprn_exp;
237          adj_amts.reval_deprn_exp  := -adj_amts.reval_deprn_exp;
238          adj.source_dest_code      := 'SOURCE';
239       else
240          adj.adjustment_amount     := adj_amts.reval_deprn_exp;
241          adj.annualized_adjustment := ann_adj_amts.reval_deprn_exp;
242          adj.source_dest_code      := 'DEST';
243       end if;
244 
245       adj.account_type := 'DEPRN_EXPENSE_ACCT';
246       adj.account      := account;
247 
248       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
249                                        X_last_update_date,
250                                        X_last_updated_by,
251                                        X_last_update_login
252                                        ,p_log_level_rec => p_log_level_rec)) then
253 
254          raise error_found;
255       end if;
256    end if;
257 
258    if adj_amts.reval_amo <> 0 then
259 
260       account               := fa_cache_pkg.fazccb_record.REVAL_AMORTIZATION_ACCT;
261       adj.adjustment_type   := 'REVAL AMORT'; -- bug 3233299
262       adj.debit_credit_flag := 'DR';
263 
264       if reverse_flag then
265          adj.adjustment_amount := -adj_amts.reval_amo;
266          adj_amts.reval_amo    := -adj_amts.reval_amo;
267          adj.source_dest_code  := 'SOURCE';
268       else
269          adj.adjustment_amount     := adj_amts.reval_amo;
270          adj.annualized_adjustment := ann_adj_amts.reval_amo;
271          adj.source_dest_code      := 'DEST';
272       end if;
273 
274       adj.account      := account;
275       adj.account_type := 'REVAL_AMORTIZATION_ACCT';
276 
277       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
278                                        X_last_update_date,
279                                        X_last_updated_by,
280                                        X_last_update_login
281                                        ,p_log_level_rec => p_log_level_rec)) then
282          raise error_found;
283       end if;
284    end if;
285 
286    if adj_amts.deprn_rsv <> 0 then
287 
288       account               := fa_cache_pkg.fazccb_record.DEPRN_RESERVE_ACCT;
289       adj.adjustment_type   := 'RESERVE';
290       adj.debit_credit_flag := 'DR';
291 
292       if reverse_flag then
293          adj.adjustment_amount := -adj_amts.deprn_rsv;
294          adj_amts.deprn_rsv    := -adj_amts.deprn_rsv;
295          adj.source_dest_code  := 'SOURCE';
296       else
297          adj.adjustment_amount := adj_amts.deprn_rsv;
298          adj.source_dest_code  := 'DEST';
299       end if;
300 
301       adj.account      := account;
302       adj.account_type := 'DEPRN_RESERVE_ACCT';
303 
304 
305       if p_trans_rec.transaction_type_code = 'TRANSFER' then
306          adj.source_type_code := 'TRANSFER';
307       end if;
308 
309 
310       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
311                                        X_last_update_date,
312                                        X_last_updated_by,
313                                        X_last_update_login
314                                        ,p_log_level_rec => p_log_level_rec)) then
315 
316          raise error_found;
317       end if;
318    end if;
319 
320 
321    -- SLA: interco logic is completely obsolete
322 
323    if adj_amts.reval_rsv <> 0 then
324 
325       account := fa_cache_pkg.fazccb_record.REVAL_RESERVE_ACCT;
326       adj.adjustment_type   := 'REVAL RESERVE';
327       adj.debit_credit_flag :='DR';
328 
329 /* bug4277366
330       if reverse_flag then
331          adj.adjustment_amount := -adj_amts.reval_rsv;
332          adj_amts.reval_rsv    := -adj_amts.reval_rsv;
333          adj.source_dest_code  := 'SOURCE';
334       else
335          adj.adjustment_amount := adj_amts.reval_rsv;
336          adj.source_dest_code  := 'DEST';
337       end if;
338 */
339       adj.adjustment_amount := adj_amts.reval_rsv;
340 
341       adj.account := account;
342       adj.account_type := 'REVAL_RESERVE_ACCT';
343 
344       if (NOT FA_INS_ADJUST_PKG.faxinaj(adj,
345                                              X_last_update_date,
346                                              X_last_updated_by,
347                                              X_last_update_login
348                                              ,p_log_level_rec => p_log_level_rec)) then
349          raise error_found;
350       end if;
351    end if;
352 
353    /* sla: obsolete - not needed at time of trx
354    if not fa_drs_pkg.faxaadr (adj_amts, detail_amts) then
355       raise error_found;
356    end if;
357 
358    if not fa_drs_pkg.faxaadr (adj_amts, summary_amts) then
359       raise error_found;
360    end if;
361    */
362 
363    if p_log_level_rec.statement_level then
364       fa_debug_pkg.add(l_calling_fn,'END',1
365             ,p_log_level_rec => p_log_level_rec);
366    end if;
367 
368    return (TRUE);
369 
370 exception
371    when error_found then
372         fa_srvr_msg.add_message(calling_fn => l_calling_fn
373                 ,p_log_level_rec => p_log_level_rec);
374         return (FALSE);
375 
376    when others then
377         fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn
378                 ,p_log_level_rec => p_log_level_rec);
379         return (FALSE);
380 
381 end FAXIDDA;
382 /*===========================================================================+
383  |                                                                           |
384  |   faxrda                                                                  |
385  |                                                                           |
386  |   FA Utility Reverse Depreciation and Adjustments                         |
387  |                                                                           |
388  +===========================================================================*/
389 FUNCTION faxrda (p_trans_rec       fa_api_types.trans_rec_type,
390                  p_asset_hdr_rec   fa_api_types.asset_hdr_rec_type,
391                  p_asset_desc_rec  fa_api_types.asset_desc_rec_type,
392                  p_asset_cat_rec   fa_api_types.asset_cat_rec_type,
393                  p_asset_dist_rec  fa_api_types.asset_dist_rec_type,
394                  cur_per_ctr       integer,
395                  from_per_ctr      integer,
396                  adj_amts          in out nocopy fa_std_types.fa_deprn_row_struct,
397                  ins_adj_flag      boolean,
398                  source            varchar2,
399                  mrc_sob_type_code varchar2
400   ,p_log_level_rec           IN     FA_API_TYPES.log_level_rec_type default null) return boolean is
401 
402    fy                 integer(5);
403    period_fracs       fa_std_types.table_fa_cp_struct;
404 
405    frac_to_backout    number;
406    from_fy            integer(5);
407    adj_to_retain      number;
408 
409    adj_deprn          fa_std_types.fa_deprn_row_struct;
410    ann_adj_amts       fa_std_types.fa_deprn_row_struct;
411 
412    dd_deprn_exp       number;
413    dd_reval_deprn_exp number;
414    dd_reval_amo       number;
415    deprn_calendar     varchar2(30);
416    pers_per_yr        integer(5);
417    b                  boolean;
418    dd_bonus_deprn_exp number;
419 
420    aj_per_ctr_created    number;
421    aj_adj_dr             number;
422    aj_ann_adj_dr         number;
423    aj_adj_type           varchar2(30);
424 
425    l_calling_fn       varchar2(40) := 'faxrda';
426    error_found        exception;
427 
428    l_set_of_books_id   number;
429    l_currency_context  varchar2(64);
430 
431    /* Bug 3810323 */
432    tot_per               integer;
433    no_of_per_to_exclude  integer;
434    prev_trx_id           number(15);
435    prev_from_ctr_trx     number(15);
436    prev_from_ctr_eff     number(15);
437 
438 
439 
440    CURSOR AJ IS
441         SELECT aj.period_counter_created per_ctr_created,
442                decode (aj.debit_credit_flag,
443                        'DR', aj.adjustment_amount,
444                        'CR', -aj.adjustment_amount,
445                        0) adj_dr,
446                decode (aj.debit_credit_flag,
447                        'DR', aj.annualized_adjustment,
448                        'CR', -aj.annualized_adjustment,
449                        0) ann_adj_dr,
450                decode (aj.adjustment_type,
451                        'EXPENSE',              1,
452                        'REVAL EXPENSE',        2,
453                        'REVAL AMORT',          3, -- BUG# 3233299
454                        'RESERVE',              4,
455                        'REVAL RESERVE',        5,
456                        'BONUS EXPENSE',        6,
457                        'BONUS RESERVE',        7,
458                        0) adj_type
459           FROM fa_adjustments aj
460          WHERE aj.book_type_code  = p_asset_hdr_rec.book_type_code
461            AND aj.asset_id        = p_asset_hdr_rec.asset_id
462            AND aj.distribution_id = p_asset_dist_rec.distribution_id
463            AND aj.period_counter_created between
464                        from_per_ctr and cur_per_ctr
465            AND aj.adjustment_type||'' <> 'RESERVE'
466            AND decode (aj.adjustment_type,
467                        'EXPENSE',              1,
468                        'REVAL EXPENSE',        2,
469                        'REVAL AMORT',          3,
470                        'RESERVE',              4,
471                        'REVAL RESERVE',        5,
472                        'BONUS EXPENSE',        6,
473                        'BONUS RESERVE',        7,
474                        0) <> 0;
475 
476 
477    CURSOR MRC_AJ IS
478         SELECT aj.period_counter_created per_ctr_created,
479                decode (aj.debit_credit_flag,
480                        'DR', aj.adjustment_amount,
481                        'CR', -aj.adjustment_amount,
482                        0) adj_dr,
483                decode (aj.debit_credit_flag,
484                        'DR', aj.annualized_adjustment,
485                        'CR', -aj.annualized_adjustment,
486                        0) ann_adj_dr,
487                decode (aj.adjustment_type,
488                        'EXPENSE',              1,
489                        'REVAL EXPENSE',        2,
490                        'REVAL AMORT',          3,  -- BUG# 3233299
491                        'RESERVE',              4,
492                        'REVAL RESERVE',        5,
493                        'BONUS EXPENSE',        6,
494                        'BONUS RESERVE',        7,
495                        0) adj_type
496           FROM fa_adjustments_mrc_v aj
497          WHERE aj.book_type_code  = p_asset_hdr_rec.book_type_code
498            AND aj.asset_id        = p_asset_hdr_rec.asset_id
499            AND aj.distribution_id = p_asset_dist_rec.distribution_id
500            AND aj.period_counter_created between
501                   from_per_ctr and cur_per_ctr
502            AND aj.adjustment_type||'' <> 'RESERVE'
503            AND decode (aj.adjustment_type,
504                        'EXPENSE',              1,
505                        'REVAL EXPENSE',        2,
506                        'REVAL AMORT',          3,
507                        'RESERVE',              4,
508                        'REVAL RESERVE',        5,
509                        'BONUS EXPENSE',        6,
510                        'BONUS RESERVE',        7,
511                        0) <> 0;
512 
513 
514     -- Get Fractions for all periods in Fiscal Year containing Cur_Per_Ctr
515     -- and From_Per_Ctr; cache this information for future use
516 
517 begin <<FAXRDA>>
518 
519    if (p_log_level_rec.statement_level) then
520       fa_debug_pkg.add('FAXRDA','dist_id',p_asset_dist_rec.distribution_id
521             ,p_log_level_rec => p_log_level_rec);
522       fa_debug_pkg.add(l_calling_fn, 'from_per_ctr', from_per_ctr
523             ,p_log_level_rec => p_log_level_rec);
524       fa_debug_pkg.add(l_calling_fn, 'cur_per_ctr',  cur_per_ctr
525             ,p_log_level_rec => p_log_level_rec);
526    end if;
527 
528    deprn_calendar:=fa_cache_pkg.fazcbc_record.DEPRN_CALENDAR;
529 
530    if not fa_cache_pkg.fazcct (deprn_calendar) then
531       raise error_found;
532    end if;
533 
534    pers_per_yr := fa_cache_pkg.fazcct_record.NUMBER_PER_FISCAL_YEAR;
535 
536    fy      := trunc((cur_per_ctr-1)  / pers_per_yr);  -- Integer\
537    from_fy := trunc((from_per_ctr-1) / pers_per_yr);  -- Division
538 
539    if from_fy <> fy then
540       fa_srvr_msg.add_message(calling_fn => l_calling_fn,
541                               name       => 'FA_RDA_BACKOUT_ACROSS_YEARS'
542                               ,p_log_level_rec => p_log_level_rec);
543       raise error_found;
544    end if;
545 
546    if not fa_cache_pkg.fazcff (deprn_calendar,
547                                p_asset_hdr_rec.book_type_code,
548                                fy,
549                                period_fracs
550                                ,p_log_level_rec => p_log_level_rec) then
551       raise error_found;
552    end if;
553 
554 
555    -- Get information from FA_DEPRN_DETAIL for the Distribution requested
556 
557    begin
558       if (mrc_sob_type_code = 'R') then
559 
560          SELECT nvl (sum (dd.deprn_amount), 0),
561                 nvl (sum (dd.reval_deprn_expense), 0),
562                 nvl (sum (dd.reval_amortization), 0),
563                 nvl (sum (nvl(dd.bonus_deprn_amount,0)), 0)
564            INTO dd_deprn_exp,
565                 dd_reval_deprn_exp,
566                 dd_reval_amo,
567                 dd_bonus_deprn_exp
568            FROM fa_deprn_detail_mrc_v dd
569           WHERE dd.book_type_code  = p_asset_hdr_rec.book_type_code
570             AND dd.asset_id        = p_asset_hdr_rec.asset_id
571             AND dd.distribution_id = p_asset_dist_rec.distribution_id
572             AND dd.period_counter  between
573                     from_per_ctr and cur_per_ctr;
574       else
575          SELECT nvl (sum (dd.deprn_amount), 0),
576                 nvl (sum (dd.reval_deprn_expense), 0),
577                 nvl (sum (dd.reval_amortization), 0),
578                 nvl (sum (nvl(dd.bonus_deprn_amount,0)), 0)
579            INTO dd_deprn_exp,
580                 dd_reval_deprn_exp,
581                 dd_reval_amo,
582                 dd_bonus_deprn_exp
583            FROM fa_deprn_detail dd
584           WHERE dd.book_type_code  = p_asset_hdr_rec.book_type_code
585             AND dd.asset_id        = p_asset_hdr_rec.asset_id
586             AND dd.distribution_id = p_asset_dist_rec.distribution_id
587             AND dd.period_counter  between
588                     from_per_ctr and cur_per_ctr;
589       end if;
590    exception
591       when others then
592            null;
593    end;
594 
595 
596 
597     /* Fix for bug 3810323 - start */
598 
599     tot_per := 0;
600     no_of_per_to_exclude := 0;
601     prev_trx_id := 0;
602     prev_from_ctr_trx := 0;
603     prev_from_ctr_eff := 0;
604 
605     /* Check if the current prior period transfer overlaps the previous one */
606     begin
607        select max(trx.transaction_header_id)
608        into prev_trx_id
609        from fa_transaction_headers trx
610        where  trx.book_type_code = p_asset_hdr_rec.book_type_code
611          and  trx.asset_id = p_asset_hdr_rec.asset_id
612          and  trx.transaction_type_code = 'TRANSFER'
613          and  trx.transaction_header_id < p_trans_rec.transaction_header_id
614          and  exists
615               (select 1
616                from fa_transaction_headers trx2,
617                     fa_deprn_periods dp_trx,
618                     fa_deprn_periods dp_eff
619                where trx2.transaction_header_id=trx.transaction_header_id
620                  and trx2.transaction_date_entered between dp_trx.calendar_period_open_date
621                                                        and dp_trx.calendar_period_close_date
622                  and dp_trx.book_type_code=trx2.book_type_code
623                  and trx2.date_effective between dp_eff.period_open_date
624                                              and dp_eff.period_close_date
625                  and dp_eff.book_type_code=trx2.book_type_code
626                  and dp_trx.period_counter < dp_eff.period_counter
627                  and from_per_ctr > dp_trx.period_counter
628                  and from_per_ctr < dp_eff.period_counter
629               )
630        ;
631     exception
632       when no_data_found then
633          null;
634     end;
635 
636 
637     if (prev_trx_id >= 1) then
638 
639        begin
640            select dp1.period_counter
641                  ,dp2.period_counter
642            into   prev_from_ctr_trx
643                  ,prev_from_ctr_eff
644            from   fa_transaction_headers trx,
645                   fa_deprn_periods dp1,
646                   fa_deprn_periods dp2
647            where  trx.transaction_header_id=prev_trx_id
648              and  dp1.book_type_code = trx.book_type_code
649              and  trx.transaction_date_entered between dp1.CALENDAR_PERIOD_OPEN_DATE
650                                                    and dp1.CALENDAR_PERIOD_CLOSE_DATE
651              and  dp2.book_type_code = trx.book_type_code
652              and  trx.date_effective between dp2.period_open_date
653                                          and dp2.period_close_date
654            ;
655       exception
656         when no_data_found then
657            raise error_found;
658       end;
659 
660       tot_per := cur_per_ctr - prev_from_ctr_trx;
661       no_of_per_to_exclude :=  from_per_ctr - prev_from_ctr_trx;
662 
663    end if;
664 
665    /*Fix for 3810323 - end*/
666 
667 
668 
669    if p_log_level_rec.statement_level then
670       fa_debug_pkg.add(l_calling_fn,'dd_deprn_exp to reverse', dd_deprn_exp
671             ,p_log_level_rec => p_log_level_rec);
672       fa_debug_pkg.add(l_calling_fn,'dd_reval_deprn_exp to reverse', dd_reval_deprn_exp
673             ,p_log_level_rec => p_log_level_rec);
674       fa_debug_pkg.add(l_calling_fn,'dd_reval_amo to reverse ', dd_reval_amo
675             ,p_log_level_rec => p_log_level_rec);
676    end if;
677 
678 
679    -- Get information from FA_ADJUSTMENTS for the Distribution requested
680 
681    b := faxzdrs (adj_deprn
682 ,p_log_level_rec => p_log_level_rec);
683    b := faxzdrs (ann_adj_amts
684 ,p_log_level_rec => p_log_level_rec);
685 
686    if p_log_level_rec.statement_level then
687 
688       fnd_profile.get ('GL_SET_OF_BKS_ID',l_set_of_books_id);
689       l_currency_context :=  SUBSTRB(USERENV('CLIENT_INFO'),45,10);
690 
691       fa_debug_pkg.add(l_calling_fn,'opening', 'aj cursor'
692             ,p_log_level_rec => p_log_level_rec);
693       fa_debug_pkg.add(l_calling_fn,'gl sob profile', l_set_of_books_id
694             ,p_log_level_rec => p_log_level_rec);
695       fa_debug_pkg.add(l_calling_fn,'client info', l_currency_context
696             ,p_log_level_rec => p_log_level_rec);
697    end if;
698 
699    if (mrc_sob_type_code = 'R') then
700       open mrc_aj;
701    else
702       open aj;
703    end if;
704 
705    LOOP
706 
707       if p_log_level_rec.statement_level then
708          fa_debug_pkg.add(l_calling_fn,'fetching', 'aj cursor'
709                   ,p_log_level_rec => p_log_level_rec);
710       end if;
711 
712       if (mrc_sob_type_code = 'R') then
713          fetch mrc_aj
714           into aj_per_ctr_created    ,
715                aj_adj_dr             ,
716                aj_ann_adj_dr         ,
717                aj_adj_type           ;
718          EXIT WHEN MRC_AJ%NOTFOUND OR MRC_AJ%NOTFOUND IS NULL;
719       else
720          fetch aj
721           into aj_per_ctr_created    ,
722                aj_adj_dr             ,
723                aj_ann_adj_dr         ,
724                aj_adj_type           ;
725          EXIT WHEN AJ%NOTFOUND OR AJ%NOTFOUND IS NULL;
726       end if;
727 
728       frac_to_backout := 0;
729 
730       if p_log_level_rec.statement_level then
731          fa_debug_pkg.add(l_calling_fn,'starting', 'fy calc'
732                   ,p_log_level_rec => p_log_level_rec);
733       end if;
734 
735       for i in  mod(from_per_ctr-1,fy)..mod(aj_per_ctr_created-1,fy)-1 loop
736           frac_to_backout := frac_to_backout + period_fracs(i).frac;
737       end loop;
738 
739       if p_log_level_rec.statement_level then
740          fa_debug_pkg.add(l_calling_fn,'calcing', 'adj_to_retain1'
741                   ,p_log_level_rec => p_log_level_rec);
742       end if;
743 
744       adj_to_retain := aj_adj_dr - frac_to_backout * aj_ann_adj_dr;
745 
746       b := FA_UTILS_PKG.faxrnd ( adj_to_retain, p_asset_hdr_rec.book_type_code
747                         ,p_log_level_rec => p_log_level_rec);
748 
749       if p_log_level_rec.statement_level then
750          fa_debug_pkg.add(l_calling_fn,'calcing', 'adj_to_retain2'
751                   ,p_log_level_rec => p_log_level_rec);
752       end if;
753 
754       if (adj_to_retain*aj_adj_dr < 0) or
755          (adj_to_retain=0 and aj_adj_dr <> 0) or
756          (aj_adj_dr = 0 and  adj_to_retain <> 0) then
757          adj_to_retain := 0;
758       end if;
759 
760       if p_log_level_rec.statement_level then
761          fa_debug_pkg.add(l_calling_fn,'entering', 'main branching'
762                   ,p_log_level_rec => p_log_level_rec);
763       end if;
764 
765       if aj_adj_type = 0 then
766          null;
767       elsif aj_adj_type = 1 then
768          adj_deprn.deprn_exp := adj_to_retain + adj_deprn.deprn_exp;
769       elsif aj_adj_type = 2 then
770          adj_deprn.reval_deprn_exp := adj_deprn.reval_deprn_exp + adj_to_retain;
771       elsif aj_adj_type = 3 then
772          adj_deprn.reval_amo := adj_deprn.reval_amo + adj_to_retain;
773       elsif aj_adj_type = 4 then
774          adj_deprn.deprn_rsv := adj_deprn.deprn_rsv + adj_to_retain;
775       elsif aj_adj_type = 5 then
776          adj_deprn.reval_rsv := adj_deprn.reval_rsv + adj_to_retain;
777       elsif aj_adj_type = 6 then
778          adj_deprn.bonus_deprn_amount := adj_deprn.bonus_deprn_amount + adj_to_retain;
779       elsif aj_adj_type = 7 then
780          adj_deprn.bonus_deprn_rsv := adj_deprn.bonus_deprn_rsv + adj_to_retain;
781       else
782          fa_srvr_msg.add_message (calling_fn => 'l_calling_fn',
783                                   name         => 'switch'
784                                   ,p_log_level_rec => p_log_level_rec);
785          raise error_found;
786       end if;
787 
788    end loop;
789 
790    if p_log_level_rec.statement_level then
791       fa_debug_pkg.add(l_calling_fn,'closing', 'aj cursor'
792             ,p_log_level_rec => p_log_level_rec);
793    end if;
794 
795    if (mrc_sob_type_code = 'R') then
796       close mrc_aj;
797    else
798       close aj;
799    end if;
800 
801    /****this code zeroes everything out...is this right?*
802    fa_dfix_msg.faxzdrs (adj_amts
803 ,p_log_level_rec => p_log_level_rec);
804    fa_dfix_msg.faxzdrs (detail_amts
805 ,p_log_level_rec => p_log_level_rec);
806    fa_dfix_msg.faxzdrs (summary_amts
807 ,p_log_level_rec => p_log_level_rec);
808    ****/
809 
810    if p_log_level_rec.statement_level then
811       fa_debug_pkg.add(l_calling_fn,'getting', 'total reserveral amounts'
812             ,p_log_level_rec => p_log_level_rec);
813    end if;
814 
815    /* Fix for bug 3810323: commented out this
816 
817    -- Set ADJ = DD - Tot_Adj_To_Reverse
818    -- BUG# 3296373 : adding this if condition
819    if (adj_deprn.deprn_exp <> 0) then
820       adj_amts.deprn_exp      := adj_deprn.deprn_exp;
821    else
822       adj_amts.deprn_exp      := dd_deprn_exp       - adj_deprn.deprn_exp;
823    end if;
824 
825    adj_amts.reval_deprn_exp   := dd_reval_deprn_exp - adj_deprn.reval_deprn_exp;
826    adj_amts.reval_amo         := dd_reval_amo       - adj_deprn.reval_amo;
827    adj_amts.bonus_deprn_amount := dd_bonus_deprn_exp - adj_deprn.bonus_deprn_amount;
828 
829    -- RKP: offset the deprn_exp's effect on rsv; reval_exp also
830    adj_amts.deprn_rsv := adj_amts.deprn_exp;
831    adj_amts.reval_rsv := adj_amts.reval_deprn_exp;
832   */
833 
834   /* Fix for bug 3810323 - start*/
835 
836    adj_amts.deprn_exp := dd_deprn_exp - adj_deprn.deprn_exp;
837 
838    if ((prev_trx_id > 0) and (tot_per <> 0) and (no_of_per_to_exclude <> 0)) then
839 
840      adj_amts.deprn_exp := dd_deprn_exp - (no_of_per_to_exclude * (dd_deprn_exp / tot_per));
841      b := fa_utils_pkg.faxrnd(adj_amts.deprn_exp, p_asset_hdr_rec.book_type_code
842                                 ,p_log_level_rec => p_log_level_rec);
843 
844    end if;
845 
846    adj_amts.reval_deprn_exp   := dd_reval_deprn_exp - adj_deprn.reval_deprn_exp;
847    adj_amts.reval_amo         := dd_reval_amo       - adj_deprn.reval_amo;
848    adj_amts.bonus_deprn_amount   := adj_deprn.bonus_deprn_amount - adj_amts.bonus_deprn_amount;
849 
850    adj_amts.deprn_rsv := adj_amts.deprn_exp;
851    adj_amts.reval_rsv := adj_amts.reval_deprn_exp;
852 
853 
854   /* Fix for bug 3810323 - end*/
855 
856    if p_log_level_rec.statement_level then
857       fa_debug_pkg.add(l_calling_fn,'calling', 'faxidda'
858             ,p_log_level_rec => p_log_level_rec);
859    end if;
860 
861    if ins_adj_flag then
862       if not faxidda (p_trans_rec,
863                       p_asset_hdr_rec ,
864                       p_asset_desc_rec ,
865                       p_asset_cat_rec  ,
866                       p_asset_dist_rec  ,
867                       cur_per_ctr,
868                       adj_amts,
869                       source,
870                       TRUE,
871                       ann_adj_amts,
872                       mrc_sob_type_code
873                       ,p_log_level_rec => p_log_level_rec) then
874          raise error_found;
875       end if;
876    end if;
877 
878    return (TRUE);
879 
880 Exception
881    when error_found then
882         fa_srvr_msg.add_message(calling_fn => l_calling_fn
883                 ,p_log_level_rec => p_log_level_rec);
884         return (FALSE);
885 
886    when others then
887         fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn
888                 ,p_log_level_rec => p_log_level_rec);
889         return (FALSE);
890 
891 end FAXRDA;
892 
893 
894 /*===========================================================================+
895  |  NAME                                                                     |
896  |      fadgdd - get prior pd deprn detail                                   |
897  |                                                                           |
898  +===========================================================================*/
899 
900 FUNCTION fadgdd (p_trans_rec       fa_api_types.trans_rec_type,
901                  p_asset_hdr_rec   fa_api_types.asset_hdr_rec_type,
902                  p_asset_desc_rec  fa_api_types.asset_desc_rec_type,
903                  p_asset_cat_rec   fa_api_types.asset_cat_rec_type,
904                  p_asset_dist_rec  fa_api_types.asset_dist_rec_type,
905                  p_period_rec      fa_api_types.period_rec_type,
906                  from_per_ctr      integer,
907                  drs               in out nocopy fa_std_types.fa_deprn_row_struct,
908                  backout_flag      boolean,
909                  mrc_sob_type_code varchar2
910   ,p_log_level_rec           IN     FA_API_TYPES.log_level_rec_type default null)  return boolean is
911 
912     dist                fa_std_types.dh_adj_type;
913     counter             integer(4);
914     b                   boolean;
915 
916     -- BUG 1301957:
917     --  ann_adj_amts has been created
918     --  to store annulized adjustment amounts - YYOON
919 
920     ann_adj_amts         fa_std_types.fa_deprn_row_struct;
921     i_temp              number;
922     num_of_periods      number;
923 
924     cur_per_ctr    number;
925     period_num     number;
926     ccp_start_date date;
927     ccp_end_date   date;
928     cp_start_date  date;
929     cp_end_date    date;
930 
931     l_calling_fn       varchar2(40) := 'fadgdd';
932     error_found        exception;
933 
934 
935 begin <<FADGDD>>
936 
937    if (p_log_level_rec.statement_level) then
938       fa_debug_pkg.add(l_calling_fn, 'dist_id',      p_asset_dist_rec.distribution_id
939             ,p_log_level_rec => p_log_level_rec);
940       fa_debug_pkg.add(l_calling_fn, 'from_per_ctr', from_per_ctr
941             ,p_log_level_rec => p_log_level_rec);
942    end if;
943 
944    cur_per_ctr    := p_period_rec.period_counter;
945    period_num     := p_period_rec.period_num;
946    ccp_start_date := p_period_rec.calendar_period_open_date;
947    ccp_end_date   := p_period_rec.calendar_period_close_date;
948    cp_start_date  := p_period_rec.period_open_date;
949    cp_end_date    := sysdate;
950 
951    counter := 1;
952 
953    -- BUG1301957:
954    -- Initialize ann_adj_amts - YYOON
955 
956    b:= faxzdrs (ann_adj_amts
957                 ,p_log_level_rec => p_log_level_rec);
958 
959 
960    if backout_flag then
961 
962       -- Backing out depreciation from terminated distribution
963       if p_log_level_rec.statement_level then
964          fa_debug_pkg.add(l_calling_fn,'calling faxrda',1
965                   ,p_log_level_rec => p_log_level_rec);
966       end if;
967 
968       if not faxrda
969                             (p_trans_rec,
970                              p_asset_hdr_rec,
971                              p_asset_desc_rec,
972                              p_asset_cat_rec,
973                              p_asset_dist_rec,
974                              cur_per_ctr,
975                              from_per_ctr,
976                              drs,
977                              TRUE,
978                              'DEPRECIATION',
979                              mrc_sob_type_code
980                              ,p_log_level_rec => p_log_level_rec) then
981          raise error_found;
982       end if;
983 
984       -- Now flip sign of the adjustment amounts we reversed out
985 
986       drs.deprn_exp       := -drs.deprn_exp;
987       drs.reval_deprn_exp := -drs.reval_deprn_exp;
988       drs.reval_amo       := -drs.reval_amo;
989       drs.deprn_rsv       := -drs.deprn_rsv;
990       drs.reval_rsv       := -drs.reval_rsv;
991 
992 
993       -- excluding deprn_adj_exp updates as this will be done by deprn
994 
995       if p_log_level_rec.statement_level then
996          fa_debug_pkg.add(l_calling_fn,'flip backout drs.deprn_rsv', drs.deprn_rsv
997                   ,p_log_level_rec => p_log_level_rec);
998       end if;
999 
1000       drs.bonus_deprn_amount := -drs.bonus_deprn_amount;
1001       drs.bonus_deprn_rsv := -drs.bonus_deprn_rsv;
1002 
1003    else
1004 
1005       if p_log_level_rec.statement_level then
1006          fa_debug_pkg.add(l_calling_fn,'backout_flag', 'FALSE'
1007                   ,p_log_level_rec => p_log_level_rec);
1008       end if;
1009 
1010       -- Moving backed out depreciation to created distribution
1011 
1012       -- BUG# 1527238
1013       -- fix is obsolete as this will be processed immediately upon
1014       -- transfer transaction so category is always the same
1015 
1016       -- BUG 1301957:
1017       -- Get the number of periods in a fiscal year
1018       -- YYOON on 6/13/01
1019 
1020       num_of_periods := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
1021 
1022       -- BUG 1301957:
1023       --  The following routine calculates annualized adjustment amounts
1024       --  and copy them to ann_adj_amts structure.
1025       --  - YYOON on 6/13/01
1026 
1027       ann_adj_amts.deprn_exp          := drs.deprn_exp * num_of_periods;
1028       ann_adj_amts.reval_deprn_exp    := drs.reval_deprn_exp *
1029                                                 num_of_periods;
1030       ann_adj_amts.reval_amo          := drs.reval_amo * num_of_periods;
1031       ann_adj_amts.bonus_deprn_amount := drs.bonus_deprn_amount * num_of_periods;
1032 
1033       if p_log_level_rec.statement_level then
1034          fa_debug_pkg.add(l_calling_fn,' calling faxidda',1
1035                   ,p_log_level_rec => p_log_level_rec);
1036       end if;
1037 
1038       if not faxidda
1039                       (p_trans_rec,
1040                        p_asset_hdr_rec ,
1041                        p_asset_desc_rec ,
1042                        p_asset_cat_rec  ,
1043                        p_asset_dist_rec  ,
1044                        cur_per_ctr,
1045                        drs,
1046                        'DEPRECIATION',
1047                        FALSE,
1048                        ann_adj_amts,
1049                        mrc_sob_type_code
1050                        ,p_log_level_rec => p_log_level_rec) then
1051          raise error_found;
1052       end if;
1053 
1054    end if;
1055 
1056    return (TRUE);
1057 
1058 exception
1059    when error_found then
1060         fa_srvr_msg.add_message(calling_fn => l_calling_fn
1061                 ,p_log_level_rec => p_log_level_rec);
1062         return (FALSE);
1063 
1064    when others then
1065         fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn
1066                 ,p_log_level_rec => p_log_level_rec);
1067         return (FALSE);
1068 
1069 end FADGDD;
1070 
1071 /*===========================================================================+
1072  |  NAME                                                                     |
1073  |      fadppt                                                               |
1074  |                                                                           |
1075  |  FUNCTION                                                                 |
1076  |      Calculates depreciation for a prior period transfer.                 |
1077  |                                                                           |
1078  |  NOTES                                                                    |
1079  +===========================================================================*/
1080 
1081 FUNCTION fadppt (p_trans_rec       fa_api_types.trans_rec_type,
1082                  p_asset_hdr_rec   fa_api_types.asset_hdr_rec_type,
1083                  p_asset_desc_rec  fa_api_types.asset_desc_rec_type,
1084                  p_asset_cat_rec   fa_api_types.asset_cat_rec_type,
1085                  p_asset_dist_tbl  fa_api_types.asset_dist_tbl_type
1086   ,p_log_level_rec           IN     FA_API_TYPES.log_level_rec_type default null)
1087          return boolean is
1088 
1089    b                 boolean;
1090    total_dep_backout number;
1091    total_ua_backout  number;
1092    backout_share     number;
1093    backout_taken     number;
1094    old_backout_taken number;
1095    dist_total_deprn  number;    /* total deprn for a dist record */
1096    row_ctr           integer;
1097    row_ctr_temp      integer :=0;   /* bug# 5523484*/
1098    dist_book         varchar2(15);
1099 
1100    backout_drs       fa_std_types.fa_deprn_row_struct;
1101    total_backout_drs fa_std_types.fa_deprn_row_struct;
1102    insert_drs        fa_std_types.fa_deprn_row_struct;
1103    taken_drs         fa_std_types.fa_deprn_row_struct;
1104 
1105    ppd_ctr           integer;
1106    in_dist           integer;
1107    units_assigned    number;
1108    trans_id          integer;
1109    deprn_calendar    varchar2(30);
1110    pers_per_yr       integer(5);
1111    fy_name           varchar2(30);
1112 
1113    cur_period_ctr number;
1114    period_num     number;
1115    ccp_start_date date;
1116    ccp_end_date   date;
1117    cp_start_date  date;
1118    cp_end_date    date;
1119 
1120    l_mrc_sob_type_code varchar2(1);
1121    l_profile_sob_id    number;
1122    l_currency_context  varchar2(64);
1123 
1124    l_asset_dist_rec   fa_api_types.asset_dist_rec_type;
1125    l_period_rec       fa_api_types.period_rec_type;
1126 
1127    l_calling_fn       varchar2(40) := 'fadgdd';
1128    error_found        exception;
1129 
1130    -- C3 not needed since we're taking in dist_tbl
1131    -- adding new cursor just to get dist id from new distributions
1132    CURSOR c_dist_id (p_asset_id     number,
1133                      p_expense_ccid number,
1134                      p_location_id  number,
1135                      p_assigned_to  number) is
1136      select distribution_id
1137        from fa_distribution_history
1138       where asset_id                = p_asset_id
1139         and nvl(assigned_to,-9999) = nvl(p_assigned_to,-9999)
1140         and code_combination_id    = p_expense_ccid
1141         and location_id            = p_location_id
1142         and date_ineffective      is null;
1143 
1144   CURSOR n_sob_id (p_psob_id IN NUMBER,
1145                    p_book_type_code IN VARCHAR2) is
1146   SELECT p_psob_id AS sob_id,
1147          1 AS index_id
1148     FROM dual
1149    UNION
1150   SELECT set_of_books_id AS sob_id,
1151          2 AS index_id
1152     FROM fa_mc_book_controls
1153    WHERE book_type_code = p_book_type_code
1154      AND primary_set_of_books_id = p_psob_id
1155      AND enabled_flag = 'Y'
1156    ORDER BY 2;
1157 
1158 
1159 begin <<FADPPT>>
1160 
1161    -- save profile sob id
1162    fnd_profile.get('GL_SET_OF_BKS_ID', l_profile_sob_id);
1163    l_currency_context := SUBSTRB(USERENV('CLIENT_INFO'),45,10);
1164 
1165    -- moving logic from fadgbi here:
1166    -- load the cache for current period counter
1167 
1168    dist_book      := fa_cache_pkg.fazcbc_record.distribution_source_book;
1169    deprn_calendar := fa_cache_pkg.fazcbc_record.deprn_calendar;
1170    fy_name        := fa_cache_pkg.fazcbc_record.fiscal_year_name;
1171 
1172    if not fa_util_pvt.get_period_rec
1173            (p_book           => p_asset_hdr_rec.book_type_code,
1174             x_period_rec     => l_period_rec
1175             ,p_log_level_rec => p_log_level_rec) then
1176       raise error_found;
1177    end if;
1178 
1179    cur_period_ctr := l_period_rec.period_counter;
1180    period_num     := l_period_rec.period_num;
1181    ccp_start_date := l_period_rec.calendar_period_open_date;
1182    ccp_end_date   := l_period_rec.calendar_period_close_date;
1183    cp_start_date  := l_period_rec.period_open_date;
1184    cp_end_date    := sysdate;
1185 
1186    if not fa_cache_pkg.fazcct
1187            (x_calendar => deprn_calendar
1188                       ,p_log_level_rec => p_log_level_rec) then
1189       raise error_found;
1190    end if;
1191 
1192    pers_per_yr    := fa_cache_pkg.fazcct_record.number_per_fiscal_year;
1193 
1194    if p_log_level_rec.statement_level then
1195       fa_srvr_msg.add_message(calling_fn => l_calling_fn,
1196                               name       => 'FA_DEPRN_DEBUG2',
1197                               token1     => 'CCP_DATE',
1198                               value1     => ccp_start_date,
1199                               token2     => 'CP_DATE',
1200                               value2     => cp_start_date
1201                               ,p_log_level_rec => p_log_level_rec);
1202    end if;
1203 
1204    backout_taken     := 0;
1205    old_backout_taken := 0;
1206 
1207    SELECT cp.period_num + (pers_per_yr * fy.fiscal_year)
1208      INTO ppd_ctr
1209      FROM fa_calendar_periods cp,
1210           fa_calendar_types ct,
1211           fa_fiscal_year fy
1212     WHERE p_trans_rec.transaction_date_entered
1213               between cp.start_date and cp.end_date
1214       AND cp.calendar_type = deprn_calendar
1215       AND ct.calendar_type = cp.calendar_type
1216       AND p_trans_rec.transaction_date_entered
1217               between fy.start_date and fy.end_date
1218       AND fy.fiscal_year_name = fy_name;
1219 
1220 
1221    row_ctr           := 0;
1222    total_dep_backout := 0;
1223    total_ua_backout  := 0;
1224 
1225    -- continue until all distribution records are found
1226 
1227    b := faxzdrs (backout_drs
1228 ,p_log_level_rec => p_log_level_rec);
1229    b := faxzdrs (total_backout_drs
1230 ,p_log_level_rec => p_log_level_rec);
1231    b := faxzdrs (insert_drs
1232 ,p_log_level_rec => p_log_level_rec);
1233    b := faxzdrs (taken_drs
1234 ,p_log_level_rec => p_log_level_rec);
1235 
1236 
1237    if fa_cache_pkg.fazcbc_record.book_class = 'TAX' then
1238       trans_id := p_trans_rec.source_transaction_header_id;
1239    else
1240       trans_id := p_trans_rec.transaction_header_id;
1241    end if;
1242 
1243    -- first determine total units effected
1244    for row_ctr in 1..p_asset_dist_tbl.count loop --C3
1245       if (p_asset_dist_tbl(row_ctr).distribution_id is not null) then
1246          total_ua_backout := total_ua_backout +
1247                              p_asset_dist_tbl(row_ctr).transaction_units;
1248       end if;
1249    end loop;
1250 
1251    total_ua_backout := -total_ua_backout;
1252 
1253    -- loop through primary and reportign and then through each distribution
1254    for c_rec in n_sob_id(fa_cache_pkg.fazcbc_record.set_of_books_id,
1255                          p_asset_hdr_rec.book_type_code) loop
1256 
1257       if (c_rec.index_id = 1) then
1258          l_mrc_sob_type_code := 'P';
1259       else
1260          l_mrc_sob_type_code := 'R';
1261       end if;
1262 
1263       -- set the gl_sob profile to this reporting book
1264       fnd_profile.put('GL_SET_OF_BKS_ID', c_rec.sob_id);
1265       fnd_client_info.set_currency_context (c_rec.sob_id);
1266 
1267       for row_ctr in 1..p_asset_dist_tbl.count loop --C3
1268          row_ctr_temp := row_ctr; --bug# 5523484
1269          dist_total_deprn := 0;
1270          l_asset_dist_rec := p_asset_dist_tbl(row_ctr);
1271 
1272          if (l_asset_dist_rec.distribution_id is not null) then
1273 
1274             -- terminated distribution, back out
1275 
1276             if not fadgdd (p_trans_rec,
1277                            p_asset_hdr_rec,
1278                            p_asset_desc_rec,
1279                            p_asset_cat_rec,
1280                            l_asset_dist_rec,
1281                            l_period_rec,
1282                            ppd_ctr,
1283                            backout_drs,
1284                            TRUE,
1285                            l_mrc_sob_type_code
1286                            ,p_log_level_rec => p_log_level_rec) then
1287                raise error_found;
1288             end if;
1289 
1290 
1291             total_backout_drs.deprn_exp       := total_backout_drs.deprn_exp +
1292                                                  backout_drs.deprn_exp;
1293             total_backout_drs.reval_deprn_exp := total_backout_drs.reval_deprn_exp +
1294                                                  backout_drs.reval_deprn_exp;
1295             total_backout_drs.reval_amo       := total_backout_drs.reval_amo +
1296                                                  backout_drs.reval_amo;
1297             total_backout_drs.deprn_rsv       := total_backout_drs.deprn_rsv +
1298                                                  backout_drs.deprn_rsv;
1299             total_backout_drs.reval_rsv       := total_backout_drs.reval_rsv +
1300                                                  backout_drs.reval_rsv;
1301             total_backout_drs.bonus_deprn_amount := total_backout_drs.bonus_deprn_amount +
1302                                                  backout_drs.bonus_deprn_amount;
1303 
1304             total_backout_drs.bonus_deprn_rsv := total_backout_drs.bonus_deprn_rsv +
1305                                                  backout_drs.bonus_deprn_rsv;
1306 
1307             b := faxzdrs (backout_drs
1308 ,p_log_level_rec => p_log_level_rec);
1309 
1310          else
1311 
1312             -- newly created distribution
1313 
1314             -- retrieve the dist id
1315             open c_dist_id (p_asset_hdr_rec.asset_id,
1316                             l_asset_dist_rec.expense_ccid,
1317                             l_asset_dist_rec.location_ccid,
1318                             l_asset_dist_rec.assigned_to);
1319 
1320             fetch c_dist_id into l_asset_dist_rec.distribution_id;
1321             close c_dist_id;
1322 
1323             insert_drs.deprn_exp := total_backout_drs.deprn_exp *
1324                                     (l_asset_dist_rec.transaction_units /
1325                                      total_ua_backout);
1326 
1327             b := fa_utils_pkg.faxrnd ( insert_drs.deprn_exp, p_asset_hdr_rec.book_type_code
1328                         ,p_log_level_rec => p_log_level_rec);
1329 
1330             taken_drs.deprn_exp := taken_drs.deprn_exp + insert_drs.deprn_exp;
1331 
1332             insert_drs.reval_deprn_exp := total_backout_drs.reval_deprn_exp *
1333                                           (l_asset_dist_rec.transaction_units /
1334                                            total_ua_backout);
1335 
1336             b:=fa_utils_pkg.faxrnd(insert_drs.reval_deprn_exp, p_asset_hdr_rec.book_type_code
1337                         ,p_log_level_rec => p_log_level_rec);
1338 
1339             taken_drs.reval_deprn_exp := taken_drs.reval_deprn_exp +
1340                                          insert_drs.reval_deprn_exp;
1341             taken_drs.reval_deprn_exp := taken_drs.reval_deprn_exp +
1342                                          insert_drs.reval_deprn_exp;
1343 
1344             insert_drs.reval_amo := total_backout_drs.reval_amo *
1345                                     (l_asset_dist_rec.transaction_units /
1346                                      total_ua_backout);
1347 
1348             b := fa_utils_pkg.faxrnd (insert_drs.reval_amo, p_asset_hdr_rec.book_type_code
1349                         ,p_log_level_rec => p_log_level_rec);
1350 
1351             taken_drs.reval_amo := taken_drs.reval_amo + insert_drs.reval_amo;
1352 
1353             -- RKP: also do this for rsv, reval rsv
1354 
1355             insert_drs.deprn_rsv := total_backout_drs.deprn_rsv *
1356                                     (l_asset_dist_rec.transaction_units /
1357                                      total_ua_backout);
1358 
1359 
1360             b := fa_utils_pkg.faxrnd (insert_drs.deprn_rsv, p_asset_hdr_rec.book_type_code
1361                 ,p_log_level_rec => p_log_level_rec);
1362 
1363             taken_drs.deprn_rsv := taken_drs.deprn_rsv + insert_drs.deprn_rsv;
1364 
1365             insert_drs.reval_rsv := total_backout_drs.reval_rsv *
1366                                     (l_asset_dist_rec.transaction_units /
1367                                      total_ua_backout);
1368 
1369             b := fa_utils_pkg.faxrnd (insert_drs.reval_rsv, p_asset_hdr_rec.book_type_code
1370                 ,p_log_level_rec => p_log_level_rec);
1371 
1372             taken_drs.reval_rsv := taken_drs.reval_rsv + insert_drs.reval_rsv;
1373 
1374             insert_drs.bonus_deprn_amount := total_backout_drs.bonus_deprn_amount *
1375                                           (l_asset_dist_rec.transaction_units /
1376                                            total_ua_backout);
1377 
1378             b := fa_utils_pkg.faxrnd (insert_drs.bonus_deprn_amount, p_asset_hdr_rec.book_type_code
1379                 ,p_log_level_rec => p_log_level_rec);
1380 
1381 
1382             taken_drs.bonus_deprn_amount := taken_drs.bonus_deprn_amount +
1383                                          insert_drs.bonus_deprn_amount;
1384 
1385             insert_drs.bonus_deprn_rsv := total_backout_drs.bonus_deprn_rsv *
1386                                           (l_asset_dist_rec.transaction_units /
1387                                           total_ua_backout);
1388 
1389             b := fa_utils_pkg.faxrnd (insert_drs.bonus_deprn_rsv, p_asset_hdr_rec.book_type_code
1390                 ,p_log_level_rec => p_log_level_rec);
1391 
1392 
1393             taken_drs.bonus_deprn_rsv := taken_drs.bonus_deprn_rsv +
1394                                          insert_drs.bonus_deprn_rsv;
1395 
1396 
1397             if not fadgdd (p_trans_rec,
1398                            p_asset_hdr_rec,
1399                            p_asset_desc_rec,
1400                            p_asset_cat_rec,
1401                            l_asset_dist_rec,
1402                            l_period_rec,
1403                            ppd_ctr,
1404                            insert_drs,
1405                            FALSE,
1406                            l_mrc_sob_type_code
1407                            ,p_log_level_rec => p_log_level_rec) then
1408                raise error_found;
1409             end if;
1410          end if;
1411       end loop; -- end of dist loop
1412 
1413 --      if row_ctr <> 0 then bug# 5523484
1414     if row_ctr_temp <> 0 then
1415 
1416     -- Bug#6999340: Allocating unprocessed amount to the new distribution_id created.
1417     l_asset_dist_rec := p_asset_dist_tbl(row_ctr_temp);
1418 
1419       open c_dist_id (p_asset_hdr_rec.asset_id,
1420                             l_asset_dist_rec.expense_ccid,
1421                             l_asset_dist_rec.location_ccid,
1422                             l_asset_dist_rec.assigned_to);
1423 
1424 
1425        fetch c_dist_id into l_asset_dist_rec.distribution_id;
1426 
1427     if c_dist_id%found then  -- bug# 5523484
1428 
1429          insert_drs.deprn_exp       := total_backout_drs.deprn_exp - taken_drs.deprn_exp;
1430          insert_drs.reval_deprn_exp := total_backout_drs.reval_deprn_exp -
1431                                        taken_drs.reval_deprn_exp;
1432          insert_drs.reval_amo       := total_backout_drs.reval_amo-taken_drs.reval_amo;
1433 
1434          -- RKP: also do this for deprn rsv, reval rsv
1435          insert_drs.deprn_rsv := total_backout_drs.deprn_rsv-taken_drs.deprn_rsv;
1436          insert_drs.reval_rsv := total_backout_drs.reval_rsv-taken_drs.reval_rsv;
1437 
1438          insert_drs.bonus_deprn_amount := total_backout_drs.bonus_deprn_amount -
1439                                           taken_drs.bonus_deprn_amount;
1440 
1441          insert_drs.bonus_deprn_rsv := total_backout_drs.bonus_deprn_rsv -
1442                                        taken_drs.bonus_deprn_rsv;
1443 
1444          backout_share    := total_dep_backout - old_backout_taken;
1445          dist_total_deprn := backout_share;
1446 
1447         if ( insert_drs.deprn_exp <> 0 ) then -- bug# 5523484
1448          if not fadgdd (p_trans_rec,
1449                         p_asset_hdr_rec,
1450                         p_asset_desc_rec,
1451                         p_asset_cat_rec,
1452                         l_asset_dist_rec,
1453                         l_period_rec,
1454                         ppd_ctr,
1455                         insert_drs,
1456                         FALSE,
1457                         l_mrc_sob_type_code
1458                         ,p_log_level_rec => p_log_level_rec) then
1459             raise error_found;
1460          end if;
1461         end if;
1462     end if; -- bug# 5523484
1463     close c_dist_id;
1464 
1465       else
1466          fa_srvr_msg.add_message
1467                              (calling_fn => l_calling_fn,
1468                               name       => 'FA_DEPRN_NO_DIST_HIST',
1469                               token1     => 'ROUTINE',
1470                               value1     => l_calling_fn,
1471                               token2     => 'ASSET_NUM',
1472                               value2     => p_asset_desc_rec.asset_number,
1473                               token3     => 'ASSET_ID',
1474                               value3     => p_asset_hdr_rec.asset_id,
1475                               token4     => 'BOOK_TYPE',
1476                               value4     => p_asset_hdr_rec.book_type_code
1477                               ,p_log_level_rec => p_log_level_rec);
1478 
1479       end if;
1480 
1481    end loop;    -- end of mrc loop
1482 
1483    --put back the old value
1484    fnd_profile.put('GL_SET_OF_BKS_ID', l_profile_sob_id);
1485    fnd_client_info.set_currency_context (l_currency_context);
1486 
1487    return (TRUE);
1488 
1489 <<fadppt_no_ppt>>
1490     fa_srvr_msg.add_message(calling_fn => l_calling_fn,
1491                             name       => 'FA_DEPRN_NO_PRIOR',
1492                             token1     => 'ASSET_NUM',
1493                             value1     => p_asset_desc_rec.asset_number
1494                             ,p_log_level_rec => p_log_level_rec);
1495 
1496     -- SLA: fadrars call is obsolete:
1497 
1498     return (TRUE);
1499 
1500 Exception
1501 
1502    when error_found then
1503         fa_srvr_msg.add_message(calling_fn => l_calling_fn
1504                 ,p_log_level_rec => p_log_level_rec);
1505         --put back the old value
1506         fnd_profile.put('GL_SET_OF_BKS_ID', l_profile_sob_id);
1507         fnd_client_info.set_currency_context (l_currency_context);
1508 
1509         return (FALSE);
1510 
1511    when others then
1512 
1513         fa_srvr_msg.add_sql_error(calling_fn => l_calling_fn
1514                 ,p_log_level_rec => p_log_level_rec);
1515 
1516         --put back the old value
1517         fnd_profile.put('GL_SET_OF_BKS_ID', l_profile_sob_id);
1518         fnd_client_info.set_currency_context (l_currency_context);
1519 
1520         return (FALSE);
1521 
1522 end FADPPT;
1523 
1524 
1525 
1526 /*===========================================================================+
1527  |  NAME                                                                     |
1528  |      fadrars                                                              |
1529  |                                                                           |
1530  |  FUNCTION                                                                 |
1531  |      Resets fa_distribution_history.period_adjustment values to 0 for     |
1532  |  all records of a specified asset and book type.  Also resets the         |
1533  |  fa_books.adjustment_required_status to 'NONE' for the specified record.  |
1534  |                                                                           |
1535  |  NOTE                                                                     |
1536  |     obsolete for SLA for transfers                                        |
1537  +===========================================================================*/
1538 
1539 /*===========================================================================+
1540  |  NAME                                                                     |
1541  |      fadppa                                                               |
1542  |                                                                           |
1543  |  FUNCTION                                                                 |
1544  |      Calculates depreciation for a Prior Period Addition.                 |
1545  |      Also, added faduxx to update FA_BOOKS with new adjusted rates, bonus |
1546  |      rule, bonus rates for NBV assets                                     |
1547  |                                                                           |
1548  |  NOTES                                                                    |
1549  |      obsolete for SLA                                                     |
1550  +===========================================================================*/
1551 
1552 /*===========================================================================+
1553  |                                                                           |
1554  |      fadpaa                                                               |
1555  |                                                                           |
1556  |      FA Depreciation Process Adjustments Array                            |
1557  |                                                                           |
1558  |      Inserts a row into fa_deprn_detail for each row in the Adjustments   |
1559  |              array; then inserts one row into fa_deprn_summary for        |
1560  |              sum of values in array                                       |
1561  |                                                                           |
1562  |  NOTES                                                                    |
1563  |      obsolete for SLA                                                     |
1564  +===========================================================================*/
1565 
1566 /*===========================================================================+
1567  |  NAME                                                                     |
1568  |      fadadp                                                               |
1569  |                                                                           |
1570  |  FUNCTION                                                                 |
1571  |      Calculates adjusted depreciation for a specified asset_id and        |
1572  |  book_type and stores the distributed depreciation amounts in the         |
1573  |  fa_deprn_detail table.                                                   |
1574  |      Returns the total amount of adjusted depreciation on the asset.      |
1575  |                                                                           |
1576  |  NOTES                                                                    |
1577  |      This routine was rewritten to handle prior period transfers.  Now    |
1578  |      it does very little except call routines to handle either transfers  |
1579  |      or additions.                                                        |
1580  |                                                                           |
1581  |      obsolete for SLA                                                     |
1582  +===========================================================================*/
1583 
1584 
1585 /*===========================================================================+
1586  |  NAME                                                                     |
1587  |      fadatd                                                               |
1588  |                                                                           |
1589  |  FUNCTION                                                                 |
1590  |      1.  updates deprn_detail and deprn_summary records by adding the     |
1591  |              adjustments records to them where the deprn records exist.   |
1592  |      2.  inserts deprn_detail and deprn_summary records by copying        |
1593  |              the adjustments records where the deprn records don't exist. |
1594  |                                                                           |
1595  |  NOTES                                                                    |
1596  |      this remains in pro*c and is not part of SLA                         |
1597  +===========================================================================*/
1598 
1599 
1600 END FA_TRANSFER_PVT;