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