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