[Home] [Help]
PACKAGE BODY: APPS.FA_TRANSFER_XIT_PKG
Source
1 PACKAGE BODY FA_TRANSFER_XIT_PKG as
2 /* $Header: FAXTFRXB.pls 120.19.12020000.2 2012/07/19 12:47:01 mswetha ship $ */
3
4 g_release number := fa_cache_pkg.fazarel_release;
5
6 -- Constants used for function setacct
7 FA_TFR_COST CONSTANT NUMBER := 1;
8 FA_TFR_DEPRN_RSV CONSTANT NUMBER := 2;
9 FA_TFR_REVAL_RSV CONSTANT NUMBER := 3;
10 FA_TFR_BONUS_DEPRN_RSV CONSTANT NUMBER := 6;
11 FA_TFR_IMPAIRMENT_RSV CONSTANT NUMBER := 7;
12 FA_CAPITAL_ADJUSTMENT CONSTANT NUMBER := 8; -- Bug 6666666
13 FA_GENERAL_FUND CONSTANT NUMBER := 9; -- Bug 6666666
14
15
16
17 /* BUG# 1823498 MRC changes
18 * following cursor was borrowed from famcospb.pls and is
19 * used to pick up the primary and all associated reporting books
20 * for processing
21 * -- bridgway 6/20/01
22 */
23
24 CURSOR n_sob_id (p_psob_id IN NUMBER,
25 p_book_type_code IN VARCHAR2) is
26 SELECT p_psob_id AS sob_id,
27 1 AS index_id
28 FROM dual
29 UNION
30 SELECT set_of_books_id AS sob_id,
31 2 AS index_id
32 FROM fa_mc_book_controls
33 WHERE book_type_code = p_book_type_code
34 AND primary_set_of_books_id = p_psob_id
35 AND enabled_flag = 'Y'
36 ORDER BY 2;
37
38
39 --
40 -- FUNCTION fautfr
41 --
42
43 FUNCTION fautfr(X_thid IN NUMBER,
44 X_asset_id IN NUMBER,
45 X_book IN VARCHAR2,
46 X_txn_type_code IN VARCHAR2,
47 X_period_ctr IN NUMBER,
48 X_curr_units IN NUMBER,
49 X_today IN DATE,
50 X_old_cat_id IN NUMBER,
51 X_new_cat_id IN NUMBER,
52 X_asset_type IN VARCHAR2,
53 X_last_update_date IN DATE default sysdate,
54 X_last_updated_by IN NUMBER default -1,
55 X_last_update_login IN NUMBER default -1,
56 X_init_message_flag IN VARCHAR2 DEFAULT 'NO', p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
57 return BOOLEAN is
58
59
60 h_amount_cleard NUMBER := 0;
61 h_book fa_book_controls.book_type_code%TYPE;
62 h_book_class fa_book_controls.book_class%TYPE;
63 h_dist_book fa_book_controls.distribution_source_book%TYPE;
64
65 h_date_eff DATE;
66 h_msg_name VARCHAR2(30) := NULL;
67 h_cur_per_ctr NUMBER;
68 h_period_ctr NUMBER;
69
70 h_adj fa_adjust_type_pkg.fa_adj_row_struct;
71 h_dpr fa_std_types.fa_deprn_row_struct;
72
73 h_proceed BOOLEAN;
74 ERROR_FOUND EXCEPTION;
75 h_count NUMBER;
76 h_status BOOLEAN;
77
78 -- BUG# 1823498 mrc changes
79 h_primary_sob_id number;
80 h_profile_sob_id number;
81 h_currency_context varchar2(64);
82 h_mrc_sob_type_code varchar2(1);
83
84 --bug2353154
85 l_account_flex NUMBER;
86 l_bal_segnum NUMBER;
87 l_old_dist_id NUMBER;
88 l_old_ccid NUMBER;
89 l_total_amt_to_prorate NUMBER;
90 l_total_units_to_process NUMBER;
91 l_amount_inserted_tr_out NUMBER;
92 l_old_bal_seg VARCHAR2(25);
93 h_pc number;
94 h_tracking_method VARCHAR2(30);
95 h_member_rollup_flag VARCHAR2(1);
96 h_is_prior_period boolean;
97 h_exp_moved boolean := false;
98
99 -- R12 removing this cursor as FAVDISTB.pls now drives by book
100
101 BEGIN
102
103 if (X_init_message_flag = 'YES') then
104 FA_SRVR_MSG.INIT_SERVER_MESSAGE; /* init server msg stack */
105 fa_debug_pkg.initialize; /* init debug msg stack */
106 end if;
107
108 /* BUG# 1823498
109 * get the current sob profile option value for later usage
110 * as it needs to reset upon completion or failure, then get
111 * the set_of_books_id for the corp book being processed
112 */
113
114 if (X_txn_type_code NOT in ('TRANSFER','UNIT ADJUSTMENT','RECLASS',
115 'TRANSFER OUT')) then
116 return (TRUE);
117 end if;
118
119 if (p_log_level_rec.statement_level) then
120 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fautfr',
121 element => 'txn_type_code',
122 value => X_txn_type_code, p_log_level_rec => p_log_level_rec);
123 end if;
124
125 if (nvl(fa_cache_pkg.fazcbc_record.allow_group_deprn_flag, 'N') = 'Y' and
126 nvl(fa_cache_pkg.fazcbc_record.allow_member_tracking_flag, 'N') = 'Y') then
127 select nvl(bk.tracking_method, 'NONE'),
128 nvl(bk.member_rollup_flag, 'N')
129 into h_tracking_method,
130 h_member_rollup_flag
131 from fa_books bk
132 where asset_id = X_asset_id
133 and book_type_code = X_book
134 and transaction_header_id_out is null;
135
136 else
137 h_tracking_method := 'NONE';
138 h_member_rollup_flag := 'Y';
139 end if;
140
141
142 h_adj.asset_invoice_id := 0;
143 h_adj.leveling_flag := TRUE;
144
145 if (X_txn_type_code = 'RECLASS') then
146 h_adj.source_type_code := 'RECLASS';
147 else
148 h_adj.source_type_code := 'TRANSFER';
149 end if;
150
151 h_adj.code_combination_id := 0;
152 h_adj.transaction_header_id := X_thid;
153 h_adj.asset_id := X_asset_id;
154 h_adj.adjustment_amount := 0;
155 h_adj.distribution_id := 0;
156 h_adj.annualized_adjustment := 0;
157 h_adj.last_update_date := X_today;
158 h_adj.current_units := X_curr_units;
159 h_adj.selection_thid := X_thid;
160 h_adj.flush_adj_flag := FALSE;
161 h_adj.gen_ccid_flag := TRUE;
162 h_adj.amount_inserted := 0;
163
164 h_msg_name := 'FA_TFR_BOOK_INFO';
165
166 h_proceed := TRUE;
167 h_book := X_book;
168
169 if (X_txn_type_code = 'TRANSFER OUT') then
170 h_dist_book := fa_cache_pkg.fazcbc_record.distribution_source_book;
171 if (h_dist_book = h_book) then
172 return TRUE;
173 end if;
174 end if;
175
176
177 -- SLA: always used passed period counter
178 h_cur_per_ctr := X_period_ctr;
179
180 h_adj.book_type_code := h_book;
181 h_adj.period_counter_created := h_cur_per_ctr;
182 h_adj.period_counter_adjusted := h_cur_per_ctr;
183
184 h_primary_sob_id := fa_cache_pkg.fazcbc_record.set_of_books_id;
185
186 -- BUG# 6951826
187 if (X_Asset_Type <> 'GROUP' and
188 (h_tracking_method = 'ALLOCATE' OR
189 (h_tracking_method = 'CALCULATE' AND
190 h_member_rollup_flag = 'N'))) then
191 h_adj.track_member_flag := 'Y';
192 else
193 h_adj.track_member_flag := null;
194 end if;
195
196 /* BUG# 1823498 adding for MRC enhancements
197 * loop through each SOB (primary and reporting) and
198 * and process each directly to avoid rounding errors
199 * -- bridgway 06/20/01
200 */
201
202 for c_rec in n_sob_id(h_primary_sob_id, h_book) loop
203
204 if c_rec.index_id = 1 then
205 h_mrc_sob_type_code := 'P';
206 else
207 h_mrc_sob_type_code := 'R';
208 end if;
209
210 h_dpr.asset_id := X_asset_id;
211 h_dpr.book := h_book;
212 h_dpr.period_ctr := 0;
213 h_dpr.dist_id := 0;
214 h_dpr.mrc_sob_type_code := h_mrc_sob_type_code;
215 h_dpr.set_of_books_id := c_rec.sob_id;
216
217 -- query for the deprn reserve, reval reserve, before we clear out
218 -- the accounts, for a consistent read value
219 -- bonus: bonus_deprn_rsv,bonus_ytd_deprn,bonus_exp added
220 -- to query balances
221 fa_query_balances_pkg.query_balances_int(
222 X_DPR_ROW => h_dpr,
223 X_RUN_MODE => 'STANDARD',
224 X_DEBUG => FALSE,
225 X_SUCCESS => h_status,
226 X_CALLING_FN => 'FA_TRANSFER_XIT_PKG.fautfr',
227 X_TRANSACTION_HEADER_ID => -1, p_log_level_rec => p_log_level_rec);
228 if (NOT h_status) then
229 raise ERROR_FOUND;
230 end if;
231
232
233 if (X_txn_type_code = 'TRANSFER') then
234
235 if (NOT fatsgl(X_adj => h_adj,
236 X_cat_id => X_new_cat_id,
237 X_asset_type => X_asset_type,
238 X_last_update_date => X_last_update_date,
239 X_last_updated_by => X_last_updated_by,
240 X_last_update_login => X_last_update_login,
241 X_mrc_sob_type_code => h_mrc_sob_type_code,
242 X_set_of_books_id => c_rec.sob_id,
243 p_log_level_rec => p_log_level_rec)) then
244 raise ERROR_FOUND;
245 end if;
246
247 -- bonus: implies reclass
248 else
249
250 h_adj.track_member_flag := null;
251
252 -- move the cost
253 if (NOT fadotfr(X_adj_ptr => h_adj,
254 X_acctcode => FA_TFR_COST,
255 X_old_cat_id => X_old_cat_id,
256 X_new_cat_id => X_new_cat_id,
257 X_asset_type => X_asset_type,
258 X_last_update_date => X_last_update_date,
259 X_last_updated_by => X_last_updated_by,
260 X_last_update_login => X_last_update_login,
261 X_mrc_sob_type_code => h_mrc_sob_type_code,
262 X_set_of_books_id => c_rec.sob_id,
263 p_log_level_rec => p_log_level_rec)) then
264 raise ERROR_FOUND;
265 end if;
266
267
268 -- BUG# 6951826
269 if (X_Asset_Type <> 'GROUP' and
270 (h_tracking_method = 'ALLOCATE' OR
271 (h_tracking_method = 'CALCULATE' AND
272 h_member_rollup_flag = 'N'))) then
273 h_adj.track_member_flag := 'Y';
274 else
275 h_adj.track_member_flag := null;
276 end if;
277
278
279 -- move the deprn reserve
280 h_adj.flush_adj_flag := TRUE;
281 if (NOT fadotfr(X_adj_ptr => h_adj,
282 X_acctcode => FA_TFR_DEPRN_RSV,
283 X_old_cat_id => X_old_cat_id,
284 X_new_cat_id => X_new_cat_id,
285 X_asset_type => X_asset_type,
286 X_last_update_date => X_last_update_date,
287 X_last_updated_by => X_last_updated_by,
288 X_last_update_login => X_last_update_login,
289 X_mrc_sob_type_code => h_mrc_sob_type_code,
290 X_set_of_books_id => c_rec.sob_id,
291 p_log_level_rec => p_log_level_rec)) then
292 raise ERROR_FOUND;
293 end if;
294
295
296 -- bonus: move the bonus deprn reserve if bonus reserve exist
297 if nvl(h_dpr.bonus_deprn_rsv,0) <> 0 then
298 h_adj.flush_adj_flag := TRUE;
299 if (NOT fadotfr(X_adj_ptr => h_adj,
300 X_acctcode => FA_TFR_BONUS_DEPRN_RSV,
301 X_old_cat_id => X_old_cat_id,
302 X_new_cat_id => X_new_cat_id,
303 X_asset_type => X_asset_type,
304 X_last_update_date => X_last_update_date,
305 X_last_updated_by => X_last_updated_by,
306 X_last_update_login => X_last_update_login,
307 X_mrc_sob_type_code => h_mrc_sob_type_code,
308 X_set_of_books_id => c_rec.sob_id,
309 p_log_level_rec => p_log_level_rec)) then
310 raise ERROR_FOUND; end if;
311 end if;
312
313 if nvl(h_dpr.impairment_rsv,0) <> 0 then
314 h_adj.flush_adj_flag := TRUE;
315 if (NOT fadotfr(X_adj_ptr => h_adj,
316 X_acctcode => FA_TFR_IMPAIRMENT_RSV,
317 X_old_cat_id => X_old_cat_id,
318 X_new_cat_id => X_new_cat_id,
319 X_asset_type => X_asset_type,
320 X_last_update_date => X_last_update_date,
321 X_last_updated_by => X_last_updated_by,
322 X_last_update_login => X_last_update_login,
323 X_mrc_sob_type_code => h_mrc_sob_type_code,
324 X_set_of_books_id => c_rec.sob_id,
325 p_log_level_rec => p_log_level_rec)) then
326 raise ERROR_FOUND; end if;
327 end if;
328
329 -- move the reval_reserve, set flush = TRUE to insert all the
330 -- FA_ADJUSTMENTS rows to the database
331
332 if (nvl(h_dpr.reval_rsv,0) <> 0) then
333 h_adj.flush_adj_flag := TRUE;
334 if (NOT fadotfr(X_adj_ptr => h_adj,
335 X_acctcode => FA_TFR_REVAL_RSV,
336 X_old_cat_id => X_old_cat_id,
337 X_new_cat_id => X_new_cat_id,
338 X_asset_type => X_asset_type,
339 X_last_update_date => X_last_update_date,
340 X_last_updated_by => X_last_updated_by,
341 X_last_update_login => X_last_update_login,
342 X_mrc_sob_type_code => h_mrc_sob_type_code,
343 X_set_of_books_id => c_rec.sob_id,
344 p_log_level_rec => p_log_level_rec)) then
345 raise ERROR_FOUND;
346 end if;
347 end if;
348
349 /* Bug 6666666 : Added for SORP Compliance */
350 if nvl(h_dpr.capital_adjustment,0) <> 0 then
351 -- h_adj.flush_adj_flag := TRUE;
352 if (NOT fadotfr(X_adj_ptr => h_adj,
353 X_acctcode => FA_CAPITAL_ADJUSTMENT,
354 X_old_cat_id => X_old_cat_id,
355 X_new_cat_id => X_new_cat_id,
356 X_asset_type => X_asset_type,
357 X_last_update_date => X_last_update_date,
358 X_last_updated_by => X_last_updated_by,
359 X_last_update_login => X_last_update_login,
360 X_mrc_sob_type_code => h_mrc_sob_type_code,
361 X_set_of_books_id => c_rec.sob_id,
362 p_log_level_rec => p_log_level_rec)) then
363 raise ERROR_FOUND; end if;
364 end if;
365
366 /* Bug 6666666 : Added for SORP Compliance */
367 if nvl(h_dpr.general_fund,0) <> 0 then
368 -- h_adj.flush_adj_flag := TRUE;
369 if (NOT fadotfr(X_adj_ptr => h_adj,
370 X_acctcode => FA_GENERAL_FUND,
371 X_old_cat_id => X_old_cat_id,
372 X_new_cat_id => X_new_cat_id,
373 X_asset_type => X_asset_type,
374 X_last_update_date => X_last_update_date,
375 X_last_updated_by => X_last_updated_by,
376 X_last_update_login => X_last_update_login,
377 X_mrc_sob_type_code => h_mrc_sob_type_code,
378 X_set_of_books_id => c_rec.sob_id,
379 p_log_level_rec => p_log_level_rec)) then
380 raise ERROR_FOUND; end if;
381 end if;
382
383 end if; -- if X_txn_type_code
384
385 end loop; -- end mrc
386
387 /* Bug#4424613:
388 By having a new function faumvexp, we will be moving the existing catchup expense
389 created by amortized adj expense
390 to a new distribution created by reclass
391 in period of addition.
392 Please note that the main select in fautfr returns no rows to process in this scenario
393 though it is called even in period of addition.
394 */
395
396 -- R12 conditional logic
397 if (G_release = 11) then
398 h_is_prior_period := TRUE;
399 IF NOT faucper(X_asset_id => X_asset_id,
400 X_is_prior_period => h_is_prior_period,
401 X_book => X_book,
402 p_log_level_rec => p_log_level_rec) THEN
403 RAISE error_found;
404 END IF;
405
406 --Bug#7396223:
407 --Included Transfer along with reclass
408 if (NOT h_is_prior_period
409 and X_txn_type_code in ('RECLASS','TRANSFER')) then
410
411 IF NOT faumvexp(X_asset_id => X_asset_id
412 ,X_book_type_code => X_book
413 ,X_th_id => X_thid
414 ,X_to_category_id => X_new_cat_id
415 ,X_exp_moved => h_exp_moved
416 ,X_last_update_date => X_last_update_date
417 ,X_last_updated_by => X_last_updated_by
418 ,X_last_update_login => X_last_update_login,
419 p_log_level_rec => p_log_level_rec) THEN
420
421 RAISE error_found;
422 END IF;
423
424 end if;
425
426 end if;
427
428 return (TRUE);
429
430
431 EXCEPTION
432 when ERROR_FOUND then
433 fa_srvr_msg.add_message(calling_fn => 'FA_TRANSFER_XIT_PKG.fautfr',
434 name => h_msg_name, p_log_level_rec => p_log_level_rec);
435
436 return(FALSE);
437
438
439 when others then
440 fa_srvr_msg.add_sql_error(calling_fn => 'FA_TRANSFER_XIT_PKG.fautfr', p_log_level_rec => p_log_level_rec);
441
442 return(FALSE);
443
444 END;
445
446 --
447 -- FUNCTION fadotfr
448 --
449
450 FUNCTION fadotfr(X_adj_ptr IN OUT NOCOPY fa_adjust_type_pkg.fa_adj_row_struct,
451 X_acctcode IN NUMBER,
452 X_old_cat_id IN NUMBER,
453 X_new_cat_id IN NUMBER,
454 X_asset_type IN VARCHAR2,
455 X_last_update_date IN DATE default sysdate,
456 X_last_updated_by IN NUMBER default -1,
457 X_last_update_login IN NUMBER default -1,
458 X_mrc_sob_type_code IN VARCHAR2,
459 X_set_of_books_id IN NUMBER,
460 p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
461 return BOOLEAN is
462
463 h_amount_cleared NUMBER;
464 h_msg_name VARCHAR2(30);
465 h_token1 VARCHAR2(30);
466 h_token2 VARCHAR2(30);
467 h_value1 NUMBER;
468 h_value2 NUMBER;
469 ERROR_FOUND EXCEPTION;
470
471
472 BEGIN
473
474 h_msg_name := NULL;
475
476
477 -- clear out the account for all distributions
478 if (NOT setacct(X_adj_ptr => X_adj_ptr,
479 X_acctcode => X_acctcode,
480 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
481 X_cat_id => X_old_cat_id,
482 X_asset_type => X_asset_type,
483 p_log_level_rec => p_log_level_rec)) then
484 raise ERROR_FOUND;
485 end if;
486
487 X_adj_ptr.selection_retid := X_old_cat_id;
488 X_adj_ptr.selection_mode := fa_adjust_type_pkg.FA_AJ_CLEAR;
489 X_adj_ptr.mrc_sob_type_code := X_mrc_sob_type_code;
490 X_adj_ptr.source_dest_code := 'SOURCE';
491 X_adj_ptr.set_of_books_id := X_set_of_books_id;
492
493 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj_ptr,
494 X_last_update_date,
495 X_last_updated_by,
496 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
497 if (p_log_level_rec.statement_level) then
498 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fadotfr',
499 element => 'X_acctcode',
500 value => X_acctcode, p_log_level_rec => p_log_level_rec);
501 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fadotfr',
502 element => 'adjustment_type',
503 value => X_adj_ptr.adjustment_type, p_log_level_rec => p_log_level_rec);
504 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fadotfr',
505 element => 'select_mode',
506 value => X_adj_ptr.selection_mode, p_log_level_rec => p_log_level_rec);
507 end if;
508 raise ERROR_FOUND;
509 end if;
510
511 -- save amount cleared
512
513 h_amount_cleared := X_adj_ptr.amount_inserted;
514
515 -- set adjustment amount to be amount cleared
516 X_adj_ptr.adjustment_amount := h_amount_cleared;
517
518 X_adj_ptr.amount_inserted := 0;
519
520 -- transfer cleared amount to new account
521 if (NOT setacct(X_adj_ptr => X_adj_ptr,
522 X_acctcode => X_acctcode,
523 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
524 X_cat_id => X_new_cat_id,
525 X_asset_type => X_asset_type,
526 p_log_level_rec => p_log_level_rec )) then
527 raise ERROR_FOUND;
528 end if;
529
530 X_adj_ptr.selection_retid := X_new_cat_id;
531 X_adj_ptr.selection_mode := fa_adjust_type_pkg.FA_AJ_ACTIVE;
532 X_adj_ptr.mrc_sob_type_code := X_mrc_sob_type_code;
533 X_adj_ptr.source_dest_code := 'DEST';
534 X_adj_ptr.set_of_books_id := X_set_of_books_id;
535
536 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj_ptr,
537 X_last_update_date,
538 X_last_updated_by,
539 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
540 if (p_log_level_rec.statement_level) then
541 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fadotfr',
542 element => 'X_acctcode',
543 value => X_acctcode, p_log_level_rec => p_log_level_rec);
544 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fadotfr',
545 element => 'adjustment_type',
546 value => X_adj_ptr.adjustment_type, p_log_level_rec => p_log_level_rec);
547 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fadotfr',
548 element => 'select_mode',
549 value => X_adj_ptr.selection_mode, p_log_level_rec => p_log_level_rec);
550 end if;
551 raise ERROR_FOUND;
552 end if;
553
554 -- check to make sure amount cleared is same as amount transferred.
555 if (h_amount_cleared <> X_adj_ptr.amount_inserted) then
556 h_msg_name := 'FA_TFR_UNBAL_AMTS';
557 h_token1 := 'CLEARED';
558 h_token2 := 'INSERTED';
559 h_value1 := h_amount_cleared;
560 h_value2 := X_adj_ptr.amount_inserted;
561 raise ERROR_FOUND;
562 end if;
563
564 /* clear the amount inserted */
565
566 X_adj_ptr.amount_inserted := 0;
567
568 return TRUE;
569
570
571 EXCEPTION
572 when ERROR_FOUND then
573 fa_srvr_msg.add_message(calling_fn => 'FA_TRANSFER_XIT_PKG.fadotfr',
574 name => h_msg_name,
575 token1=> h_token1, value1=>h_value1,
576 token2=> h_token2, value2=>h_value2, p_log_level_rec => p_log_level_rec);
577 return FALSE;
578
579 when OTHERS then
580 fa_srvr_msg.add_sql_error(calling_fn => 'FA_TRANSFER_XIT_PKG.fadotfr', p_log_level_rec => p_log_level_rec);
581 return FALSE;
582
583 END fadotfr;
584
585
586 --
587 -- FUNCTION setacct
588 --
589
590 FUNCTION setacct(X_adj_ptr IN OUT NOCOPY fa_adjust_type_pkg.fa_adj_row_struct,
591 X_acctcode IN NUMBER,
592 X_select_mode IN NUMBER,
593 X_cat_id IN NUMBER,
594 X_asset_type IN VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
595 return BOOLEAN is
596
597 h_book X_adj_ptr.book_type_code%type;
598 h_category_id NUMBER;
599
600 BEGIN
601
602 if (p_log_level_rec.statement_level) then
603 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.setacct',
604 element => 'X_acctcode',
605 value => X_acctcode, p_log_level_rec => p_log_level_rec);
606 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.setacct',
607 element => 'adjustment_type',
608 value => X_adj_ptr.adjustment_type, p_log_level_rec => p_log_level_rec);
609 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.setacct',
610 element => 'X_select_mode',
611 value => X_select_mode, p_log_level_rec => p_log_level_rec);
612 end if;
613
614 h_book := X_adj_ptr.book_type_code;
615 h_category_id := X_cat_id;
616
617 if (X_acctcode = FA_TFR_COST) then
618
619 X_adj_ptr.adjustment_type := 'COST';
620
621 if (X_asset_type = 'CIP') then
622 X_adj_ptr.account_type := 'CIP_COST_ACCT';
623
624 select cip_cost_acct
625 into X_adj_ptr.account
626 from fa_category_books
627 where book_type_code = h_book
628 and category_id = h_category_id;
629
630 elsif (X_asset_type = 'CAPITALIZED' OR
631 X_asset_type = 'EXPENSED' OR
632 X_asset_type = 'GROUP' ) then
633
634 X_adj_ptr.account_type := 'ASSET_COST_ACCT';
635
636 select asset_cost_acct
637 into X_adj_ptr.account
638 from fa_category_books
639 where book_type_code = h_book
640 and category_id = h_category_id;
641 end if;
642
643 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
644 X_adj_ptr.debit_credit_flag := 'CR';
645 else
646 X_adj_ptr.debit_credit_flag := 'DR';
647 end if;
648
649 elsif (X_acctcode = FA_TFR_DEPRN_RSV) then
650
651 X_adj_ptr.adjustment_type := 'RESERVE';
652 X_adj_ptr.account_type := 'DEPRN_RESERVE_ACCT';
653
654
655 select deprn_reserve_acct
656 into X_adj_ptr.account
657 from fa_category_books
658 where book_type_code = h_book
659 and category_id = h_category_id;
660
661 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
662 X_adj_ptr.debit_credit_flag := 'DR';
663 else
664 X_adj_ptr.debit_credit_flag := 'CR';
665 end if;
666 -- bonus
667 elsif (X_acctcode = FA_TFR_BONUS_DEPRN_RSV) then
668
669 X_adj_ptr.adjustment_type := 'BONUS RESERVE';
670 X_adj_ptr.account_type := 'BONUS_DEPRN_RESERVE_ACCT';
671
672
673 select bonus_deprn_reserve_acct
674 into X_adj_ptr.account
675 from fa_category_books
676 where book_type_code = h_book
677 and category_id = h_category_id;
678
679 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
680 X_adj_ptr.debit_credit_flag := 'DR';
681 else
682 X_adj_ptr.debit_credit_flag := 'CR';
683 end if;
684
685 elsif (X_acctcode = FA_TFR_IMPAIRMENT_RSV) then
686
687 X_adj_ptr.adjustment_type := 'IMPAIR RESERVE';
688 X_adj_ptr.account_type := 'IMPAIR_RESERVE_ACCT';
689
690
691 select impair_reserve_acct
692 into X_adj_ptr.account
693 from fa_category_books
694 where book_type_code = h_book
695 and category_id = h_category_id;
696
697 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
698 X_adj_ptr.debit_credit_flag := 'DR';
699 else
700 X_adj_ptr.debit_credit_flag := 'CR';
701 end if;
702
703 /*Bug 6666666 : Added for SORP Compliance */
704 elsif (X_acctcode = FA_CAPITAL_ADJUSTMENT) then
705
706 X_adj_ptr.adjustment_type := 'CAPITAL ADJ';
707 X_adj_ptr.account_type := 'CAPITAL_ADJ_ACCT';
708
709 select capital_adj_acct
710 into X_adj_ptr.account
711 from fa_category_books
712 where book_type_code = h_book
713 and category_id = h_category_id;
714
715 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
716 X_adj_ptr.debit_credit_flag := 'CR';
717 else
718 X_adj_ptr.debit_credit_flag := 'DR';
719 end if;
720
721 /*Bug 6666666 : Added for SORP Compliance */
722 elsif (X_acctcode = FA_GENERAL_FUND) then
723
724 X_adj_ptr.adjustment_type := 'GENERAL FUND';
725 X_adj_ptr.account_type := 'GENERAL_FUND_ACCT';
726
727 select general_fund_acct
728 into X_adj_ptr.account
729 from fa_category_books
730 where book_type_code = h_book
731 and category_id = h_category_id;
732
733 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
734 X_adj_ptr.debit_credit_flag := 'DR';
735 else
736 X_adj_ptr.debit_credit_flag := 'CR';
737 end if;
738
739 elsif (X_acctcode = FA_TFR_REVAL_RSV) then
740
741 X_adj_ptr.adjustment_type := 'REVAL RESERVE';
742 X_adj_ptr.account_type := 'REVAL_RESERVE_ACCT';
743
744 select reval_reserve_acct
745 into X_adj_ptr.account
746 from fa_category_books
747 where book_type_code = h_book
748 and category_id = h_category_id;
749
750 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
751 X_adj_ptr.debit_credit_flag := 'DR';
752 else
753 X_adj_ptr.debit_credit_flag := 'CR';
754 end if;
755
756 end if;
757
758 if (X_select_mode = fa_adjust_type_pkg.FA_AJ_CLEAR) then
759 X_adj_ptr.source_dest_code := 'SOURCE';
760 else
761 X_adj_ptr.source_dest_code := 'DEST';
762 end if;
763
764 return TRUE;
765
766 EXCEPTION
767 when OTHERS then
768 fa_srvr_msg.add_sql_error(calling_fn=>'FA_TRANSFER_XIT_PKG.setacct', p_log_level_rec => p_log_level_rec);
769 return FALSE;
770
771 END setacct;
772
773
774 --
775 -- FUNCTION fatsgl
776 --
777
778 FUNCTION fatsgl(X_adj IN OUT NOCOPY fa_adjust_type_pkg.fa_adj_row_struct,
779 X_cat_id IN NUMBER,
780 X_asset_type IN VARCHAR2,
781 X_last_update_date IN DATE default sysdate,
782 X_last_updated_by IN NUMBER default -1,
783 X_last_update_login IN NUMBER default -1,
784 X_mrc_sob_type_code IN VARCHAR2,
785 X_set_of_books_id IN NUMBER,
786 p_log_level_rec IN FA_API_TYPES.log_level_rec_type)
787 return BOOLEAN is
788
789 h_dpr FA_STD_TYPES.FA_DEPRN_ROW_STRUCT;
790 h_msg_name VARCHAR2(30);
791 h_status BOOLEAN;
792
793 h_total_cost_to_prorate NUMBER := 0;
794 h_total_rsv_to_prorate NUMBER := 0;
795 h_total_rev_to_prorate NUMBER := 0;
796 h_total_bonus_rsv_to_prorate NUMBER := 0;
797 h_total_impair_rsv_to_prorate NUMBER := 0;
798
799 h_total_capital_to_prorate NUMBER := 0; -- Bug 6666666 : Capital Adjustment to prorate
800 h_total_general_to_prorate NUMBER := 0; -- Bug 6666666 : General Fund to prorate
801
802 h_total_units_to_process NUMBER := 0;
803 h_num_units_processed NUMBER := 0;
804
805 h_cost_inserted_so_far NUMBER := 0;
806 h_rsv_inserted_so_far NUMBER := 0;
807 h_rev_inserted_so_far NUMBER := 0;
808 h_bonus_rsv_inserted_so_far NUMBER := 0;
809 h_impair_rsv_inserted_so_far NUMBER := 0;
810
811 h_capital_inserted_so_far NUMBER := 0; -- Bug 6666666 : Capital Adjustment inserted so far
812 h_general_inserted_so_far NUMBER := 0; -- Bug 6666666 : General Fund inserted so far
813
814 h_term_dist_flag NUMBER;
815 h_thid NUMBER;
816 h_dist_id NUMBER;
817 h_ccid NUMBER;
818 h_units_assigned NUMBER;
819
820 l_orig_track_member_flag varchar2(1);
821
822 ERROR_FOUND EXCEPTION;
823
824 -- find all distributions affected by the transfer
825 CURSOR dist_cursor is
826
827 SELECT
828 DECODE(TH.TRANSACTION_HEADER_ID,
829 DH.TRANSACTION_HEADER_ID_OUT, 1,
830 DH.TRANSACTION_HEADER_ID_IN, 2,
831 3),
832 TH.TRANSACTION_HEADER_ID,
833 DH.DISTRIBUTION_ID,
834 DH.CODE_COMBINATION_ID,
835 DH.UNITS_ASSIGNED
836 FROM
837 FA_DISTRIBUTION_HISTORY DH,
838 FA_TRANSACTION_HEADERS TH
839 WHERE
840 TH.TRANSACTION_HEADER_ID = X_adj.selection_thid AND
841 (TH.TRANSACTION_HEADER_ID = DH.TRANSACTION_HEADER_ID_IN OR
842 TH.TRANSACTION_HEADER_ID = DH.TRANSACTION_HEADER_ID_OUT)
843 ORDER BY
844 1,
845 DH.DISTRIBUTION_ID;
846
847 BEGIN
848
849 l_orig_track_member_flag := X_adj.track_member_flag;
850
851 h_msg_name := 'FA_TFR_OPEN_DIST';
852
853 open dist_cursor;
854
855 loop
856
857 h_msg_name := 'FA_TFR_FETCH_DIST';
858
859 fetch dist_cursor into
860 h_term_dist_flag,
861 h_thid,
862 h_dist_id,
863 h_ccid,
864 h_units_assigned;
865
866 exit when dist_cursor%NOTFOUND;
867
868 h_msg_name := NULL;
869
870 X_adj.code_combination_id := h_ccid;
871 X_adj.distribution_id := h_dist_id;
872
873 -- call the insert into fa_adjusments funtion in SINGLE mode to insert the
874 -- individual fa_adjustments rows. other values already set in fautfr.
875
876 X_adj.selection_mode := fa_adjust_type_pkg.FA_AJ_TRANSFER_SINGLE;
877 X_adj.gen_ccid_flag := TRUE;
878
879 -- will process terminated rows first.
880 if (h_term_dist_flag = 1) then
881 -- if terminated distribution rows
882
883 h_total_units_to_process := h_total_units_to_process + h_units_assigned;
884
885 -- get the amounts to insert: cost, deprn_reserve, reval_reserve
886 -- by calling the query fin info funtion.
887
888 h_dpr.asset_id := X_adj.asset_id;
889 h_dpr.period_ctr := 0;
890 h_dpr.book := X_adj.book_type_code;
891 h_dpr.dist_id := h_dist_id;
892 h_dpr.mrc_sob_type_code := X_mrc_sob_type_code;
893 h_dpr.set_of_books_id := X_set_of_books_id;
894
895 fa_query_balances_pkg.query_balances_int(
896 X_DPR_ROW => h_dpr,
897 X_RUN_MODE => 'STANDARD',
898 X_DEBUG => FALSE,
899 X_SUCCESS => h_status,
900 X_CALLING_FN => 'FA_TRANSFER_XIT_PKG.fatsgl',
901 X_TRANSACTION_HEADER_ID => -1, p_log_level_rec => p_log_level_rec);
902 if (NOT h_status) then
903 raise ERROR_FOUND;
904 end if;
905
906 if (p_log_level_rec.statement_level) then
907 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
908 element => 'h_dpr.cost',
909 value => h_dpr.cost, p_log_level_rec => p_log_level_rec);
910 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
911 element => 'h_dpr.deprn_reserve',
912 value => h_dpr.deprn_rsv, p_log_level_rec => p_log_level_rec);
913 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
914 element => 'h_dpr.reval_reserve',
915 value => h_dpr.reval_rsv, p_log_level_rec => p_log_level_rec);
916 end if;
917
918 -- clear cost
919
920 if (NOT setacct(X_adj_ptr => X_adj,
921 X_acctcode => FA_TFR_COST,
922 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
923 X_cat_id => X_cat_id,
924 X_asset_type => X_asset_type,
925 p_log_level_rec => p_log_level_rec)) then
926 raise ERROR_FOUND;
927 end if;
928 X_adj.adjustment_amount := h_dpr.cost;
929 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
930 X_adj.track_member_flag := null;
931 X_adj.set_of_books_id := X_set_of_books_id;
932
933 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
934 X_last_update_date,
935 X_last_updated_by,
936 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
937 if (p_log_level_rec.statement_level) then
938 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
939 element => 'X_acctcode',
940 value => 'FA_TFR_COST', p_log_level_rec => p_log_level_rec);
941 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
942 element => 'adjustment_type',
943 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
944 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
945 element => 'select_mode',
946 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
947 end if;
948 raise ERROR_FOUND;
949 end if;
950
951
952 -- accumulate cost from terminated rows to redistribute to active rows.
953 h_total_cost_to_prorate := h_total_cost_to_prorate +
954 X_adj.amount_inserted;
955
956
957 X_adj.track_member_flag := l_orig_track_member_flag;
958
959 -- clear deprn_reserve
960
961 if (NOT setacct(X_adj_ptr => X_adj,
962 X_acctcode => FA_TFR_DEPRN_RSV,
963 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
964 X_cat_id => X_cat_id,
965 X_asset_type => X_asset_type,
966 p_log_level_rec => p_log_level_rec)) then
967 raise ERROR_FOUND;
968 end if;
969 X_adj.adjustment_amount := h_dpr.deprn_rsv;
970 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
971 X_adj.set_of_books_id := X_set_of_books_id;
972
973 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
974 X_last_update_date,
975 X_last_updated_by,
976 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
977 if (p_log_level_rec.statement_level) then
978 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
979 element => 'X_acctcode',
980 value => 'FA_TFR_DEPRN_RSV', p_log_level_rec => p_log_level_rec);
981 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
982 element => 'adjustment_type',
983 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
984 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
985 element => 'select_mode',
986 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
987 end if;
988 raise ERROR_FOUND;
989 end if;
990 -- accumulate deprn_reserve from terminated rows to redistribute to active rows
991 h_total_rsv_to_prorate := h_total_rsv_to_prorate +
992 X_adj.amount_inserted;
993
994 -- clear bonus_deprn_reserve
995 -- bonus: move the bonus deprn reserve if bonus reserve exist
996 if nvl(h_dpr.bonus_deprn_rsv,0) <> 0 then
997 if (NOT setacct(X_adj_ptr => X_adj,
998 X_acctcode => FA_TFR_BONUS_DEPRN_RSV,
999 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
1000 X_cat_id => X_cat_id,
1001 X_asset_type => X_asset_type,
1002 p_log_level_rec => p_log_level_rec)) then
1003 raise ERROR_FOUND;
1004 end if;
1005 X_adj.adjustment_amount := h_dpr.bonus_deprn_rsv;
1006 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1007 X_adj.set_of_books_id := X_set_of_books_id;
1008
1009 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1010 X_last_update_date,
1011 X_last_updated_by,
1012 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1013 if (p_log_level_rec.statement_level) then
1014 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1015 element => 'X_acctcode',
1016 value => 'FA_TFR_BONUS_DEPRN_RSV', p_log_level_rec => p_log_level_rec);
1017 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1018 element => 'adjustment_type',
1019 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1020 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1021 element => 'select_mode',
1022 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1023 end if;
1024 raise ERROR_FOUND;
1025 end if;
1026
1027
1028 -- accumulate bonus_deprn_reserve from terminated rows to redistribute to active rows
1029 -- bonus: calculation to be checked.
1030 -- bonus: same logic as for deprn reserve used.
1031 h_total_bonus_rsv_to_prorate := h_total_bonus_rsv_to_prorate +
1032 X_adj.amount_inserted;
1033 end if; -- end bonus rule condition
1034
1035 if nvl(h_dpr.impairment_rsv,0) <> 0 then
1036 if (NOT setacct(X_adj_ptr => X_adj,
1037 X_acctcode => FA_TFR_IMPAIRMENT_RSV,
1038 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
1039 X_cat_id => X_cat_id,
1040 X_asset_type => X_asset_type,
1041 p_log_level_rec => p_log_level_rec)) then
1042 raise ERROR_FOUND;
1043 end if;
1044 X_adj.adjustment_amount := h_dpr.impairment_rsv;
1045 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1046 X_adj.set_of_books_id := X_set_of_books_id;
1047
1048 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1049 X_last_update_date,
1050 X_last_updated_by,
1051 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1052 if (p_log_level_rec.statement_level) then
1053 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1054 element => 'X_acctcode',
1055 value => 'FA_TFR_IMPAIRMENT_RSV', p_log_level_rec => p_log_level_rec);
1056 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1057 element => 'adjustment_type',
1058 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1059 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1060 element => 'select_mode',
1061 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1062 end if;
1063 raise ERROR_FOUND;
1064 end if;
1065
1066 h_total_impair_rsv_to_prorate :=
1067 h_total_impair_rsv_to_prorate + X_adj.amount_inserted;
1068
1069 end if;
1070
1071 -- Bug 6666666
1072 -- Capital Adjustment
1073 if nvl(h_dpr.capital_adjustment,0) <> 0 then
1074 if (NOT setacct(X_adj_ptr => X_adj,
1075 X_acctcode => FA_CAPITAL_ADJUSTMENT,
1076 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
1077 X_cat_id => X_cat_id,
1078 X_asset_type => X_asset_type,
1079 p_log_level_rec => p_log_level_rec)) then
1080 raise ERROR_FOUND;
1081 end if;
1082 X_adj.adjustment_amount := h_dpr.capital_adjustment;
1083 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1084 X_adj.set_of_books_id := X_set_of_books_id;
1085
1086 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1087 X_last_update_date,
1088 X_last_updated_by,
1089 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1090 if (p_log_level_rec.statement_level) then
1091 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1092 element => 'X_acctcode',
1093 value => 'FA_CAPITAL_ADJUSTMENT', p_log_level_rec => p_log_level_rec);
1094 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1095 element => 'adjustment_type',
1096 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1097 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1098 element => 'select_mode',
1099 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1100 end if;
1101 raise ERROR_FOUND;
1102 end if;
1103
1104 h_total_capital_to_prorate :=
1105 h_total_capital_to_prorate + X_adj.amount_inserted;
1106
1107 end if;
1108
1109 -- Bug 6666666
1110 -- General Fund
1111 if nvl(h_dpr.general_fund,0) <> 0 then
1112 if (NOT setacct(X_adj_ptr => X_adj,
1113 X_acctcode => FA_GENERAL_FUND,
1114 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
1115 X_cat_id => X_cat_id,
1116 X_asset_type => X_asset_type,
1117 p_log_level_rec => p_log_level_rec)) then
1118 raise ERROR_FOUND;
1119 end if;
1120 X_adj.adjustment_amount := h_dpr.general_fund;
1121 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1122 X_adj.set_of_books_id := X_set_of_books_id;
1123
1124 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1125 X_last_update_date,
1126 X_last_updated_by,
1127 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1128 if (p_log_level_rec.statement_level) then
1129 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1130 element => 'X_acctcode',
1131 value => 'FA_GENERAL_FUND', p_log_level_rec => p_log_level_rec);
1132 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1133 element => 'adjustment_type',
1134 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1135 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1136 element => 'select_mode',
1137 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1138 end if;
1139 raise ERROR_FOUND;
1140 end if;
1141
1142 h_total_general_to_prorate :=
1143 h_total_general_to_prorate + X_adj.amount_inserted;
1144
1145 end if;
1146
1147
1148 -- clear reval reserve
1149 if (nvl(h_dpr.reval_rsv,0) <> 0) then
1150 X_adj.adjustment_amount := h_dpr.reval_rsv;
1151 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1152 X_adj.set_of_books_id := X_set_of_books_id;
1153
1154 if (NOT setacct(X_adj_ptr => X_adj,
1155 X_acctcode => FA_TFR_REVAL_RSV,
1156 X_select_mode => fa_adjust_type_pkg.FA_AJ_CLEAR,
1157 X_cat_id => X_cat_id,
1158 X_asset_type => X_asset_type,
1159 p_log_level_rec => p_log_level_rec)) then
1160 raise ERROR_FOUND;
1161 end if;
1162
1163 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1164 X_last_update_date,
1165 X_last_updated_by,
1166 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1167 if (p_log_level_rec.statement_level) then
1168 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1169 element => 'X_acctcode',
1170 value => 'FA_TFR_REVAL_RSV', p_log_level_rec => p_log_level_rec);
1171 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1172 element => 'adjustment_type',
1173 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1174 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1175 element => 'select_mode',
1176 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1177 end if;
1178 raise ERROR_FOUND;
1179 end if;
1180
1181
1182 -- accumulate reval reserve
1183 h_total_rev_to_prorate := h_total_rev_to_prorate +
1184 X_adj.amount_inserted;
1185 end if;
1186
1187 elsif (h_term_dist_flag = 2) then
1188 -- if active distribution rows
1189
1190 h_num_units_processed := h_num_units_processed + h_units_assigned;
1191
1192 if (h_num_units_processed < h_total_units_to_process) then
1193 -- if not the last distribution
1194
1195
1196 X_adj.track_member_flag := null;
1197
1198 -- transfer cost
1199 if (NOT setacct(X_adj_ptr => X_adj,
1200 X_acctcode => FA_TFR_COST,
1201 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1202 X_cat_id => X_cat_id,
1203 X_asset_type => X_asset_type,
1204 p_log_level_rec => p_log_level_rec)) then
1205 raise ERROR_FOUND;
1206 end if;
1207
1208 X_adj.adjustment_amount := (h_total_cost_to_prorate *
1209 h_units_assigned) /
1210 h_total_units_to_process;
1211
1212 if (NOT fa_utils_pkg.faxrnd(X_amount => X_adj.adjustment_amount,
1213 X_book => X_adj.book_type_code,
1214 X_set_of_books_id => X_adj.set_of_books_id,
1215 p_log_level_rec => p_log_level_rec)) then
1216 raise ERROR_FOUND;
1217 end if;
1218
1219 h_cost_inserted_so_far := h_cost_inserted_so_far +
1220 X_adj.adjustment_amount;
1221
1222 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1223 X_adj.set_of_books_id := X_set_of_books_id;
1224
1225 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1226 X_last_update_date,
1227 X_last_updated_by,
1228 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1229 if (p_log_level_rec.statement_level) then
1230 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1231 element => 'X_acctcode',
1232 value => 'FA_TFR_COST', p_log_level_rec => p_log_level_rec);
1233 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1234 element => 'adjustment_type',
1235 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1236 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1237 element => 'select_mode',
1238 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1239 end if;
1240 raise ERROR_FOUND;
1241 end if;
1242
1243
1244 X_adj.track_member_flag := l_orig_track_member_flag;
1245
1246 -- transfer deprn reserve
1247
1248 if (NOT setacct(X_adj_ptr => X_adj,
1249 X_acctcode => FA_TFR_DEPRN_RSV,
1250 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1251 X_cat_id => X_cat_id,
1252 X_asset_type => X_asset_type,
1253 p_log_level_rec => p_log_level_rec)) then
1254 raise ERROR_FOUND;
1255 end if;
1256
1257 X_adj.adjustment_amount := (h_total_rsv_to_prorate *
1258 h_units_assigned) /
1259 h_total_units_to_process;
1260 if (NOT fa_utils_pkg.faxrnd(X_amount=>X_adj.adjustment_amount,
1261 X_book => X_adj.book_type_code,
1262 X_set_of_books_id => X_adj.set_of_books_id,
1263 p_log_level_rec => p_log_level_rec)) then
1264 raise ERROR_FOUND;
1265 end if;
1266 h_rsv_inserted_so_far := h_rsv_inserted_so_far +
1267 X_adj.adjustment_amount;
1268
1269 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1270 X_adj.set_of_books_id := X_set_of_books_id;
1271
1272 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1273 X_last_update_date,
1274 X_last_updated_by,
1275 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1276
1277 if (p_log_level_rec.statement_level) then
1278 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1279 element => 'X_acctcode',
1280 value => 'FA_TFR_DEPRN_RSV', p_log_level_rec => p_log_level_rec);
1281 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1282 element => 'adjustment_type',
1283 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1284 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1285 element => 'select_mode',
1286 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1287 end if;
1288 raise ERROR_FOUND;
1289 end if;
1290
1291
1292 -- transfer bonus deprn reserve
1293 --bonus: adjustment_amount must be checked.
1294 --bonus: h_total_bonus_rsv_to_prorate is created.
1295 -- bonus:same logic as for deprn_reserve used.
1296 -- bonus: move the bonus deprn reserve if bonus reserve exist
1297 if nvl(h_dpr.bonus_deprn_rsv,0) <> 0 then
1298 if (NOT setacct(X_adj_ptr => X_adj,
1299 X_acctcode => FA_TFR_BONUS_DEPRN_RSV,
1300 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1301 X_cat_id => X_cat_id,
1302 X_asset_type => X_asset_type,
1303 p_log_level_rec => p_log_level_rec)) then
1304 raise ERROR_FOUND;
1305 end if;
1306
1307 X_adj.adjustment_amount := (h_total_bonus_rsv_to_prorate *
1308 h_units_assigned) /
1309 h_total_units_to_process;
1310 if (NOT fa_utils_pkg.faxrnd(X_amount=>X_adj.adjustment_amount,
1311 X_book => X_adj.book_type_code,
1312 X_set_of_books_id => X_adj.set_of_books_id,
1313 p_log_level_rec => p_log_level_rec)) then
1314 raise ERROR_FOUND;
1315 end if;
1316 h_bonus_rsv_inserted_so_far := h_bonus_rsv_inserted_so_far +
1317 X_adj.adjustment_amount;
1318
1319 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1320 X_adj.set_of_books_id := X_set_of_books_id;
1321
1322 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1323 X_last_update_date,
1324 X_last_updated_by,
1325 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1326
1327 if (p_log_level_rec.statement_level) then
1328 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1329 element => 'X_acctcode',
1330 value => 'FA_TFR_BONUS_DEPRN_RSV', p_log_level_rec => p_log_level_rec);
1331 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1332 element => 'adjustment_type',
1333 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1334 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1335 element => 'select_mode',
1336 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1337 end if;
1338 raise ERROR_FOUND;
1339 end if;
1340 end if; -- end bonus rule condition
1341
1342 if nvl(h_dpr.impairment_rsv,0) <> 0 then
1343 if (NOT setacct(X_adj_ptr => X_adj,
1344 X_acctcode => FA_TFR_IMPAIRMENT_RSV,
1345 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE
1346 ,
1347 X_cat_id => X_cat_id,
1348 X_asset_type => X_asset_type,
1349 p_log_level_rec => p_log_level_rec)) then
1350 raise ERROR_FOUND;
1351 end if;
1352
1353 X_adj.adjustment_amount :=
1354 (h_total_impair_rsv_to_prorate *
1355 h_units_assigned) /
1356 h_total_units_to_process;
1357 if (NOT fa_utils_pkg.faxrnd(X_amount=>X_adj.adjustment_amount,
1358 X_book => X_adj.book_type_code,
1359 X_set_of_books_id => X_adj.set_of_books_id,
1360 p_log_level_rec => p_log_level_rec)) then
1361 raise ERROR_FOUND;
1362 end if;
1363 h_impair_rsv_inserted_so_far :=
1364 h_impair_rsv_inserted_so_far + X_adj.adjustment_amount;
1365
1366 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1367 X_adj.set_of_books_id := X_set_of_books_id;
1368
1369 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1370 X_last_update_date,
1371 X_last_updated_by,
1372 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1373
1374 if (p_log_level_rec.statement_level) then
1375 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1376 element => 'X_acctcode',
1377 value => 'FA_TFR_IMPAIRMENT_RSV', p_log_level_rec => p_log_level_rec);
1378 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1379 element => 'adjustment_type',
1380 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1381 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1382 element => 'select_mode',
1383 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1384 end if;
1385 raise ERROR_FOUND;
1386 end if;
1387 end if;
1388
1389 /* Bug 666666 : SORP Compliance */
1390 /* Capital Adjustment */
1391 if nvl(h_dpr.capital_adjustment,0) <> 0 then
1392 if (NOT setacct(X_adj_ptr => X_adj,
1393 X_acctcode => FA_CAPITAL_ADJUSTMENT,
1394 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE
1395 ,
1396 X_cat_id => X_cat_id,
1397 X_asset_type => X_asset_type,
1398 p_log_level_rec => p_log_level_rec)) then
1399 raise ERROR_FOUND;
1400 end if;
1401
1402 X_adj.adjustment_amount :=
1403 (h_total_capital_to_prorate *
1404 h_units_assigned) /
1405 h_total_units_to_process;
1406 if (NOT fa_utils_pkg.faxrnd(X_amount=>X_adj.adjustment_amount,
1407 X_book => X_adj.book_type_code,
1408 X_set_of_books_id => X_adj.set_of_books_id,
1409 p_log_level_rec => p_log_level_rec)) then
1410 raise ERROR_FOUND;
1411 end if;
1412 h_capital_inserted_so_far :=
1413 h_capital_inserted_so_far + X_adj.adjustment_amount;
1414
1415 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1416 X_adj.set_of_books_id := X_set_of_books_id;
1417
1418 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1419 X_last_update_date,
1420 X_last_updated_by,
1421 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1422
1423 if (p_log_level_rec.statement_level) then
1424 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1425 element => 'X_acctcode',
1426 value => 'FA_CAPITAL_ADJUSTMENT', p_log_level_rec => p_log_level_rec);
1427 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1428 element => 'adjustment_type',
1429 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1430 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1431 element => 'select_mode',
1432 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1433 end if;
1434 raise ERROR_FOUND;
1435 end if;
1436 end if;
1437
1438
1439 /* Bug 666666 : SORP Compliance */
1440 /* General Fund */
1441 if nvl(h_dpr.general_fund,0) <> 0 then
1442 if (NOT setacct(X_adj_ptr => X_adj,
1443 X_acctcode => FA_GENERAL_FUND,
1444 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE
1445 ,
1446 X_cat_id => X_cat_id,
1447 X_asset_type => X_asset_type,
1448 p_log_level_rec => p_log_level_rec)) then
1449 raise ERROR_FOUND;
1450 end if;
1451
1452 X_adj.adjustment_amount :=
1453 (h_total_general_to_prorate *
1454 h_units_assigned) /
1455 h_total_units_to_process;
1456 if (NOT fa_utils_pkg.faxrnd(X_amount=>X_adj.adjustment_amount,
1457 X_book => X_adj.book_type_code,
1458 X_set_of_books_id => X_adj.set_of_books_id,
1459
1460 p_log_level_rec => p_log_level_rec)) then
1461 raise ERROR_FOUND;
1462 end if;
1463 h_general_inserted_so_far :=
1464 h_general_inserted_so_far + X_adj.adjustment_amount;
1465
1466 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1467 X_adj.set_of_books_id := X_set_of_books_id;
1468
1469 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1470 X_last_update_date,
1471 X_last_updated_by,
1472 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1473
1474 if (p_log_level_rec.statement_level) then
1475 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1476 element => 'X_acctcode',
1477 value => 'FA_GENERAL_FUND', p_log_level_rec => p_log_level_rec);
1478 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1479 element => 'adjustment_type',
1480 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1481 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1482 element => 'select_mode',
1483 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1484 end if;
1485 raise ERROR_FOUND;
1486 end if;
1487 end if;
1488
1489 -- transfer reval reserve
1490
1491 if (nvl(h_total_rev_to_prorate,0) <> 0) then
1492
1493 if (NOT setacct(X_adj_ptr => X_adj,
1494 X_acctcode => FA_TFR_REVAL_RSV,
1495 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1496 X_cat_id => X_cat_id,
1497 X_asset_type => X_asset_type,
1498 p_log_level_rec => p_log_level_rec)) then
1499 raise ERROR_FOUND;
1500 end if;
1501 X_adj.adjustment_amount := (h_total_rev_to_prorate *
1502 h_units_assigned) /
1503 h_total_units_to_process;
1504 if (NOT fa_utils_pkg.faxrnd(X_amount => X_adj.adjustment_amount,
1505 X_book => X_adj.book_type_code,
1506 X_set_of_books_id => X_adj.set_of_books_id,
1507 p_log_level_rec => p_log_level_rec)) then
1508 raise ERROR_FOUND;
1509 end if;
1510 h_rev_inserted_so_far := h_rev_inserted_so_far +
1511 X_adj.adjustment_amount;
1512
1513 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1514 X_adj.set_of_books_id := X_set_of_books_id;
1515
1516 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1517 X_last_update_date,
1518 X_last_updated_by,
1519 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1520 if (p_log_level_rec.statement_level) then
1521 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1522 element => 'X_acctcode',
1523 value => 'FA_TFR_REVAL_RSV', p_log_level_rec => p_log_level_rec);
1524 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1525 element => 'adjustment_type',
1526 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1527 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1528 element => 'select_mode',
1529 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1530 end if;
1531 raise ERROR_FOUND;
1532 end if;
1533
1534 end if;
1535
1536 elsif (h_num_units_processed = h_total_units_to_process) then
1537 -- if last active distribution row
1538
1539 -- move cost
1540
1541 X_adj.track_member_flag := null;
1542
1543 if (NOT setacct(X_adj_ptr => X_adj,
1544 X_acctcode => FA_TFR_COST,
1545 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1546 X_cat_id => X_cat_id,
1547 X_asset_type => X_asset_type,
1548 p_log_level_rec => p_log_level_rec)) then
1549 raise ERROR_FOUND;
1550 end if;
1551
1552 -- assign remaining penny to last distribution
1553 X_adj.adjustment_amount := h_total_cost_to_prorate -
1554 h_cost_inserted_so_far;
1555
1556 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1557 X_adj.set_of_books_id := X_set_of_books_id;
1558
1559 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1560 X_last_update_date,
1561 X_last_updated_by,
1562 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1563 if (p_log_level_rec.statement_level) then
1564 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1565 element => 'X_acctcode',
1566 value => 'FA_TFR_COST', p_log_level_rec => p_log_level_rec);
1567 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1568 element => 'adjustment_type',
1569 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1570 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1571 element => 'select_mode',
1572 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1573 end if;
1574 raise ERROR_FOUND;
1575 end if;
1576
1577 X_adj.flush_adj_flag := TRUE; -- flush to db
1578 X_adj.track_member_flag := l_orig_track_member_flag;
1579
1580 -- move deprn reserve
1581 if (NOT setacct(X_adj_ptr => X_adj,
1582 X_acctcode => FA_TFR_DEPRN_RSV,
1583 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1584 X_cat_id => X_cat_id,
1585 X_asset_type => X_asset_type,
1586 p_log_level_rec => p_log_level_rec)) then
1587 raise ERROR_FOUND;
1588 end if;
1589 X_adj.adjustment_amount := h_total_rsv_to_prorate -
1590 h_rsv_inserted_so_far;
1591
1592 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1593 X_adj.set_of_books_id := X_set_of_books_id;
1594
1595 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1596 X_last_update_date,
1597 X_last_updated_by,
1598 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1599 if (p_log_level_rec.statement_level) then
1600 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1601 element => 'X_acctcode',
1602 value => 'FA_TFR_DEPRN_RSV', p_log_level_rec => p_log_level_rec);
1603 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1604 element => 'adjustment_type',
1605 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1606 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1607 element => 'select_mode',
1608 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1609 end if;
1610 raise ERROR_FOUND;
1611 end if;
1612
1613 -- move bonus deprn reserve
1614 -- bonus: same logic as for deprn_reserve used.
1615 -- bonus: move the bonus deprn reserve if bonus reserve exist
1616 if nvl(h_dpr.bonus_deprn_rsv,0) <> 0 then
1617 if (NOT setacct(X_adj_ptr => X_adj,
1618 X_acctcode => FA_TFR_BONUS_DEPRN_RSV,
1619 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1620 X_cat_id => X_cat_id,
1621 X_asset_type => X_asset_type,
1622 p_log_level_rec => p_log_level_rec)) then
1623 raise ERROR_FOUND;
1624 end if;
1625 X_adj.adjustment_amount := h_total_bonus_rsv_to_prorate -
1626 h_bonus_rsv_inserted_so_far;
1627
1628 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1629 X_adj.set_of_books_id := X_set_of_books_id;
1630
1631 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1632 X_last_update_date,
1633 X_last_updated_by,
1634 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1635 if (p_log_level_rec.statement_level) then
1636 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1637 element => 'X_acctcode',
1638 value => 'FA_TFR_BONUS_DEPRN_RSV', p_log_level_rec => p_log_level_rec);
1639 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1640 element => 'adjustment_type',
1641 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1642 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1643 element => 'select_mode',
1644 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1645 end if;
1646 raise ERROR_FOUND;
1647 end if;
1648 end if;
1649
1650 if nvl(h_dpr.impairment_rsv,0) <> 0 then
1651 if (NOT setacct(X_adj_ptr => X_adj,
1652 X_acctcode => FA_TFR_IMPAIRMENT_RSV,
1653 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1654 X_cat_id => X_cat_id,
1655 X_asset_type => X_asset_type,
1656 p_log_level_rec => p_log_level_rec)) then
1657 raise ERROR_FOUND;
1658 end if;
1659 X_adj.adjustment_amount := h_total_impair_rsv_to_prorate -
1660 h_impair_rsv_inserted_so_far;
1661
1662 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1663 X_adj.set_of_books_id := X_set_of_books_id;
1664
1665 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1666 X_last_update_date,
1667 X_last_updated_by,
1668 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1669 if (p_log_level_rec.statement_level) then
1670 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1671 element => 'X_acctcode',
1672 value => 'FA_TFR_IMPAIRMENT_RSV', p_log_level_rec => p_log_level_rec);
1673 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1674 element => 'adjustment_type',
1675 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1676 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1677 element => 'select_mode',
1678 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1679 end if;
1680 raise ERROR_FOUND;
1681 end if;
1682 end if;
1683
1684 /* Bug 6666666 : SORP Complaince */
1685 /* Capital Adjustment */
1686 if nvl(h_dpr.capital_adjustment,0) <> 0 then
1687 if (NOT setacct(X_adj_ptr => X_adj,
1688 X_acctcode => FA_CAPITAL_ADJUSTMENT,
1689 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1690 X_cat_id => X_cat_id,
1691 X_asset_type => X_asset_type,
1692 p_log_level_rec => p_log_level_rec)) then
1693 raise ERROR_FOUND;
1694 end if;
1695 X_adj.adjustment_amount := h_total_capital_to_prorate -
1696 h_capital_inserted_so_far;
1697
1698 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1699 X_adj.set_of_books_id := X_set_of_books_id;
1700
1701 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1702 X_last_update_date,
1703 X_last_updated_by,
1704 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1705 if (p_log_level_rec.statement_level) then
1706 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1707 element => 'X_acctcode',
1708 value => 'FA_CAPITAL_ADJUSTMENT', p_log_level_rec => p_log_level_rec);
1709 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1710 element => 'adjustment_type',
1711 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1712 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1713 element => 'select_mode',
1714 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1715 end if;
1716 raise ERROR_FOUND;
1717 end if;
1718 end if;
1719
1720
1721 /* Bug 6666666 : SORP Complaince */
1722 /* General Fund */
1723 if nvl(h_dpr.general_fund,0) <> 0 then
1724 if (NOT setacct(X_adj_ptr => X_adj,
1725 X_acctcode => FA_GENERAL_FUND,
1726 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1727 X_cat_id => X_cat_id,
1728 X_asset_type => X_asset_type,
1729 p_log_level_rec => p_log_level_rec)) then
1730 raise ERROR_FOUND;
1731 end if;
1732 X_adj.adjustment_amount := h_total_general_to_prorate -
1733 h_general_inserted_so_far;
1734
1735 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1736 X_adj.set_of_books_id := X_set_of_books_id;
1737
1738 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1739 X_last_update_date,
1740 X_last_updated_by,
1741 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1742 if (p_log_level_rec.statement_level) then
1743 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1744 element => 'X_acctcode',
1745 value => 'FA_GENERAL_FUND', p_log_level_rec => p_log_level_rec);
1746 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1747 element => 'adjustment_type',
1748 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1749 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1750 element => 'select_mode',
1751 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1752 end if;
1753 raise ERROR_FOUND;
1754 end if;
1755 end if;
1756
1757 -- move reval reserve
1758
1759 if (nvl(h_total_rev_to_prorate,0) <> 0) then
1760
1761 X_adj.flush_adj_flag := TRUE; -- flush to db
1762
1763 if (NOT setacct(X_adj_ptr => X_adj,
1764 X_acctcode => FA_TFR_REVAL_RSV,
1765 X_select_mode => fa_adjust_type_pkg.FA_AJ_ACTIVE,
1766 X_cat_id => X_cat_id,
1767 X_asset_type => X_asset_type,
1768 p_log_level_rec => p_log_level_rec)) then
1769 raise ERROR_FOUND;
1770 end if;
1771 X_adj.adjustment_amount := h_total_rev_to_prorate -
1772 h_rev_inserted_so_far;
1773
1774 X_adj.mrc_sob_type_code := X_mrc_sob_type_code;
1775 X_adj.set_of_books_id := X_set_of_books_id;
1776
1777 if (NOT fa_ins_adjust_pkg.faxinaj(X_adj,
1778 X_last_update_date,
1779 X_last_updated_by,
1780 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
1781 if (p_log_level_rec.statement_level) then
1782 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1783 element => 'X_acctcode',
1784 value => 'FA_TFR_REVAL_RSV', p_log_level_rec => p_log_level_rec);
1785 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1786 element => 'adjustment_type',
1787 value => X_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
1788 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.fatsgl',
1789 element => 'select_mode',
1790 value => X_adj.selection_mode, p_log_level_rec => p_log_level_rec);
1791 end if;
1792 raise ERROR_FOUND;
1793 end if;
1794 end if;
1795 else
1796 h_msg_name := 'FA_TFR_INTERCO_UNBAL';
1797 raise ERROR_FOUND;
1798 end if;
1799 else
1800 h_msg_name := 'FA_TFR_INVALID_DIST_FLAG';
1801 raise ERROR_FOUND;
1802 end if;
1803
1804 end loop;
1805
1806 h_msg_name := 'FA_TFR_CLOSE_DIST_CURSOR';
1807 close dist_cursor;
1808
1809 return TRUE;
1810
1811 EXCEPTION
1812 when ERROR_FOUND then
1813 fa_srvr_msg.add_message(calling_fn => 'FA_TRANSFER_XIT_PKG.fatsgl',
1814 name => h_msg_name, p_log_level_rec => p_log_level_rec);
1815 close dist_cursor;
1816 return FALSE;
1817
1818 when OTHERS then
1819 fa_srvr_msg.add_sql_error(calling_fn=> 'FA_TRANSFER_XIT_PKG.fatsgl', p_log_level_rec => p_log_level_rec);
1820 close dist_cursor;
1821 return FALSE;
1822
1823 END fatsgl;
1824
1825
1826
1827 FUNCTION faucper(X_asset_id NUMBER,
1828 X_is_prior_period IN OUT NOCOPY BOOLEAN,
1829 X_book VARCHAR2, p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
1830
1831 h_is_prior_period NUMBER :=0;
1832 h_book_spec NUMBER :=0;
1833 BEGIN
1834
1835 IF (X_book IS NULL) THEN
1836 h_book_spec := 0 ;
1837 ELSE
1838 h_book_spec := 1;
1839 END IF;
1840
1841
1842 SELECT distinct 1
1843 INTO
1844 h_is_prior_period
1845 FROM
1846 FA_DEPRN_PERIODS DP_NOW,
1847 FA_DEPRN_PERIODS DP,
1848 FA_BOOK_CONTROLS BC,
1849 FA_TRANSACTION_HEADERS TH
1850 WHERE
1851 TH.ASSET_ID = X_asset_id AND
1852 TH.TRANSACTION_TYPE_CODE = DECODE(BC.BOOK_CLASS,'CORPORATE',
1853 'TRANSFER IN','ADDITION') AND
1854 TH.BOOK_TYPE_CODE = BC.BOOK_TYPE_CODE AND
1855 BC.BOOK_TYPE_CODE = DECODE(h_book_spec, 1,
1856 X_book,
1857 TH.BOOK_TYPE_CODE) AND
1858 TH.DATE_EFFECTIVE BETWEEN
1859 DP.PERIOD_OPEN_DATE AND
1860 NVL(DP.PERIOD_CLOSE_DATE, SYSDATE)
1861 AND
1862 DP.BOOK_TYPE_CODE = TH.BOOK_TYPE_CODE AND
1863 DP.PERIOD_COUNTER < DP_NOW.PERIOD_COUNTER AND
1864 DP_NOW.BOOK_TYPE_CODE = TH.BOOK_TYPE_CODE AND
1865 DP_NOW.PERIOD_CLOSE_DATE IS NULL;
1866
1867 if h_is_prior_period = 1 then
1868 X_is_prior_period := TRUE ;
1869 else
1870 X_is_prior_period := FALSE;
1871 end if;
1872
1873 RETURN (TRUE);
1874
1875 EXCEPTION
1876 WHEN NO_DATA_FOUND THEN
1877 X_is_prior_period := FALSE;
1878 RETURN (TRUE);
1879
1880 WHEN OTHERS THEN
1881 FA_SRVR_MSG.ADD_SQL_ERROR (
1882 CALLING_FN => 'FA_TRANSFER_XIT_PKG.faucper', p_log_level_rec => p_log_level_rec);
1883
1884 RETURN (FALSE);
1885
1886 END faucper;
1887
1888
1889 /*===========================================================================
1890 |
1891 | NAME: faumvexp() - FA Move Expense
1892 |
1893 | DESCRIPTION: Move catchup expense like amort adj expense
1894 | to a new distribution for reclass in period of addition...
1895 |
1896 | Even though the main select in fautfr is called in period of addition
1897 | it doesn't return any rows to process.
1898 | Using this new function, we will be processing
1899 | the movement of any catchup expenses
1900 | from the old dist to the new dist.
1901 |
1902 |
1903 | RETURNS: TRUE, on successful completion
1904 | FALSE, on error condition
1905 |
1906 | History
1907 | 16-Aug-2005 YYOON Created
1908 |
1909 ============================================================================*/
1910
1911 FUNCTION faumvexp(X_asset_id NUMBER
1912 ,X_book_type_code VARCHAR2
1913 ,X_th_id NUMBER
1914 ,X_to_category_id NUMBER
1915 ,X_exp_moved OUT NOCOPY BOOLEAN
1916 ,X_last_update_date DATE
1917 ,X_last_updated_by NUMBER
1918 ,X_last_update_login NUMBER
1919 , p_log_level_rec IN FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
1920
1921
1922 l_set_of_books_id number;
1923
1924 CURSOR n_sob_id (p_psob_id IN NUMBER,
1925 p_book_type_code IN VARCHAR2) is
1926 SELECT p_psob_id AS sob_id,
1927 1 AS index_id
1928 FROM dual
1929 UNION
1930 SELECT set_of_books_id AS sob_id,
1931 2 AS index_id
1932 FROM fa_mc_book_controls
1933 WHERE book_type_code = p_book_type_code
1934 AND primary_set_of_books_id = p_psob_id
1935 AND enabled_flag = 'Y'
1936 ORDER BY 2;
1937
1938
1939 CURSOR c_sum_exp (p_asset_id number
1940 ,p_book_type_code varchar
1941 ,p_pc number
1942 ,p_thid number
1943 ) IS
1944 select adj.adjustment_type, max('DR'),
1945 sum(decode(adj.debit_credit_flag,'DR', adj.adjustment_amount,
1946 -adj.adjustment_amount)) adjustment_amount,
1947 sum(decode(adj.debit_credit_flag,'DR', adj.annualized_adjustment,
1948 -adj.annualized_adjustment)) annualized_adjustment,
1949 max(adj.track_member_flag) -- Bug7461343
1950 from fa_adjustments adj
1951 ,fa_additions_b ad
1952 ,fa_distribution_history fad
1953 where adj.asset_id = p_asset_id
1954 and adj.book_type_code = p_book_type_code
1955 and adj.source_type_code = 'DEPRECIATION'
1956 and adj.adjustment_type in ('EXPENSE', 'BONUS EXPENSE', 'IMPAIR EXPENSE')
1957 and adj.period_counter_created = p_pc
1958 and ad.asset_id = adj.asset_id
1959 and fad.asset_id = adj.asset_id
1960 and fad.book_type_code = adj.book_type_code
1961 and fad.distribution_id = adj.distribution_id
1962 and fad.transaction_header_id_out = p_thid
1963 group by adj.adjustment_type;
1964
1965 CURSOR c_sum_mrc_exp (p_asset_id number
1966 ,p_book_type_code varchar
1967 ,p_pc number
1968 ,p_thid number
1969 ) IS
1970 select adj.adjustment_type, max('DR'),
1971 sum(decode(adj.debit_credit_flag,'DR', adj.adjustment_amount,
1972 -adj.adjustment_amount)) adjustment_amount,
1973 sum(decode(adj.debit_credit_flag,'DR', adj.annualized_adjustment,
1974 -adj.annualized_adjustment)) annualized_adjustment,
1975 max(adj.track_member_flag) -- Bug7461343
1976 from fa_mc_adjustments adj
1977 ,fa_additions_b ad
1978 ,fa_distribution_history fad
1979 where adj.asset_id = p_asset_id
1980 and adj.book_type_code = p_book_type_code
1981 and adj.source_type_code = 'DEPRECIATION'
1982 and adj.adjustment_type in ('EXPENSE', 'BONUS EXPENSE', 'IMPAIR EXPENSE')
1983 and adj.period_counter_created = p_pc
1984 and adj.set_of_books_id = l_set_of_books_id
1985 and ad.asset_id = adj.asset_id
1986 and fad.asset_id = adj.asset_id
1987 and fad.book_type_code = adj.book_type_code
1988 and fad.distribution_id = adj.distribution_id
1989 and fad.transaction_header_id_out = p_thid
1990 group by adj.adjustment_type;
1991
1992 CURSOR c_new_dists (p_thid number) IS
1993 select dh.distribution_id, dh.code_combination_id, dh.units_assigned
1994 from fa_distribution_history dh
1995 where dh.transaction_header_id_in = p_thid
1996 and dh.date_ineffective is null
1997 order by dh.distribution_id;
1998
1999 CURSOR c_sum_dists (p_thid number) IS
2000 select sum(dh.units_assigned)
2001 from fa_distribution_history dh
2002 where dh.transaction_header_id_in = p_thid;
2003
2004 ERROR_FOUND EXCEPTION;
2005
2006
2007 l_adj fa_adjust_type_pkg.fa_adj_row_struct;
2008
2009 l_pc number(15);
2010 l_primary_sob_id number(15);
2011 l_mrc_sob_type_code varchar2(1);
2012 l_deprn_exp_acct varchar2(25);
2013 l_bonus_deprn_exp_acct varchar2(25);
2014 l_impairment_exp_acct varchar2(25);
2015
2016 l_adj_type varchar2(15);
2017 l_dr_cr_flag varchar2(2);
2018 l_adj_amount number;
2019 l_annualized_adj_amount number;
2020 l_current_units number;
2021 l_sum_units_assigned number;
2022 l_track_member_flag varchar2(1); -- Bug7461343
2023
2024 l_new_dist_id number(15);
2025 l_new_ccid number(15);
2026 l_trx_header_id NUMBER; -- Bug 10387406
2027
2028 BEGIN
2029
2030 -- h_book_class := fa_cache_pkg.fazcbc_record.book_class;
2031 l_primary_sob_id := fa_cache_pkg.fazcbc_record.set_of_books_id;
2032
2033 for c_rec in n_sob_id(l_primary_sob_id, X_book_type_code) loop
2034
2035 if c_rec.index_id = 1 then
2036 l_mrc_sob_type_code := 'P';
2037 else
2038 l_mrc_sob_type_code := 'R';
2039 end if;
2040
2041 l_set_of_books_id := c_rec.sob_id;
2042
2043 begin
2044
2045 if (l_mrc_sob_type_code='R') then
2046
2047 select ds.period_counter + 1
2048 into l_pc
2049 from fa_mc_deprn_summary ds
2050 where ds.asset_id = X_asset_id
2051 and ds.book_type_code = X_book_type_code
2052 and ds.deprn_source_code = 'BOOKS'
2053 and ds.set_of_books_id = l_set_of_books_id;
2054
2055 else
2056
2057 select ds.period_counter + 1
2058 into l_pc
2059 from fa_deprn_summary ds
2060 where ds.asset_id = X_asset_id
2061 and ds.book_type_code = X_book_type_code
2062 and ds.deprn_source_code = 'BOOKS';
2063
2064 end if;
2065
2066
2067 select DEPRN_EXPENSE_ACCT,
2068 BONUS_DEPRN_EXPENSE_ACCT,
2069 IMPAIR_EXPENSE_ACCT
2070 into l_deprn_exp_acct,
2071 l_bonus_deprn_exp_acct,
2072 l_impairment_exp_acct
2073 from fa_category_books
2074 where book_type_code = X_book_type_code
2075 and category_id = X_to_category_id;
2076
2077 exception
2078 when others then raise no_data_found;
2079 end;
2080
2081
2082
2083 if (l_mrc_sob_type_code='R') then
2084 open c_sum_mrc_exp(X_asset_id
2085 ,X_book_type_code
2086 ,l_pc
2087 ,X_th_id
2088 );
2089 else
2090 open c_sum_exp(X_asset_id
2091 ,X_book_type_code
2092 ,l_pc
2093 ,X_th_id
2094 );
2095 end if;
2096
2097 open c_sum_dists(X_th_id);
2098 fetch c_sum_dists into l_sum_units_assigned;
2099 if c_sum_dists%NOTFOUND then exit; end if;
2100 close c_sum_dists;
2101
2102 l_adj.transaction_header_id := X_th_id;
2103 l_adj.period_counter_created := l_pc;
2104 l_adj.period_counter_adjusted := l_pc;
2105 l_adj.asset_id := X_asset_id;
2106 l_adj.book_type_code := X_book_type_code;
2107
2108 loop
2109
2110 if (l_mrc_sob_type_code='R') then
2111 fetch c_sum_mrc_exp into
2112 l_adj_type,
2113 l_dr_cr_flag,
2114 l_adj_amount,
2115 l_annualized_adj_amount,
2116 l_track_member_flag; --Bug7461343
2117
2118 if c_sum_mrc_exp%NOTFOUND then exit; end if;
2119 else
2120 fetch c_sum_exp into
2121 l_adj_type,
2122 l_dr_cr_flag,
2123 l_adj_amount,
2124 l_annualized_adj_amount,
2125 l_track_member_flag; --Bug7461343
2126
2127 if c_sum_exp%NOTFOUND then exit; end if;
2128 end if;
2129
2130 l_adj.track_member_flag := l_track_member_flag; -- Bug7461343
2131 l_adj.adjustment_type := l_adj_type;
2132 l_adj.debit_credit_flag := l_dr_cr_flag;
2133
2134 open c_new_dists(X_th_id);
2135
2136 loop
2137
2138 l_adj.selection_mode := FA_ADJUST_TYPE_PKG.FA_AJ_TRANSFER_SINGLE;
2139 l_adj.selection_thid := 0;
2140 l_adj.selection_retid := 0;
2141 l_adj.asset_invoice_id := 0;
2142 l_adj.source_type_code := 'DEPRECIATION';
2143 l_adj.last_update_date := SYSDATE;
2144 l_adj.flush_adj_flag := TRUE;
2145 l_adj.leveling_flag := TRUE;
2146 l_adj.gen_ccid_flag := TRUE;
2147 l_adj.code_combination_id := 0;
2148
2149
2150 fetch c_new_dists into l_new_dist_id
2151 ,l_new_ccid
2152 ,l_current_units;
2153 if c_new_dists%NOTFOUND then exit; end if;
2154
2155 l_adj.distribution_id := l_new_dist_id;
2156 l_adj.code_combination_id := l_new_ccid;
2157 l_adj.current_units := l_current_units;
2158
2159
2160 if (l_adj_type = 'BONUS EXPENSE') then
2161 l_adj.account_type := 'BONUS_DEPRN_EXPENSE_ACCT';
2162 l_adj.account := l_bonus_deprn_exp_acct;
2163 elsif (l_adj_type = 'IMPAIR EXPENSE') then
2164 l_adj.account_type := 'IMPAIR_EXPENSE_ACCT';
2165 l_adj.account := l_impairment_exp_acct;
2166 else
2167 l_adj.account_type := 'DEPRN_EXPENSE_ACCT';
2168 l_adj.account := l_deprn_exp_acct;
2169 end if;
2170
2171 l_adj.mrc_sob_type_code := l_mrc_sob_type_code;
2172 l_adj.set_of_books_id := l_set_of_books_id;
2173
2174 l_adj.adjustment_amount := l_adj_amount * l_current_units /
2175 l_sum_units_assigned;
2176 l_adj.annualized_adjustment := l_annualized_adj_amount * l_current_units /
2177 l_sum_units_assigned;
2178
2179 select transaction_header_id -- Bug 10387406
2180 into l_trx_header_id
2181 from fa_transaction_headers
2182 where asset_id = X_asset_id
2183 and book_type_code = X_book_type_code
2184 and transaction_type_code = 'ADDITION';
2185
2186 l_adj.transaction_header_id := l_trx_header_id; -- Bug 10387406
2187
2188 if (NOT fa_ins_adjust_pkg.faxinaj(l_adj,
2189 X_last_update_date,
2190 X_last_updated_by,
2191 X_last_update_login, p_log_level_rec => p_log_level_rec)) then
2192 if (p_log_level_rec.statement_level) then
2193 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.faumvexp',
2194 element => 'account',
2195 value => l_adj.account, p_log_level_rec => p_log_level_rec);
2196 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.faumvexp',
2197 element => 'adjustment_type',
2198 value => l_adj.adjustment_type, p_log_level_rec => p_log_level_rec);
2199 fa_debug_pkg.add(fname => 'FA_TRANSFER_XIT_PKG.faumvexp',
2200 element => 'selection_mode',
2201 value => l_adj.selection_mode, p_log_level_rec => p_log_level_rec);
2202 end if;
2203 raise ERROR_FOUND;
2204 end if;
2205 end loop;
2206 close c_new_dists;
2207 end loop;
2208 if (l_mrc_sob_type_code='R') then
2209 close c_sum_mrc_exp;
2210 else
2211 close c_sum_exp;
2212 end if;
2213
2214 begin
2215
2216 if (l_mrc_sob_type_code='R') then
2217
2218 delete from fa_mc_adjustments adj
2219 where adj.asset_id = X_asset_id
2220 and adj.book_type_code = X_book_type_code
2221 and adj.period_counter_created = l_pc
2222 and adj.set_of_books_id = l_set_of_books_id
2223 and adj.source_type_code = 'DEPRECIATION'
2224 and adj.adjustment_type in ('EXPENSE', 'BONUS EXPENSE', 'IMPAIR EXPENSE')
2225 and adj.distribution_id in
2226 (select dh.distribution_id
2227 from fa_distribution_history dh
2228 where dh.transaction_header_id_out = X_th_id)
2229 and exists
2230 (select adj1.transaction_header_id
2231 from fa_mc_adjustments adj1
2232 where adj1.asset_id = X_asset_id
2233 and adj1.transaction_header_id = X_th_id
2234 and adj1.book_type_code = X_book_type_code
2235 and adj1.period_counter_created = l_pc
2236 and adj1.set_of_books_id = l_set_of_books_id
2237 and adj1.source_type_code = 'DEPRECIATION'
2238 and adj1.adjustment_type in ('EXPENSE', 'BONUS EXPENSE', 'IMPAIR EXPENSE'));
2239
2240 else
2241
2242 delete from fa_adjustments adj
2243 where adj.asset_id = X_asset_id
2244 and adj.book_type_code = X_book_type_code
2245 and adj.period_counter_created = l_pc
2246 and adj.source_type_code = 'DEPRECIATION'
2247 and adj.adjustment_type in ('EXPENSE', 'BONUS EXPENSE', 'IMPAIR EXPENSE')
2248 and adj.distribution_id in
2249 (select dh.distribution_id
2250 from fa_distribution_history dh
2251 where dh.transaction_header_id_out = X_th_id)
2252 and exists
2253 (select adj1.transaction_header_id
2254 from fa_adjustments adj1
2255 where adj1.asset_id = X_asset_id
2256 and adj1.transaction_header_id = X_th_id
2257 and adj1.book_type_code = X_book_type_code
2258 and adj1.period_counter_created = l_pc
2259 and adj1.source_type_code = 'DEPRECIATION'
2260 and adj1.adjustment_type in ('EXPENSE', 'BONUS EXPENSE', 'IMPAIR EXPENSE'));
2261 end if;
2262
2263 exception
2264 when others then null;
2265
2266 end;
2267
2268 end loop; -- loop for sob_id
2269
2270 X_exp_moved := TRUE;
2271 RETURN (TRUE);
2272
2273 EXCEPTION
2274 WHEN NO_DATA_FOUND THEN
2275 X_exp_moved := FALSE;
2276
2277 RETURN (TRUE);
2278
2279 WHEN OTHERS THEN
2280 X_exp_moved := FALSE;
2281 FA_SRVR_MSG.ADD_SQL_ERROR (
2282 CALLING_FN => 'FA_TRANSFER_XIT_PKG.faumvexp', p_log_level_rec => p_log_level_rec);
2283
2284 RETURN (FALSE);
2285
2286 END faumvexp;
2287
2288
2289 END FA_TRANSFER_XIT_PKG;