[Home] [Help]
PACKAGE BODY: APPS.IGI_IAC_CATCHUP_PKG
Source
1 PACKAGE BODY IGI_IAC_CATCHUP_PKG AS
2 -- $Header: igiiactb.pls 120.19.12000000.4 2007/11/05 14:01:29 sharoy ship $
3
4 g_debug BOOLEAN ;
5
6 --===========================FND_LOG.START=====================================
7
8 g_state_level NUMBER ;
9 g_proc_level NUMBER ;
10 g_event_level NUMBER ;
11 g_excep_level NUMBER ;
12 g_error_level NUMBER ;
13 g_unexp_level NUMBER ;
14 g_path VARCHAR2(100) ;
15
16 --===========================FND_LOG.END=====================================
17
18 PROCEDURE Debug_Period(p_period igi_iac_types.prd_rec) IS
19 l_path_name VARCHAR2(150) ;
20 BEGIN
21 l_path_name := g_path||'debug_period';
22
23 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
24 p_full_path => l_path_name,
25 p_string => ' Period counter :'||to_char(p_period.period_counter));
26 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
27 p_full_path => l_path_name,
28 p_string => ' Period Num :'||to_char(p_period.period_num));
29 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
30 p_full_path => l_path_name,
31 p_string => ' Fiscal Year :'||to_char(p_period.fiscal_year));
32 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
33 p_full_path => l_path_name,
34 p_string => ' Period Name :'||p_period.period_name);
35 END Debug_Period;
36
37 PROCEDURE Debug_Asset(p_asset igi_iac_types.iac_reval_input_asset) IS
38 l_path_name VARCHAR2(150);
39 BEGIN
40 l_path_name := g_path||'debug_asset';
41
42 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
43 p_full_path => l_path_name,
44 p_string => ' Net book value :'||to_char(p_asset.net_book_value));
45 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
46 p_full_path => l_path_name,
47 p_string => ' Adjusted Cost :'||to_char(p_asset.adjusted_cost));
48 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
49 p_full_path => l_path_name,
50 p_string => ' Operating Account :'||to_char(p_asset.operating_acct));
51 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
52 p_full_path => l_path_name,
53 p_string => ' Reval Reserve :'||to_char(p_asset.reval_reserve));
54 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
55 p_full_path => l_path_name,
56 p_string => ' Deprn Amount :'||to_char(p_asset.deprn_amount));
57 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
58 p_full_path => l_path_name,
59 p_string => ' Deprn Reserve :'||to_char(p_asset.deprn_reserve));
60 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
61 p_full_path => l_path_name,
62 p_string => ' Backlog Deprn Reserve :'||to_char(p_asset.backlog_deprn_reserve));
63 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
64 p_full_path => l_path_name,
65 p_string => ' General Fund :'||to_char(p_asset.general_fund));
66 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
67 p_full_path => l_path_name,
68 p_string => ' Current Reval Factor :'||to_char(p_asset.current_reval_factor));
69 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
70 p_full_path => l_path_name,
71 p_string => ' Cumulative Reval Factor :'||to_char(p_asset.Cumulative_reval_factor));
72 END Debug_Asset;
73
74 FUNCTION get_FA_Deprn_Expense(
75 p_asset_id IN NUMBER,
76 p_book_type_code IN VARCHAR2,
77 p_period_counter IN NUMBER,
78 p_calling_function IN VARCHAR2,
79 p_deprn_reserve IN NUMBER,
80 p_deprn_YTD IN NUMBER,
81 p_deprn_expense_py OUT NOCOPY NUMBER,
82 p_deprn_expense_cy OUT NOCOPY NUMBER,
83 p_last_asset_period OUT NOCOPY NUMBER
84 ) return BOOLEAN IS
85
86 CURSOR c_get_fa_asset_info IS
87 SELECT cost,
88 salvage_value,
89 date_placed_in_service,
90 depreciate_flag,
91 period_counter_fully_reserved,
92 period_counter_fully_retired,
93 transaction_header_id_in,
94 life_in_months,
95 add_months(date_placed_in_service,life_in_months) last_date
96 FROM fa_books
97 WHERE book_type_code = p_book_type_code
98 AND asset_id = p_asset_id
99 AND transaction_header_id_out IS NULL;
100
101 /* Bug 2961656 vgadde 08-jul-03 Start(1) */
102 CURSOR c_get_user_deprn IS
103 SELECT period_counter,deprn_reserve,YTD_deprn
104 FROM fa_deprn_summary
105 WHERE book_type_code = p_book_type_code
106 AND asset_id = p_asset_id
107 AND deprn_source_code = 'BOOKS';
108 /* Bug 2961656 vgadde 08-jul-03 End(1) */
109
110 /* Cursor for fetching latest deprn_reserve for RECLASS */
111 CURSOR c_get_deprn_reserve IS
112 SELECT period_counter, deprn_reserve
113 FROM fa_deprn_summary
114 WHERE book_type_code = p_book_type_code
115 AND asset_id = p_asset_id
116 AND period_counter = (SELECT max(period_counter)
117 FROM fa_deprn_summary
118 WHERE book_type_code = p_book_type_code
119 AND asset_id = p_asset_id);
120
121 CURSOR c_get_deprn_calendar IS
122 SELECT deprn_calendar
123 FROM fa_book_controls
124 WHERE book_type_code like p_book_type_code;
125
126 CURSOR c_get_periods_in_year(p_calendar_type fa_calendar_types.calendar_type%TYPE) IS
127 SELECT number_per_fiscal_year
128 FROM fa_calendar_types
129 WHERE calendar_type = p_calendar_type;
130
131 l_fa_deprn_acc fa_adjustments.adjustment_amount%TYPE;
132 l_dpis_period igi_iac_types.prd_rec;
133 l_current_period igi_iac_types.prd_rec;
134 l_last_period igi_iac_types.prd_rec;
135 l_booksrow_period_rec igi_iac_types.prd_rec;
136 l_deprn_calendar fa_calendar_types.calendar_type%TYPE;
137 l_periods_in_year fa_calendar_types.number_per_fiscal_year%TYPE;
138 l_booksrow_period NUMBER; -- added for bug 2961656
139 l_booksrow_reserve NUMBER; -- added for bug 2961656
140 l_deprn_reserve NUMBER;
141 l_reclass_period fa_deprn_periods.period_counter%TYPE;
142 l_total_periods NUMBER;
143 l_last_period_counter fa_deprn_periods.period_counter%TYPE; -- added for bug 2411599
144 l_path_name VARCHAR2(150);
145 l_booksrow_ytd_deprn NUMBER;
146
147 BEGIN
148 l_path_name := g_path||'get_fa_deprn_expense';
149 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
150 p_full_path => l_path_name,
151 p_string => ' Start of processing in get_FA_Deprn_Expense function');
152 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
153 p_full_path => l_path_name,
154 p_string => ' ---------Input Parameter Values---------');
155 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
156 p_full_path => l_path_name,
157 p_string => ' Asset Id :'||to_char(p_asset_id));
158 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
159 p_full_path => l_path_name,
160 p_string => ' Book Type Code :'||p_book_type_code);
161 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
162 p_full_path => l_path_name,
163 p_string => ' Period Counter :'||to_char(p_period_counter));
164 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
165 p_full_path => l_path_name,
166 p_string => ' Calling function :'||p_calling_function);
167 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
168 p_full_path => l_path_name,
169 p_string => ' ----------------------------------');
170
171 /* Bug 2961656 vgadde 08-jul-03 Start(2) */
172 IF (p_calling_function = 'UPGRADE') THEN
173
174 OPEN c_get_deprn_calendar;
175 FETCH c_get_deprn_calendar INTO l_deprn_calendar;
176 CLOSE c_get_deprn_calendar;
177
178 OPEN c_get_periods_in_year(l_deprn_calendar);
179 FETCH c_get_periods_in_year INTO l_periods_in_year;
180 CLOSE c_get_periods_in_year;
181 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
182 p_full_path => l_path_name,
183 p_string => ' Periods in Year for the calendar :'||to_char(l_periods_in_year));
184
185 FOR l_asset_info IN c_get_fa_asset_info LOOP
186
187 IF (l_asset_info.depreciate_flag = 'NO') THEN
188 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
189 p_full_path => l_path_name,
190 p_string => ' Depreciate Flag is off. No depreciation required');
191 p_deprn_expense_py := 0;
192 p_deprn_expense_cy := 0;
193 p_last_asset_period := NULL;
194 return TRUE;
195 END IF;
196
197 IF NOT igi_iac_common_utils.get_period_info_for_date(p_book_type_code,
198 l_asset_info.date_placed_in_service,
199 l_dpis_period) THEN
200 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
201 p_full_path => l_path_name,
202 p_string => ' Error in fetching dpis period information');
203 return FALSE;
204 END IF;
205
206 l_total_periods := ceil((l_asset_info.life_in_months*l_periods_in_year)/12);
207 l_last_period_counter := (l_dpis_period.period_counter + l_total_periods - 1);
208
209 IF nvl(l_asset_info.period_counter_fully_reserved,l_last_period_counter) < l_last_period_counter THEN
210 l_last_period_counter := l_asset_info.period_counter_fully_reserved;
211 END IF;
212
213 IF l_last_period_counter > p_period_counter THEN
214 l_last_period_counter := NULL;
215 END IF;
216
217 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_book_type_code,
218 p_period_counter,
219 l_current_period) THEN
220 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
221 p_full_path => l_path_name,
222 p_string => ' Error in fetching open period information');
223 return FALSE;
224 END IF;
225
226 IF (l_last_period_counter IS NULL) THEN
227 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
228 p_full_path => l_path_name,
229 p_string => ' Asset is not fully reserved.');
230 IF p_deprn_ytd IS NULL THEN
231 p_deprn_expense_py := p_deprn_reserve / (p_period_counter - l_dpis_period.period_counter);
232 p_deprn_expense_cy := p_deprn_expense_py;
233 p_last_asset_period := NULL;
234 ELSE
235 p_last_asset_period := NULL;
236 p_deprn_expense_py := (p_deprn_reserve - p_deprn_ytd)/(p_period_counter - l_dpis_period.period_counter - l_current_period.period_num + 1);
237 p_deprn_expense_cy := p_deprn_ytd / (l_current_period.period_num - 1);
238 END IF;
239 ELSE
240 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
241 p_full_path => l_path_name,
242 p_string => ' Asset is fully reserved');
243 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_book_type_code,
244 l_last_period_counter,
245 l_last_period) THEN
246 return FALSE;
247 END IF;
248
249 IF p_deprn_ytd IS NULL THEN
250 p_deprn_expense_py := p_deprn_reserve / (l_last_period.period_counter - l_dpis_period.period_counter + 1);
251 p_deprn_expense_cy := p_deprn_expense_py;
252 p_last_asset_period := l_last_period_counter;
253 ELSE
254 IF l_last_period.fiscal_year = l_current_period.fiscal_year THEN
255 p_deprn_expense_py := (p_deprn_reserve - p_deprn_ytd)/(l_last_period_counter - l_dpis_period.period_counter - l_last_period.period_num + 1);
256 p_deprn_expense_cy := p_deprn_ytd / (l_last_period.period_counter);
257 p_last_asset_period := l_last_period_counter;
258 ELSE
259 p_deprn_expense_py := p_deprn_reserve / (l_last_period_counter - l_dpis_period.period_counter + 1);
260 p_deprn_expense_cy := p_deprn_expense_py;
261 p_last_asset_period := l_last_period_counter;
262 END IF;
263 IF l_last_period.fiscal_year < l_current_period.fiscal_year THEN
264 p_deprn_expense_cy := 0;
265 END IF;
266 END IF;
267 END IF;
268 END LOOP;
269 END IF;
270
271 IF ((p_calling_function = 'RECLASS') OR (p_calling_function = 'ADDITION') ) THEN
272
273 OPEN c_get_user_deprn;
274 FETCH c_get_user_deprn INTO l_booksrow_period, l_booksrow_reserve,l_booksrow_ytd_deprn;
275 CLOSE c_get_user_deprn;
276
277 OPEN c_get_deprn_calendar;
278 FETCH c_get_deprn_calendar INTO l_deprn_calendar;
279 CLOSE c_get_deprn_calendar;
280
281 OPEN c_get_periods_in_year(l_deprn_calendar);
282 FETCH c_get_periods_in_year INTO l_periods_in_year;
283 CLOSE c_get_periods_in_year;
284 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
285 p_full_path => l_path_name,
286 p_string => ' Periods in Year for the calendar :'||to_char(l_periods_in_year));
287
288 FOR l_asset_info IN c_get_fa_asset_info LOOP
289
290 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
291 p_full_path => l_path_name,
292 p_string => ' cost :'||to_char(l_asset_info.cost));
293 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
294 p_full_path => l_path_name,
295 p_string => ' salvage value :'||to_char(l_asset_info.salvage_value));
296 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
297 p_full_path => l_path_name,
298 p_string => ' date placed in service :'||to_char(l_asset_info.date_placed_in_service));
299 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
300 p_full_path => l_path_name,
301 p_string => ' depreciate flag :'||l_asset_info.depreciate_flag);
302 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
303 p_full_path => l_path_name,
304 p_string => ' period counter fully reserved :'||to_char(l_asset_info.period_counter_fully_reserved));
305 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
306 p_full_path => l_path_name,
307 p_string => ' transaction header id in :'||to_char(l_asset_info.transaction_header_id_in));
308 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
309 p_full_path => l_path_name,
310 p_string => ' life in months :'||to_char(l_asset_info.life_in_months));
311
312 IF (l_asset_info.depreciate_flag = 'NO') THEN
313 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
314 p_full_path => l_path_name,
315 p_string => ' Depreciate Flag is off. No depreciation calculation required');
316 p_deprn_expense_py := 0;
317 p_deprn_expense_cy := 0;
318 p_last_asset_period := NULL;
319 return TRUE;
320 END IF;
321
322 l_total_periods := ceil((l_asset_info.life_in_months*l_periods_in_year)/12);
323 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
324 p_full_path => l_path_name,
325 p_string => ' Total Periods in Asset life :'||to_char(l_total_periods));
326
327 /* Added for bug 2411599 vgadde 12/06/2002 Start(1)*/
328 /* Modified logic for getting last period in asset life */
329 IF NOT igi_iac_common_utils.get_period_info_for_date(p_book_type_code,
330 l_asset_info.date_placed_in_service,
331 l_dpis_period) THEN
332 return FALSE;
333 END IF;
334
335 l_last_period_counter := (l_dpis_period.period_counter + l_total_periods - 1);
336 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
337 p_full_path => l_path_name,
338 p_string => ' Last Period counter :'||to_char(l_last_period_counter));
339
340 IF nvl(l_asset_info.period_counter_fully_reserved,l_last_period_counter) < l_last_period_counter THEN
341 l_last_period_counter := l_asset_info.period_counter_fully_reserved;
342 END IF;
343
344 IF (l_last_period_counter < p_period_counter) THEN
345 p_last_asset_period := l_last_period_counter;
346 ELSE
347 p_last_asset_period := NULL;
348 END IF;
349 /* Added for bug 2411599 vgadde 12/06/2002 End(1) */
350
351 IF ((p_calling_function = 'ADDITION') AND (nvl(l_booksrow_reserve,0) <> 0) and p_last_asset_period IS NULL) THEN
352
353 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
354 p_full_path => l_path_name,
355 p_string => ' Depreciation amount entered by user');
356
357 ------------- supplied YTD -----------------
358 IF Nvl(l_booksrow_ytd_deprn,0) <> 0 Then
359
360 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_book_type_code,
361 p_period_counter-1,
362 l_current_period) THEN
363 return FALSE;
364 END IF;
365
366 p_deprn_expense_py := (l_booksrow_reserve - l_booksrow_ytd_deprn)/(p_period_counter - l_dpis_period.period_counter - l_current_period.period_num );
367 p_deprn_expense_cy := l_booksrow_ytd_deprn/l_current_period.period_num;
368 Else
369 p_deprn_expense_py := l_booksrow_reserve/ (p_period_counter - l_dpis_period.period_counter);
370 p_deprn_expense_cy := p_deprn_expense_py;
371 END IF;
372
373 ELSIF (p_calling_function = 'RECLASS') THEN
374 OPEN c_get_deprn_reserve;
375 FETCH c_get_deprn_reserve INTO l_reclass_period,l_deprn_reserve;
376 CLOSE c_get_deprn_reserve;
377
378 --Code added by Venkat Gadde
379 IF l_reclass_period <> l_booksrow_period THEN
380 IF l_last_period_counter is not null and l_last_period_counter < l_reclass_period Then
381 l_reclass_period := l_last_period_counter;
382 end if;
383 p_deprn_expense_py := l_deprn_reserve /(l_reclass_period - l_dpis_period.period_counter + 1);
384 p_deprn_expense_cy := p_deprn_expense_py;
385 ELSIF (nvl(l_booksrow_reserve,0) <> 0) THEN
386 p_deprn_expense_py := l_booksrow_reserve/ (p_period_counter - l_dpis_period.period_counter);
387 p_deprn_expense_cy := p_deprn_expense_py;
388 ELSE
389 p_deprn_expense_py := (l_asset_info.cost-l_asset_info.salvage_value)/l_total_periods;
390 p_deprn_expense_cy := p_deprn_expense_py;
391 END IF;
392
393 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
394 p_full_path => l_path_name,
395 p_string => ' Calculated the deprn expense for '||l_reclass_period);
396 -- End of code added by Venkat Gadde
397 ELSE
398 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
399 p_full_path => l_path_name,
400 p_string => ' Depreciation amount calculated by FA');
401 p_deprn_expense_py := (l_asset_info.cost-l_asset_info.salvage_value)/l_total_periods;
402 p_deprn_expense_cy := p_deprn_expense_py;
403 END IF;
404
405 END LOOP;
406
407 END IF;
408 /* Bug 2961656 vgadde 08-jul-03 End(2) */
409 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
410 p_full_path => l_path_name,
411 p_string => '-----Output from get_fa_deprn_expense function');
412 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
413 p_full_path => l_path_name,
414 p_string => ' FA pys Depreciation Expense per period :'||to_char(p_deprn_expense_py));
415 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
416 p_full_path => l_path_name,
417 p_string => ' FA cys Depreciation Expense per period :'||to_char(p_deprn_expense_cy));
418 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
419 p_full_path => l_path_name,
420 p_string => ' Last period for the asset :'||to_char(p_last_asset_period));
421 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
422 p_full_path => l_path_name,
423 p_string => '----------------------------------------------');
424 return TRUE;
425
426 EXCEPTION
427 WHEN OTHERS THEN
428 igi_iac_debug_pkg.debug_unexpected_msg(p_full_path => l_path_name);
429 return FALSE;
430 END get_FA_Deprn_Expense;
431
432 FUNCTION Do_Deprn_Catchup(
433 p_period_counter_from IN NUMBER,
434 p_period_counter_to IN NUMBER,
435 p_period_counter IN NUMBER,
436 p_crud_iac_tables IN BOOLEAN,
437 p_calling_function IN VARCHAR2,
438 p_fa_deprn_expense_py IN NUMBER,
439 p_fa_deprn_expense_cy IN NUMBER,
440 p_asset_last_period IN NUMBER,
441 p_fa_deprn_reserve IN NUMBER,
442 p_fa_deprn_ytd IN NUMBER,
443 p_asset_balance IN OUT NOCOPY igi_iac_types.iac_reval_input_asset,
444 p_event_id IN NUMBER --R12 uptake
445 ) return BOOLEAN IS
446
447 l_deprn_catchup_amount NUMBER;
448 l_rowid VARCHAR2(25) ;
449 l_adjustment_id igi_iac_transaction_headers.adjustment_id%TYPE;
450 l_transaction_sub_type igi_iac_transaction_headers.transaction_sub_type%TYPE;
451 l_distributions_tab igi_iac_types.dist_amt_tab;
452 l_fa_dist_catchup_tab igi_iac_types.dist_amt_tab;
453 l_account_ccid NUMBER(15) ;
454 l_set_of_books_id NUMBER(15) ;
455 l_chart_of_accts_id NUMBER(15) ;
456 l_currency_code VARCHAR2(15) ;
457 l_precision VARCHAR2(1) ;
458 l_idx NUMBER;
459 l_detail_balance igi_iac_det_balances%ROWTYPE;
460 l_distribution_amount NUMBER;
461 l_dist_period_amount NUMBER;
462 l_last_catchup_prd_rec igi_iac_types.prd_rec;
463 l_last_reval_prd_rec igi_iac_types.prd_rec;
464 l_deprn_ytd NUMBER;
465 l_reval_reserve_net igi_iac_det_balances.reval_reserve_net%TYPE;
466 l_reval_general_fund igi_iac_det_balances.reval_reserve_gen_fund%TYPE;
467 l_general_fund_acc igi_iac_det_balances.general_fund_acc%TYPE;
468 l_fa_deprn_acc NUMBER;
469 l_fa_deprn_catchup_amount NUMBER;
470 l_iac_fa_deprn_rec igi_iac_fa_deprn%ROWTYPE;
471 l_last_deprn_catchup_period NUMBER;
472 l_periods_in_year NUMBER;
473 l_deprn_calendar fa_calendar_types.calendar_type%TYPE;
474 /* Bug 2961656 vgadde 08-jul-2003 Start(3) */
475 l_iac_deprn_amount_py NUMBER;
476 l_iac_deprn_amount_cy NUMBER;
477 l_period_from igi_iac_types.prd_rec;
478 l_period_to igi_iac_types.prd_rec;
479 l_period_open igi_iac_types.prd_rec;
480 l_period_reserved igi_iac_types.prd_rec;
481 /* Bug 2961656 vgadde 08-jul-2003 End(3) */
482 l_path_name VARCHAR2(150);
483 l_iac_deprn_period_amount NUMBER;
484 l_fa_deprn_period_amount NUMBER;
485 l_booksrow_period NUMBER;
486 l_booksrow_reserve NUMBER;
487 l_booksrow_YTD NUMBER;
488 l_reval_rsv_ccid NUMBER;
489 l_iac_active_dists_YTD NUMBER;
490 l_fa_active_dists_YTD NUMBER;
491 l_iac_inactive_dists_YTD NUMBER;
492 l_fa_inactive_dists_YTD NUMBER;
493 l_iac_all_dists_YTD NUMBER;
494 l_fa_all_dists_YTD NUMBER;
495
496 CURSOR c_get_transaction IS
497 SELECT *
498 FROM igi_iac_transaction_headers
499 WHERE period_counter = p_period_counter
500 AND book_type_code = p_asset_balance.book_type_code
501 AND asset_id = p_asset_balance.asset_id
502 AND transaction_type_code = p_calling_function
503 AND transaction_sub_type = 'REVALUATION'
504 AND adjustment_id_out is NULL;
505
506 CURSOR c_get_detail_balances(p_adjustment_id NUMBER,p_distribution_id NUMBER) IS
507 SELECT *
508 FROM igi_iac_det_balances
509 WHERE book_type_code = p_asset_balance.book_type_code
510 AND asset_id = p_asset_balance.asset_id
511 AND adjustment_id = p_adjustment_id
512 AND distribution_id = p_distribution_id;
513
514 CURSOR c_get_inactive_dists(p_adjustment_id NUMBER) IS
515 SELECT *
516 FROM igi_iac_det_balances
517 WHERE adjustment_id = p_adjustment_id
518 AND book_type_code = p_asset_balance.book_type_code
519 AND asset_id = p_asset_balance.asset_id
520 AND nvl(active_flag,'Y') = 'N';
521
522 CURSOR c_get_upgrade_rec IS
523 SELECT *
524 FROM igi_imp_iac_interface_py_add
525 WHERE book_type_code = p_asset_balance.book_type_code
526 AND asset_id = p_asset_balance.asset_id
527 AND period_counter = p_period_counter;
528
529 CURSOR c_get_iac_fa_deprn_rec(cp_adjustment_id igi_iac_fa_deprn.adjustment_id%TYPE
530 ,cp_distribution_id igi_iac_fa_deprn.distribution_id%TYPE) IS
531 SELECT *
532 FROM igi_iac_fa_deprn
533 WHERE book_type_code = p_asset_balance.book_type_code
534 AND asset_id = p_asset_balance.asset_id
535 AND adjustment_id = cp_adjustment_id
536 AND distribution_id = cp_distribution_id;
537
538 CURSOR c_get_iac_fa_inactive_dists(cp_adjustment_id igi_iac_fa_deprn.adjustment_id%TYPE) IS
539 SELECT *
540 FROM igi_iac_fa_deprn
541 WHERE adjustment_id = cp_adjustment_id
542 AND book_type_code = p_asset_balance.book_type_code
543 AND asset_id = p_asset_balance.asset_id
544 AND nvl(active_flag,'Y') = 'N';
545
546 cursor c_asset_details_salvage is
547 SELECT life_in_months,salvage_value,rate_adjustment_factor
548 FROM fa_books
549 WHERE book_type_code = p_asset_balance.book_type_code
550 AND asset_id = p_asset_balance.asset_id
551 AND date_ineffective is NULL ;
552
553 l_asset_details_salvage c_asset_details_salvage%rowtype;
554 l_salvage_value_correction number ;
555
556 CURSOR c_get_deprn_calendar IS
557 SELECT deprn_calendar
558 FROM fa_book_controls
559 WHERE book_type_code = p_asset_balance.book_type_code;
560
561 CURSOR c_get_periods_in_year(p_calendar_type fa_calendar_types.calendar_type%TYPE) IS
562 SELECT number_per_fiscal_year
563 FROM fa_calendar_types
564 WHERE calendar_type = p_calendar_type;
565
566 CURSOR c_get_user_deprn IS
567 SELECT period_counter,deprn_reserve,YTD_deprn
568 FROM fa_deprn_summary
569 WHERE book_type_code = p_asset_balance.book_type_code
570 AND asset_id = p_asset_balance.asset_id
571 AND deprn_source_code = 'BOOKS';
572
573
574 BEGIN
575 IF FND_PROFILE.VALUE('IGI_DEBUG_OPTION') = 'Y' THEN
576 g_debug := TRUE;
577 END IF;
578 l_path_name := g_path||'do_deprn_catchup';
579 l_salvage_value_correction :=0;
580
581 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
582 p_full_path => l_path_name,
583 p_string => '----------Start of processing by function Do_Deprn_Catchup....');
584 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
585 p_full_path => l_path_name,
586 p_string => '---- Input Parameters for the function ---------');
587 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
588 p_full_path => l_path_name,
589 p_string => ' Period Counter From :'||to_char(p_period_counter_from));
590 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
591 p_full_path => l_path_name,
592 p_string => ' Period Counter To :'||to_char(p_period_counter_to));
593 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
594 p_full_path => l_path_name,
595 p_string => ' Current Open Period Counter :'||to_char(p_period_counter));
596 If p_crud_iac_tables then
597 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
598 p_full_path => l_path_name,
599 p_string => ' CRUD IAC tables is TRUE');
600 Else
601 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
602 p_full_path => l_path_name,
603 p_string => ' CRUD IAC tables is FALSE');
604 End If;
605 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
606 p_full_path => l_path_name,
607 p_string => ' Calling Function :'||p_calling_function);
608 Debug_Asset(p_asset_balance);
609 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
610 p_full_path => l_path_name,
611 p_string => '--------------------------------------------------');
612 IF (p_period_counter_from >= p_period_counter_to) THEN
613 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
614 p_full_path => l_path_name,
615 p_string => ' Returning from do_deprn_catchup as no catchup is required');
616 return TRUE;
617 END IF;
618
619 /* Bug 2961656 vgadde 08-jul-2003 Start(4) */
620 /*IF NOT get_FA_Deprn_Expense(p_asset_balance.asset_id,
621 p_asset_balance.book_type_code,
622 p_period_counter,
623 p_calling_function,
624 l_fa_deprn_amount,
625 l_last_asset_period) THEN
626 Debug('*** Error in get_FA_Deprn_Expense function');
627 return FALSE;
628 END IF;*/
629 /* Bug 2961656 vgadde 08-jul-2003 End(4) */
630
631 /* Bug 2961656 vgadde 08-jul-2003 Start(5) */
632 IF (nvl(p_fa_deprn_expense_py,0) = 0 AND nvl(p_fa_deprn_expense_cy,0) = 0) THEN
633 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
634 p_full_path => l_path_name,
635 p_string => ' Returning from do_deprn_catchup since no depreciation catchup is required');
636 return TRUE;
637 END IF;
638
639 l_iac_deprn_amount_py := (p_fa_deprn_expense_py * p_asset_balance.cumulative_reval_factor)-p_fa_deprn_expense_py;
640 l_iac_deprn_amount_cy := (p_fa_deprn_expense_cy * p_asset_balance.cumulative_reval_factor)-p_fa_deprn_expense_cy;
641 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
642 p_full_path => l_path_name,
643 p_string => ' IAC pys Depreciation amount per period :'||to_char(l_iac_deprn_amount_py));
644 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
645 p_full_path => l_path_name,
646 p_string => ' IAC cys Depreciation amount per period :'||to_char(l_iac_deprn_amount_cy));
647 Open c_get_deprn_calendar;
648 Fetch c_get_deprn_calendar into l_deprn_calendar;
649 Close c_get_deprn_calendar;
650
651 Open c_get_periods_in_year(l_deprn_calendar);
652 Fetch c_get_periods_in_year into l_periods_in_year;
653 Close c_get_periods_in_year;
654
655 IF (p_calling_function = 'ADDITION' OR p_calling_function = 'RECLASS') THEN
656
657 -- Supplied YTD
658 OPEN c_get_user_deprn;
659 FETCH c_get_user_deprn INTO l_booksrow_period, l_booksrow_reserve,l_booksrow_ytd;
660 CLOSE c_get_user_deprn;
661
662 IF ((p_calling_function = 'ADDITION') AND (nvl(l_booksrow_YTD,0) <> 0) AND (p_asset_last_period IS NULL)) THEN
663
664 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
665 p_period_counter_from,l_period_from) THEN
666 return FALSE;
667 END IF;
668
669 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
670 p_period_counter_to-1,l_period_to) THEN
671 return FALSE;
672 END IF;
673
674 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
675 p_period_counter-1,
676 l_period_open) THEN
677 return FALSE;
678 END IF;
679 -- get the deprn amt per period ---
680
681 IF (l_period_from.fiscal_year < l_period_open.fiscal_year) AND (l_period_to.fiscal_year < l_period_open.fiscal_year) THEN
682 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
683 p_full_path => l_path_name,
684 p_string => 'Depreciation catch up in previous years :');
685 l_deprn_catchup_amount := l_iac_deprn_amount_py * (p_period_counter_to - p_period_counter_from );
686 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_period_counter_to - p_period_counter_from);
687
688 ELSIF (l_period_from.fiscal_year < l_period_open.fiscal_year) AND (l_period_to.fiscal_year = l_period_open.fiscal_year) THEN
689 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
690 p_full_path => l_path_name,
691 p_string => 'Depreciation catch up in previous year and current year :');
692
693
694 l_deprn_catchup_amount := (l_iac_deprn_amount_cy * l_period_to.period_num ) +
695 (l_iac_deprn_amount_py * (p_period_counter_to - p_period_counter_from - l_period_to.period_num ));
696 l_fa_deprn_catchup_amount := (p_fa_deprn_expense_cy * l_period_to.period_num ) +
697 (p_fa_deprn_expense_py * (p_period_counter_to - p_period_counter_from - l_period_to.period_num ));
698
699 ELSIF (l_period_from.fiscal_year = l_period_open.fiscal_year) AND (l_period_to.fiscal_year = l_period_open.fiscal_year) THEN
700 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
701 p_full_path => l_path_name,
702 p_string => 'Depreciation catch up in current year :');
703
704 l_deprn_catchup_amount := l_iac_deprn_amount_cy * (p_period_counter_to - p_period_counter_from );
705 l_fa_deprn_catchup_amount := p_fa_deprn_expense_cy * (p_period_counter_to - p_period_counter_from );
706 END IF;
707
708 ELSE -- not supplied YTD
709
710 IF (p_asset_last_period IS NULL) THEN
711 l_deprn_catchup_amount := l_iac_deprn_amount_py * ( p_period_counter_to - p_period_counter_from);
712 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_period_counter_to - p_period_counter_from);
713 ELSE
714 IF(p_asset_last_period < p_period_counter_from) THEN
715 return TRUE;
716 ELSIF (p_asset_last_period < p_period_counter_to) THEN
717 l_deprn_catchup_amount := l_iac_deprn_amount_py * (p_asset_last_period - p_period_counter_from + 1);
718 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_asset_last_period - p_period_counter_from + 1);
719 ELSE
720 l_deprn_catchup_amount := l_iac_deprn_amount_py * ( p_period_counter_to - p_period_counter_from);
721 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_period_counter_to - p_period_counter_from);
722 END IF;
723 END IF;
724 END IF;
725 END IF; -- Addition and reclass
726
727 IF (p_calling_function = 'UPGRADE') THEN
728 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
729 p_period_counter_from,
730 l_period_from) THEN
731 return FALSE;
732 END IF;
733
734 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
735 p_period_counter_to-1,
736 l_period_to) THEN
737 return FALSE;
738 END IF;
739 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
740 p_period_counter,
741 l_period_open) THEN
742 return FALSE;
743 END IF;
744 IF nvl(p_asset_last_period, l_period_to.period_counter) >= l_period_to.period_counter THEN
745 IF l_period_to.fiscal_year < l_period_open.fiscal_year THEN
746 l_deprn_catchup_amount := l_iac_deprn_amount_py * (p_period_counter_to - p_period_counter_from);
747 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_period_counter_to - p_period_counter_from);
748 ELSE
749 IF l_period_from.fiscal_year < l_period_open.fiscal_year THEN
750 l_deprn_catchup_amount := (l_iac_deprn_amount_cy * l_period_to.period_num) +
751 (l_iac_deprn_amount_py * (p_period_counter_to - p_period_counter_from - l_period_to.period_num ));
752 l_fa_deprn_catchup_amount := (p_fa_deprn_expense_cy * l_period_to.period_num) +
753 (p_fa_deprn_expense_py * (p_period_counter_to - p_period_counter_from - l_period_to.period_num ));
754 ELSE
755 l_deprn_catchup_amount := l_iac_deprn_amount_cy * (p_period_counter_to - p_period_counter_from);
756 l_fa_deprn_catchup_amount := p_fa_deprn_expense_cy * (p_period_counter_to - p_period_counter_from);
757 END IF;
758 END IF;
759 ELSIF p_asset_last_period < p_period_counter_from THEN
760 return TRUE;
761 ELSE
762 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
763 p_asset_last_period,
764 l_period_reserved) THEN
765 return FALSE;
766 END IF;
767
768 IF l_period_to.fiscal_year < l_period_open.fiscal_year THEN
769 l_deprn_catchup_amount := l_iac_deprn_amount_py * (p_asset_last_period - l_period_from.period_counter + 1);
770 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_asset_last_period - l_period_from.period_counter + 1);
771 ELSIF l_period_to.fiscal_year = l_period_open.fiscal_year THEN
772 IF l_period_from.fiscal_year < l_period_open.fiscal_year THEN
773 IF l_period_reserved.fiscal_year < l_period_open.fiscal_year THEN
774 l_deprn_catchup_amount := l_iac_deprn_amount_py * (p_asset_last_period - p_period_counter_from + 1);
775 l_fa_deprn_catchup_amount := p_fa_deprn_expense_py * (p_asset_last_period - p_period_counter_from + 1);
776 ELSIF l_period_reserved.fiscal_year = l_period_open.fiscal_year THEN
777 l_deprn_catchup_amount := (l_iac_deprn_amount_cy * l_period_reserved.period_num) +
778 (l_iac_deprn_amount_py * (l_period_reserved.period_counter - l_period_from.period_counter - l_period_reserved.period_num));
779 l_fa_deprn_catchup_amount := (p_fa_deprn_expense_cy * l_period_reserved.period_num) +
780 (p_fa_deprn_expense_py * (l_period_reserved.period_counter - l_period_from.period_counter - l_period_reserved.period_num));
781 END IF;
782 ELSIF l_period_from.fiscal_year = l_period_open.fiscal_year THEN
783 l_deprn_catchup_amount := l_iac_deprn_amount_cy * (p_asset_last_period - p_period_counter_from + 1);
784 l_fa_deprn_catchup_amount := p_fa_deprn_expense_cy * (p_asset_last_period - p_period_counter_from + 1);
785 END IF;
786 END IF;
787 END IF;
788
789 END IF;
790 /* Bug 2961656 vgadde 08-jul-2003 End(5) */
791
792 IF NOT (igi_iac_common_utils.iac_round(l_deprn_catchup_amount,p_asset_balance.book_type_code)) THEN
793 return FALSE;
794 END IF;
795
796 IF NOT (igi_iac_common_utils.iac_round(l_fa_deprn_catchup_amount,p_asset_balance.book_type_code)) THEN
797 return FALSE;
798 END IF;
799
800 /* Bug 2961656 vgadde 08-jul-2003 Start(6) */
801 IF NOT (igi_iac_common_utils.iac_round(l_iac_deprn_amount_py,p_asset_balance.book_type_code)) THEN
802 return FALSE;
803 END IF;
804
805 IF NOT (igi_iac_common_utils.iac_round(l_iac_deprn_amount_cy,p_asset_balance.book_type_code)) THEN
806 return FALSE;
807 END IF;
808 /* Bug 2961656 vgadde 08-jul-2003 End(6) */
809
810 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
811 p_full_path => l_path_name,
812 p_string => ' Total Depreciation catchup amount :'||to_char(l_deprn_catchup_amount));
813 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
814 p_full_path => l_path_name,
815 p_string => ' FA Depreciation catchup amount :'||to_char(l_fa_deprn_catchup_amount));
816
817 p_asset_balance.deprn_amount := l_iac_deprn_amount_cy;
818 p_asset_balance.net_book_value := nvl(p_asset_balance.net_book_value,0) - l_deprn_catchup_amount;
819 p_asset_balance.deprn_reserve := nvl(p_asset_balance.deprn_reserve,0) + l_deprn_catchup_amount;
820
821 /* Bug 2423710 vgadde 19/06/2002 Start(1) */
822 IF (p_asset_balance.adjusted_cost > 0) THEN
823 p_asset_balance.reval_reserve := nvl(p_asset_balance.reval_reserve,0) - l_deprn_catchup_amount;
824 p_asset_balance.general_fund := nvl(p_asset_balance.general_fund,0) + l_deprn_catchup_amount;
825 END IF;
826 /* Bug 2423710 vgadde 19/06/2002 End(1) */
827
828 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
829 p_full_path => l_path_name,
830 p_string => '------ Output Asset Record from do_deprn_catchup-----------');
831 Debug_Asset(p_asset_balance);
832
833 IF (p_crud_iac_tables) THEN
834
835 IF (nvl(p_asset_last_period,p_period_counter) < (p_period_counter - 1)) THEN
836 l_last_deprn_catchup_period := p_asset_last_period;
837 ELSE
838 l_last_deprn_catchup_period := p_period_counter - 1;
839 END IF;
840
841 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
842 l_last_deprn_catchup_period,
843 l_last_catchup_prd_rec) THEN
844 return FALSE;
845 END IF;
846
847 IF NOT igi_iac_common_utils.get_period_info_for_counter(p_asset_balance.book_type_code,
848 p_period_counter_from-1,
849 l_last_reval_prd_rec) THEN
850 return FALSE;
851 END IF;
852
853 IF (p_calling_function <> 'UPGRADE') THEN
854
855 /* Accounting entries to be created */
856 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
857 p_full_path => l_path_name,
858 p_string => ' Inserting records into IAC tables');
859 IF NOT (igi_iac_common_utils.get_book_gl_info(p_asset_balance.book_type_code ,
860 l_set_of_books_id ,
861 l_chart_of_accts_id ,
862 l_currency_code ,
863 l_precision )) THEN
864 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
865 p_full_path => l_path_name,
866 p_string => '*** Error in getting book GL info - do_deprn_catchup');
867 RETURN false;
868 END IF;
869
870 l_rowid := NULL;
871 l_adjustment_id := NULL;
872
873 FOR l_transaction IN c_get_transaction LOOP
874 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
875 p_full_path => l_path_name,
876 p_string => ' Transaction ID created by revaluation :'||to_char(l_transaction.adjustment_id));
877 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
878 p_full_path => l_path_name,
879 p_string => ' Inserting record into igi_iac_transaction_headers');
880 igi_iac_trans_headers_pkg.insert_row(
881 X_rowid => l_rowid ,
882 X_adjustment_id => l_adjustment_id ,
883 X_transaction_header_id => NULL ,
884 X_adjustment_id_out => NULL ,
885 X_transaction_type_code => p_calling_function ,
886 X_transaction_date_entered => sysdate ,
887 X_mass_refrence_id => NULL ,
888 X_transaction_sub_type => 'CATCHUP' ,
889 X_book_type_code => l_transaction.book_type_code ,
890 X_asset_id => l_transaction.asset_id ,
891 X_category_id => l_transaction.category_id ,
892 X_adj_deprn_start_date => l_transaction.adj_deprn_start_date ,
893 X_revaluation_type_flag => NULL,
894 X_adjustment_status => 'COMPLETE' ,
895 X_period_counter => l_transaction.period_counter,
896 X_event_id => p_event_id) ;
897
898 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
899 p_full_path => l_path_name,
900 p_string => ' New Adjustment Id for deprn catchup :'||to_char(l_adjustment_id));
901
902 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
903 p_full_path => l_path_name,
904 p_string => ' Processing Inactive distributions');
905
906 l_iac_inactive_dists_YTD := 0;
907 l_fa_inactive_dists_YTD := 0;
908 l_iac_active_dists_YTD := 0;
909 l_fa_active_dists_YTD := 0;
910 l_iac_all_dists_YTD := 0;
911 l_fa_all_dists_YTD := 0;
912
913 FOR l_inactive_dist IN c_get_inactive_dists(l_transaction.adjustment_id) LOOP
914 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
915 p_full_path => l_path_name,
916 p_string => ' Distribution Id :'||to_char(l_inactive_dist.distribution_id));
917
918 l_rowid := NULL;
919 igi_iac_det_balances_pkg.insert_row(
920 X_rowid => l_rowid ,
921 X_adjustment_id => l_adjustment_id ,
922 X_asset_id => l_inactive_dist.asset_id ,
923 X_distribution_id => l_inactive_dist.distribution_id ,
924 X_book_type_code => l_inactive_dist.book_type_code ,
925 X_period_counter => p_period_counter ,
926 X_adjustment_cost => l_inactive_dist.adjustment_cost ,
927 X_net_book_value => l_inactive_dist.net_book_value ,
928 X_reval_reserve_cost => l_inactive_dist.reval_reserve_cost ,
929 X_reval_reserve_backlog => l_inactive_dist.reval_reserve_backlog ,
930 X_reval_reserve_gen_fund => l_inactive_dist.reval_reserve_gen_fund ,
931 X_reval_reserve_net => l_inactive_dist.reval_reserve_net,
932 X_operating_acct_cost => l_inactive_dist.operating_acct_cost ,
933 X_operating_acct_backlog => l_inactive_dist.operating_acct_backlog ,
934 X_operating_acct_net => l_inactive_dist.operating_acct_net ,
935 X_operating_acct_ytd => l_inactive_dist.operating_acct_ytd ,
936 X_deprn_period => l_inactive_dist.deprn_period ,
937 X_deprn_ytd => l_inactive_dist.deprn_ytd ,
938 X_deprn_reserve => l_inactive_dist.deprn_reserve ,
939 X_deprn_reserve_backlog => l_inactive_dist.deprn_reserve_backlog ,
940 X_general_fund_per => l_inactive_dist.general_fund_per ,
941 X_general_fund_acc => l_inactive_dist.general_fund_acc ,
942 X_last_reval_date => l_inactive_dist.last_reval_date ,
943 X_current_reval_factor => l_inactive_dist.current_reval_factor ,
944 X_cumulative_reval_factor => l_inactive_dist.cumulative_reval_factor ,
945 X_active_flag => l_inactive_dist.active_flag ) ;
946
947 l_iac_inactive_dists_YTD := l_iac_inactive_dists_YTD + l_inactive_dist.deprn_ytd;
948 END LOOP; /* inactive distributions of igi_iac_det_balances */
949
950 FOR l_iac_fa_inactive_dist IN c_get_iac_fa_inactive_dists(l_transaction.adjustment_id) LOOP
951 l_rowid := NULL;
952 igi_iac_fa_deprn_pkg.insert_row(
953 x_rowid => l_rowid,
954 x_book_type_code => l_iac_fa_inactive_dist.book_type_code,
955 x_asset_id => l_iac_fa_inactive_dist.asset_id,
956 x_distribution_id => l_iac_fa_inactive_dist.distribution_id,
957 x_period_counter => p_period_counter,
958 x_adjustment_id => l_adjustment_id,
959 x_deprn_period => l_iac_fa_inactive_dist.deprn_period,
960 x_deprn_ytd => l_iac_fa_inactive_dist.deprn_ytd ,
961 x_deprn_reserve => l_iac_fa_inactive_dist.deprn_reserve ,
962 x_active_flag => l_iac_fa_inactive_dist.active_flag,
963 x_mode => 'R');
964 l_fa_inactive_dists_YTD := l_fa_inactive_dists_YTD + l_iac_fa_inactive_dist.deprn_ytd;
965 END LOOP;
966
967 IF (l_last_catchup_prd_rec.period_num > l_last_reval_prd_rec.period_num) THEN
968 l_iac_all_dists_YTD := l_iac_deprn_amount_cy *
969 (l_last_catchup_prd_rec.period_num - l_last_reval_prd_rec.period_num );
970 l_fa_all_dists_YTD := p_fa_deprn_expense_cy *
971 (l_last_catchup_prd_rec.period_num - l_last_reval_prd_rec.period_num );
972
973 l_iac_active_dists_YTD := l_iac_all_dists_YTD ;
974 l_fa_active_dists_YTD := l_fa_all_dists_YTD ;
975 ELSE
976 l_iac_all_dists_YTD := l_iac_deprn_amount_cy * l_last_catchup_prd_rec.period_num;
977 l_fa_all_dists_YTD := p_fa_deprn_expense_cy * l_last_catchup_prd_rec.period_num;
978 l_iac_active_dists_YTD := l_iac_all_dists_YTD - l_iac_inactive_dists_YTD;
979 l_fa_active_dists_YTD := l_fa_all_dists_YTD - l_fa_inactive_dists_YTD;
980 END IF;
981
982
983 IF NOT igi_iac_common_utils.Prorate_Amt_to_Active_Dists( l_transaction.book_type_Code ,
984 l_transaction.Asset_id ,
985 l_deprn_catchup_amount ,
986 l_distributions_tab ) THEN
987 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
988 p_full_path => l_path_name,
989 p_string => '*** Error in prorating catchup amount to active distributions');
990 return FALSE;
991 END IF;
992
993 IF NOT igi_iac_common_utils.Prorate_Amt_to_Active_Dists( l_transaction.book_type_Code ,
994 l_transaction.Asset_id ,
995 l_fa_deprn_catchup_amount ,
996 l_fa_dist_catchup_tab ) THEN
997 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
998 p_full_path => l_path_name,
999 p_string => '*** Error in prorating period amount to active distributions');
1000 return FALSE;
1001 END IF;
1002
1003 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1004 p_full_path => l_path_name,
1005 p_string => ' Total Number of Distributions For Asset:'||to_char(l_distributions_tab.LAST));
1006 FOR l_idx IN l_distributions_tab.FIRST..l_distributions_tab.LAST LOOP
1007 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1008 p_full_path => l_path_name,
1009 p_string => ' Distribution id :'||to_char(l_distributions_tab(l_idx).distribution_id));
1010 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1011 p_full_path => l_path_name,
1012 p_string => ' Prorated Catchup Amount for the distribution :'||to_char(l_distributions_tab(l_idx).amount));
1013 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1014 p_full_path => l_path_name,
1015 p_string => ' Units for the distribution :'||to_char(l_distributions_tab(l_idx).units));
1016 OPEN c_get_detail_balances(l_transaction.adjustment_id,
1017 l_distributions_tab(l_idx).distribution_id);
1018 FETCH c_get_detail_balances INTO l_detail_balance;
1019 CLOSE c_get_detail_balances;
1020
1021 l_distribution_amount := l_distributions_tab(l_idx).amount;
1022 l_dist_period_amount := l_iac_deprn_amount_cy * l_distributions_tab(l_idx).prorate_factor;
1023
1024 IF NOT igi_iac_common_utils.iac_round(l_distribution_amount,
1025 l_transaction.book_type_code) THEN
1026 return FALSE;
1027 END IF;
1028
1029 IF NOT igi_iac_common_utils.iac_round(l_dist_period_amount,
1030 l_transaction.book_type_code) THEN
1031 return FALSE;
1032 END IF;
1033
1034 IF (l_distribution_amount <> 0) THEN
1035 /* Do not create accounting entries if the amount is zero */
1036
1037 l_rowid := NULL;
1038 l_account_ccid := NULL ;
1039 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1040 p_full_path => l_path_name,
1041 p_string => ' Inserting records into igi_iac_adjustments');
1042 IF NOT (igi_iac_common_utils.get_account_ccid(l_transaction.book_type_code ,
1043 l_transaction.asset_id ,
1044 l_distributions_tab(l_idx).distribution_id ,
1045 'DEPRN_EXPENSE_ACCT' ,
1046 l_account_ccid )) THEN
1047
1048 RETURN false;
1049 END IF;
1050 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1051 p_full_path => l_path_name,
1052 p_string => ' Deprn expense ccid :'||to_char(l_account_ccid));
1053 igi_iac_adjustments_pkg.insert_row(
1054 X_rowid => l_rowid ,
1055 X_adjustment_id => l_adjustment_id ,
1056 X_book_type_code => l_transaction.book_type_code ,
1057 X_code_combination_id => l_account_ccid,
1058 X_set_of_books_id => l_set_of_books_id ,
1059 X_dr_cr_flag => 'DR' ,
1060 X_amount => l_distribution_amount ,
1061 X_adjustment_type => 'EXPENSE' ,
1062 X_transfer_to_gl_flag => 'Y' ,
1063 X_units_assigned => l_distributions_tab(l_idx).units ,
1064 X_asset_id => l_transaction.asset_id ,
1065 X_distribution_id => l_distributions_tab(l_idx).distribution_id ,
1066 X_period_counter => l_transaction.period_counter,
1067 X_adjustment_offset_type => 'RESERVE' ,
1068 X_report_ccid => Null,
1069 x_mode => 'R',
1070 X_event_id => p_event_id ) ;
1071
1072 l_rowid := NULL;
1073 l_account_ccid := NULL ;
1074 IF NOT (igi_iac_common_utils.get_account_ccid(l_transaction.book_type_code ,
1075 l_transaction.asset_id ,
1076 l_distributions_tab(l_idx).distribution_id ,
1077 'DEPRN_RESERVE_ACCT' ,
1078 l_account_ccid )) THEN
1079
1080 RETURN false;
1081 END IF;
1082 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1083 p_full_path => l_path_name,
1084 p_string => ' Deprn reserve ccid :'||to_char(l_account_ccid));
1085 igi_iac_adjustments_pkg.insert_row(
1086 X_rowid => l_rowid ,
1087 X_adjustment_id => l_adjustment_id ,
1088 X_book_type_code => l_transaction.book_type_code ,
1089 X_code_combination_id => l_account_ccid,
1090 X_set_of_books_id => l_set_of_books_id ,
1091 X_dr_cr_flag => 'CR' ,
1092 X_amount => l_distribution_amount ,
1093 X_adjustment_type => 'RESERVE' ,
1094 X_transfer_to_gl_flag => 'Y' ,
1095 X_units_assigned => l_distributions_tab(l_idx).units ,
1096 X_asset_id => l_transaction.asset_id ,
1097 X_distribution_id => l_distributions_tab(l_idx).distribution_id ,
1098 X_period_counter => l_transaction.period_counter,
1099 X_adjustment_offset_type => 'EXPENSE' ,
1100 X_report_ccid => Null,
1101 x_mode => 'R',
1102 X_event_id => p_event_id ) ;
1103
1104 IF (p_asset_balance.adjusted_cost > 0) THEN
1105
1106 l_rowid := NULL;
1107 l_account_ccid := NULL ;
1108 l_reval_rsv_ccid := Null;
1109
1110 IF NOT (igi_iac_common_utils.get_account_ccid(l_transaction.book_type_code ,
1111 l_transaction.asset_id ,
1112 l_distributions_tab(l_idx).distribution_id ,
1113 'REVAL_RESERVE_ACCT' ,
1114 l_account_ccid )) THEN
1115
1116 RETURN false;
1117 END IF;
1118 l_reval_rsv_ccid :=l_account_ccid;
1119 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1120 p_full_path => l_path_name,
1121 p_string => ' Reval reserve ccid :'||to_char(l_account_ccid));
1122 igi_iac_adjustments_pkg.insert_row(
1123 X_rowid => l_rowid ,
1124 X_adjustment_id => l_adjustment_id ,
1125 X_book_type_code => l_transaction.book_type_code ,
1126 X_code_combination_id => l_account_ccid,
1127 X_set_of_books_id => l_set_of_books_id ,
1128 X_dr_cr_flag => 'DR' ,
1129 X_amount => l_distribution_amount ,
1130 X_adjustment_type => 'REVAL RESERVE' ,
1131 X_transfer_to_gl_flag => 'Y' ,
1132 X_units_assigned => l_distributions_tab(l_idx).units ,
1133 X_asset_id => l_transaction.asset_id ,
1134 X_distribution_id => l_distributions_tab(l_idx).distribution_id ,
1135 X_period_counter => l_transaction.period_counter,
1136 X_adjustment_offset_type => 'GENERAL FUND' ,
1137 X_report_ccid => Null ,
1138 x_mode => 'R',
1139 X_event_id => p_event_id ) ;
1140
1141 l_rowid := NULL;
1142 l_account_ccid := NULL ;
1143 IF NOT (igi_iac_common_utils.get_account_ccid(l_transaction.book_type_code ,
1144 l_transaction.asset_id ,
1145 l_distributions_tab(l_idx).distribution_id ,
1146 'GENERAL_FUND_ACCT' ,
1147 l_account_ccid )) THEN
1148
1149 RETURN false;
1150 END IF;
1151 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1152 p_full_path => l_path_name,
1153 p_string => ' General Fund ccid :'||to_char(l_account_ccid));
1154 igi_iac_adjustments_pkg.insert_row(
1155 X_rowid => l_rowid ,
1156 X_adjustment_id => l_adjustment_id ,
1157 X_book_type_code => l_transaction.book_type_code ,
1158 X_code_combination_id => l_account_ccid,
1159 X_set_of_books_id => l_set_of_books_id ,
1160 X_dr_cr_flag => 'CR' ,
1161 X_amount => l_distribution_amount ,
1162 X_adjustment_type => 'GENERAL FUND' ,
1163 X_transfer_to_gl_flag => 'Y' ,
1164 X_units_assigned => l_distributions_tab(l_idx).units ,
1165 X_asset_id => l_transaction.asset_id ,
1166 X_distribution_id => l_distributions_tab(l_idx).distribution_id ,
1167 X_period_counter => l_transaction.period_counter,
1168 X_adjustment_offset_type => 'REVAL RESERVE' ,
1169 X_report_ccid => l_reval_rsv_ccid ,
1170 x_mode => 'R',
1171 X_event_id => p_event_id ) ;
1172
1173 END IF; /* End of checking adjusted_cost > 0 */
1174 END IF; /* End of distribution amount is not zero */
1175
1176 /* Bug 2423710 vgadde 19/06/2002 Start(2) */
1177 IF (p_asset_balance.adjusted_cost > 0) THEN
1178 l_reval_reserve_net := nvl(l_detail_balance.reval_reserve_net,0) - l_distribution_amount;
1179 l_reval_general_fund := nvl(l_detail_balance.reval_reserve_gen_fund,0) + l_distribution_amount;
1180 l_general_fund_acc := nvl(l_detail_balance.general_fund_acc,0) + l_distribution_amount;
1181 ELSE
1182 l_reval_reserve_net := nvl(l_detail_balance.reval_reserve_net,0) ;
1183 l_reval_general_fund := nvl(l_detail_balance.reval_reserve_gen_fund,0) ;
1184 l_general_fund_acc := nvl(l_detail_balance.general_fund_acc,0) ;
1185 END IF;
1186 /* Bug 2423710 vgadde 19/06/2002 End(2) */
1187
1188 IF (l_last_catchup_prd_rec.period_counter < p_period_counter - 1) THEN
1189 l_iac_deprn_period_amount := 0;
1190 ELSE
1191 l_iac_deprn_period_amount := l_dist_period_amount;
1192 END IF;
1193
1194 IF (l_last_catchup_prd_rec.period_num > l_last_reval_prd_rec.period_num) THEN
1195 l_deprn_ytd := l_detail_balance.deprn_ytd + (l_iac_active_dists_YTD * l_distributions_tab(l_idx).prorate_factor);
1196 ELSE
1197 l_deprn_ytd := (l_iac_active_dists_YTD * l_distributions_tab(l_idx).prorate_factor);
1198 END IF;
1199
1200 IF NOT igi_iac_common_utils.iac_round(l_deprn_ytd,
1201 l_transaction.book_type_code) THEN
1202 return FALSE;
1203 END IF;
1204
1205 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1206 p_full_path => l_path_name,
1207 p_string => ' Inserting into igi_iac_det_balances ');
1208 l_rowid := NULL;
1209 igi_iac_det_balances_pkg.insert_row(
1210 X_rowid => l_rowid ,
1211 X_adjustment_id => l_adjustment_id ,
1212 X_asset_id => l_detail_balance.asset_id ,
1213 X_distribution_id => l_detail_balance.distribution_id ,
1214 X_book_type_code => l_detail_balance.book_type_code ,
1215 X_period_counter => l_detail_balance.period_counter ,
1216 X_adjustment_cost => l_detail_balance.adjustment_cost ,
1217 X_net_book_value => l_detail_balance.net_book_value - l_distribution_amount ,
1218 X_reval_reserve_cost => l_detail_balance.reval_reserve_cost ,
1219 X_reval_reserve_backlog => l_detail_balance.reval_reserve_backlog ,
1220 X_reval_reserve_gen_fund => l_reval_general_fund ,
1221 X_reval_reserve_net => l_reval_reserve_net,
1222 X_operating_acct_cost => l_detail_balance.operating_acct_cost ,
1223 X_operating_acct_backlog => l_detail_balance.operating_acct_backlog ,
1224 X_operating_acct_net => l_detail_balance.operating_acct_net ,
1225 X_operating_acct_ytd => l_detail_balance.operating_acct_ytd ,
1226 X_deprn_period => l_iac_deprn_period_amount ,
1227 X_deprn_ytd => l_deprn_ytd ,
1228 X_deprn_reserve => l_detail_balance.deprn_reserve + l_distribution_amount ,
1229 X_deprn_reserve_backlog => l_detail_balance.deprn_reserve_backlog ,
1230 X_general_fund_per => l_distribution_amount ,
1231 X_general_fund_acc => l_general_fund_acc ,
1232 X_last_reval_date => l_detail_balance.last_reval_date ,
1233 X_current_reval_factor => l_detail_balance.current_reval_factor ,
1234 X_cumulative_reval_factor =>l_detail_balance.cumulative_reval_factor ,
1235 X_active_flag => l_detail_balance.active_flag ) ;
1236
1237 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1238 p_full_path => l_path_name,
1239 p_string => ' distribution YTD:'||to_char(l_deprn_ytd));
1240
1241 END LOOP; /* End of Processing each distribution */
1242
1243 IF (l_last_catchup_prd_rec.period_counter < p_period_counter - 1) THEN
1244 l_iac_deprn_period_amount := 0;
1245 ELSE
1246 l_iac_deprn_period_amount := p_asset_balance.deprn_amount;
1247 END IF;
1248
1249 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1250 p_full_path => l_path_name,
1251 p_string => ' Updating asset balances record for the current period');
1252 igi_iac_asset_balances_pkg.update_row(
1253 X_asset_id => p_asset_balance.asset_id ,
1254 X_book_type_code => p_asset_balance.book_type_code ,
1255 X_period_counter => p_period_counter ,
1256 X_net_book_value => p_asset_balance.net_book_value ,
1257 X_adjusted_cost => p_asset_balance.adjusted_cost ,
1258 X_operating_acct => p_asset_balance.operating_acct ,
1259 X_reval_reserve => p_asset_balance.reval_reserve ,
1260 X_deprn_amount => l_iac_deprn_period_amount ,
1261 X_deprn_reserve => p_asset_balance.deprn_reserve ,
1262 X_backlog_deprn_reserve => p_asset_balance.backlog_deprn_reserve ,
1263 X_general_fund => p_asset_balance.general_fund ,
1264 X_last_reval_date => p_asset_balance.last_reval_date ,
1265 X_current_reval_factor => p_asset_balance.current_reval_factor ,
1266 X_cumulative_reval_factor => p_asset_balance.cumulative_reval_factor ) ;
1267
1268 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1269 p_full_path => l_path_name,
1270 p_string => ' Updating asset balances record for the next period');
1271 igi_iac_asset_balances_pkg.update_row(
1272 X_asset_id => p_asset_balance.asset_id ,
1273 X_book_type_code => p_asset_balance.book_type_code ,
1274 X_period_counter => p_period_counter + 1 ,
1275 X_net_book_value => p_asset_balance.net_book_value ,
1276 X_adjusted_cost => p_asset_balance.adjusted_cost ,
1277 X_operating_acct => p_asset_balance.operating_acct ,
1278 X_reval_reserve => p_asset_balance.reval_reserve ,
1279 X_deprn_amount => l_iac_deprn_period_amount ,
1280 X_deprn_reserve => p_asset_balance.deprn_reserve ,
1281 X_backlog_deprn_reserve => p_asset_balance.backlog_deprn_reserve ,
1282 X_general_fund => p_asset_balance.general_fund ,
1283 X_last_reval_date => p_asset_balance.last_reval_date ,
1284 X_current_reval_factor => p_asset_balance.current_reval_factor ,
1285 X_cumulative_reval_factor => p_asset_balance.cumulative_reval_factor ) ;
1286
1287
1288 FOR l_idx IN l_fa_dist_catchup_tab.FIRST..l_fa_dist_catchup_tab.LAST LOOP
1289
1290 OPEN c_get_iac_fa_deprn_rec(l_transaction.adjustment_id, l_fa_dist_catchup_tab(l_idx).distribution_id);
1291 FETCH c_get_iac_fa_deprn_rec INTO l_iac_fa_deprn_rec;
1292 CLOSE c_get_iac_fa_deprn_rec;
1293
1294 IF (l_last_catchup_prd_rec.period_num > l_last_reval_prd_rec.period_num) THEN
1295 l_deprn_ytd := l_iac_fa_deprn_rec.deprn_ytd + (l_fa_active_dists_YTD * l_fa_dist_catchup_tab(l_idx).prorate_factor);
1296 ELSE
1297 l_deprn_ytd := (l_fa_active_dists_YTD * l_fa_dist_catchup_tab(l_idx).prorate_factor);
1298 END IF;
1299
1300 IF (l_last_catchup_prd_rec.period_counter < p_period_counter - 1) THEN
1301 l_fa_deprn_period_amount := 0;
1302 ELSE
1303 l_fa_deprn_period_amount := p_fa_deprn_expense_cy * l_fa_dist_catchup_tab(l_idx).prorate_factor;
1304 END IF;
1305
1306 IF NOT igi_iac_common_utils.iac_round(l_fa_deprn_period_amount,
1307 l_iac_fa_deprn_rec.book_type_code) THEN
1308 return FALSE;
1309 END IF;
1310
1311 IF NOT igi_iac_common_utils.iac_round(l_deprn_ytd,
1312 l_iac_fa_deprn_rec.book_type_code) THEN
1313 return FALSE;
1314 END IF;
1315
1316 IF NOT igi_iac_common_utils.iac_round(l_fa_dist_catchup_tab(l_idx).amount,
1317 l_iac_fa_deprn_rec.book_type_code) THEN
1318 return FALSE;
1319 END IF;
1320
1321 l_rowid := NULL;
1322 igi_iac_fa_deprn_pkg.insert_row(
1323 x_rowid => l_rowid,
1324 x_book_type_code => l_iac_fa_deprn_rec.book_type_code,
1325 x_asset_id => l_iac_fa_deprn_rec.asset_id,
1326 x_distribution_id => l_iac_fa_deprn_rec.distribution_id,
1327 x_period_counter => p_period_counter,
1328 x_adjustment_id => l_adjustment_id,
1329 x_deprn_period => l_fa_deprn_period_amount,
1330 x_deprn_ytd => l_deprn_ytd ,
1331 x_deprn_reserve => l_iac_fa_deprn_rec.deprn_reserve + l_fa_dist_catchup_tab(l_idx).amount,
1332 x_active_flag => l_iac_fa_deprn_rec.active_flag,
1333 x_mode => 'R');
1334 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1335 p_full_path => l_path_name,
1336 p_string => ' distribution FA YTD:'||to_char(l_deprn_ytd));
1337
1338 END LOOP; /* processing distributions for igi_iac_fa_deprn */
1339
1340
1341 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1342 p_full_path => l_path_name,
1343 p_string => ' Closing the previous transaction created by IAC revaluation');
1344 igi_iac_trans_headers_pkg.update_row(
1345 X_prev_adjustment_id => l_transaction.adjustment_id ,
1346 X_adjustment_id => l_adjustment_id ) ;
1347
1348 END LOOP; /* End of Processing the transaction */
1349 ELSE /* calling function is UPGRADE */
1350
1351 FOR l_upgrade_rec IN c_get_upgrade_rec LOOP
1352 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1353 p_full_path => l_path_name,
1354 p_string => ' Processing for upgrade. Updating the record');
1355
1356 /* Bug 2961656 vgadde 08-Jul-2003 Start(7) */
1357 IF p_fa_deprn_ytd IS NOT NULL THEN
1358 l_deprn_ytd := p_fa_deprn_ytd;
1359 ELSE
1360 l_deprn_ytd := p_fa_deprn_expense_cy * l_last_catchup_prd_rec.period_num;
1361 END IF;
1362 l_fa_deprn_acc := p_fa_deprn_reserve;
1363 /* Bug 2961656 vgadde 08-Jul-2003 End(7) */
1364
1365 IF (l_last_catchup_prd_rec.period_counter < p_period_counter - 1) THEN
1366 l_iac_deprn_period_amount := 0;
1367 l_fa_deprn_period_amount := 0;
1368 ELSE
1369 l_fa_deprn_period_amount := p_fa_deprn_expense_cy;
1370 l_iac_deprn_period_amount := p_asset_balance.deprn_amount;
1371 END IF;
1372
1373 UPDATE igi_imp_iac_interface_py_add
1374 SET net_book_value = p_asset_balance.net_book_value,
1375 adjusted_cost = p_asset_balance.adjusted_cost,
1376 operating_acct = p_asset_balance.operating_acct,
1377 reval_reserve = p_asset_balance.reval_reserve,
1378 deprn_amount = l_iac_deprn_period_amount,
1379 deprn_reserve = p_asset_balance.deprn_reserve,
1380 backlog_deprn_reserve = p_asset_balance.backlog_deprn_reserve,
1381 general_fund = p_asset_balance.general_fund,
1382 hist_deprn_expense = l_fa_deprn_period_amount,
1383 hist_accum_deprn = l_fa_deprn_acc,
1384 hist_ytd = l_deprn_ytd,
1385 hist_nbv = l_upgrade_rec.hist_cost - l_fa_deprn_acc,
1386 general_fund_periodic = p_asset_balance.deprn_amount
1387 WHERE asset_id = l_upgrade_rec.asset_id
1388 AND book_type_code = l_upgrade_rec.book_type_code
1389 AND period_counter = l_upgrade_rec.period_counter;
1390
1391 END LOOP;
1392 END IF; /* End of check for calling function */
1393 END IF; /* End of check for CRUD allowed */
1394 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1395 p_full_path => l_path_name,
1396 p_string => ' End of Processing by Do_Deprn_Catchup');
1397 return TRUE;
1398
1399 EXCEPTION
1400 WHEN OTHERS THEN
1401 igi_iac_debug_pkg.debug_unexpected_msg(p_full_path => l_path_name);
1402 return FALSE;
1403 END Do_Deprn_Catchup;
1404
1405 FUNCTION do_reval_init_struct(
1406 p_period_counter IN NUMBER,
1407 p_reval_control IN OUT NOCOPY igi_iac_types.iac_reval_control_tab,
1408 p_reval_asset_params IN OUT NOCOPY igi_iac_types.iac_reval_asset_params_tab,
1409 p_reval_input_asset IN OUT NOCOPY igi_iac_types.iac_reval_asset_tab,
1410 p_reval_output_asset IN OUT NOCOPY igi_iac_types.iac_reval_asset_tab,
1411 p_reval_output_asset_mvmt IN OUT NOCOPY igi_iac_types.iac_reval_asset_tab,
1412 p_reval_asset_rules IN OUT NOCOPY igi_iac_types.iac_reval_asset_rules_tab,
1413 p_prev_rate_info IN OUT NOCOPY igi_iac_types.iac_reval_rates_tab,
1414 p_curr_rate_info_first IN OUT NOCOPY igi_iac_types.iac_reval_rates_tab,
1415 p_curr_rate_info_next IN OUT NOCOPY igi_iac_types.iac_reval_rates_tab,
1416 p_curr_rate_info IN OUT NOCOPY igi_iac_types.iac_reval_rates_tab,
1417 p_reval_exceptions IN OUT NOCOPY igi_iac_types.iac_reval_exceptions_tab,
1418 p_fa_asset_info IN OUT NOCOPY igi_iac_types.iac_reval_fa_asset_info_tab,
1419 p_fa_deprn_expense_py IN NUMBER,
1420 p_fa_deprn_expense_cy IN NUMBER,
1421 p_asset_last_period IN NUMBER,
1422 p_calling_function IN VARCHAR2
1423 ) return BOOLEAN IS
1424
1425 CURSOR c_fa_asset_info IS
1426 SELECT cost,
1427 adjusted_cost,
1428 original_cost,
1429 salvage_value,
1430 life_in_months,
1431 rate_adjustment_factor,
1432 period_counter_fully_reserved,
1433 adjusted_recoverable_cost,
1434 recoverable_cost,
1435 date_placed_in_service,
1436 0 deprn_periods_elapsed,
1437 0 deprn_periods_current_year,
1438 0 deprn_periods_prior_year,
1439 last_period_counter,
1440 gl_posting_allowed_flag,
1441 0 ytd_deprn,
1442 0 deprn_reserve,
1443 0 pys_deprn_reserve,
1444 0 deprn_amount,
1445 deprn_start_date,
1446 depreciate_flag
1447 FROM fa_books b, fa_book_controls c
1448 WHERE b.book_type_code = p_reval_asset_params(1).book_type_code
1449 AND c.book_type_code = p_reval_asset_params(1).book_type_code
1450 AND b.asset_id = p_reval_asset_params(1).asset_id
1451 AND b.transaction_header_id_out IS NULL;
1452
1453
1454 CURSOR c_get_user_deprn IS
1455 SELECT period_counter,deprn_reserve,YTD_deprn
1456 FROM fa_deprn_summary
1457 WHERE book_type_code = p_reval_asset_params(1).book_type_code
1458 AND asset_id = p_reval_asset_params(1).asset_id
1459 AND deprn_source_code = 'BOOKS';
1460
1461
1462 l_user_id NUMBER ;
1463 l_login_id NUMBER ;
1464 l_prev_price_index NUMBER;
1465 l_dpis_price_index NUMBER;
1466 l_curr_price_index NUMBER;
1467 l_curr_period igi_iac_types.prd_rec;
1468 l_dpis_period igi_iac_types.prd_rec;
1469 /* Bug 2961656 vgadde 08-jul-2003 Start(8) */
1470 l_open_period igi_iac_types.prd_rec;
1471 l_last_catchup_period igi_iac_types.prd_rec;
1472 l_last_deprn_period igi_iac_types.prd_rec;
1473 l_fa_asset_info igi_iac_types.fa_hist_asset_info;
1474 l_reval_factor NUMBER;
1475 l_last_deprn_date DATE;
1476 /* Bug 2961656 vgadde 08-jul-2003 End(8) */
1477 l_path_name VARCHAR2(150);
1478 l_booksrow_period_rec igi_iac_types.prd_rec;
1479 l_deprn_calendar fa_calendar_types.calendar_type%TYPE;
1480 l_periods_in_year fa_calendar_types.number_per_fiscal_year%TYPE;
1481 l_booksrow_period NUMBER;
1482 l_booksrow_reserve NUMBER;
1483 l_booksrow_YTD NUMBER;
1484 l_fa_deprn_expense_py NUMBER;
1485 l_fa_deprn_expense_cy NUMBER;
1486
1487 BEGIN
1488 IF FND_PROFILE.VALUE('IGI_DEBUG_OPTION') = 'Y' THEN
1489 g_debug := TRUE;
1490 END IF;
1491 l_path_name := g_path||'do_reval_init_struct';
1492 l_user_id := fnd_global.user_id;
1493 l_login_id := fnd_global.login_id;
1494
1495 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1496 p_full_path => l_path_name,
1497 p_string => '-----------Start of processing by do_reval_init_struct');
1498 OPEN c_fa_asset_info;
1499 FETCH c_fa_asset_info INTO l_fa_asset_info;
1500 CLOSE c_fa_asset_info;
1501
1502 IF NOT igi_iac_common_utils.get_period_info_for_date(
1503 p_reval_asset_params(1).book_type_code,
1504 l_fa_asset_info.date_placed_in_service,
1505 l_dpis_period) THEN
1506 return FALSE;
1507 END IF;
1508 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1509 p_full_path => l_path_name,
1510 p_string => ' DPIS Period Info');
1511 Debug_Period(l_dpis_period);
1512
1513 IF NOT igi_iac_common_utils.get_price_index_value(
1514 p_reval_asset_params(1).book_type_code,
1515 p_reval_asset_params(1).asset_id,
1516 l_dpis_period.period_name,
1517 l_dpis_price_index) THEN
1518 return FALSE;
1519 END IF;
1520 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1521 p_full_path => l_path_name,
1522 p_string => ' Price Index for DPIS :'||to_char(l_dpis_price_index));
1523 l_prev_price_index := l_dpis_price_index;
1524
1525 /* Bug 2961656 vgadde 08-jul-2003 Start(9) */
1526 /*IF NOT get_FA_Deprn_Expense(p_reval_asset_params(1).asset_id,
1527 p_reval_asset_params(1).book_type_code,
1528 p_period_counter,
1529 p_calling_function,
1530 l_fa_deprn_amount,
1531 l_last_asset_period) THEN
1532 return FALSE;
1533 END IF;*/
1534 /* Bug 2961656 vgadde 08-jul-2003 End(9) */
1535
1536 ---Get the details for supplied depreciation and YTD --------
1537 IF (p_calling_function = 'ADDITION' OR p_calling_function = 'RECLASS') THEN
1538
1539 OPEN c_get_user_deprn;
1540 FETCH c_get_user_deprn INTO l_booksrow_period, l_booksrow_reserve,l_booksrow_ytd;
1541 CLOSE c_get_user_deprn;
1542
1543 /* OPEN c_get_deprn_calendar;
1544 FETCH c_get_deprn_calendar INTO l_deprn_calendar;
1545 CLOSE c_get_deprn_calendar;
1546
1547 OPEN c_get_periods_in_year(l_deprn_calendar);
1548 FETCH c_get_periods_in_year INTO l_periods_in_year;
1549 CLOSE c_get_periods_in_year;*/
1550
1551 END IF;
1552 ---Get the details for supplied depreciation and YTD --------
1553
1554
1555 FOR idx IN p_reval_control.FIRST..p_reval_control.LAST LOOP
1556
1557 IF NOT (igi_iac_common_utils.get_period_info_for_counter(
1558 p_reval_asset_params(idx).book_type_code,
1559 p_reval_asset_params(idx).period_counter,
1560 l_curr_period)) THEN
1561 return FALSE;
1562 END IF;
1563
1564 IF NOT (igi_iac_common_utils.get_price_index_value(
1565 p_reval_asset_params(idx).book_type_code,
1566 p_reval_asset_params(idx).asset_id,
1567 l_curr_period.period_name,
1568 l_curr_price_index)) THEN
1569 return FALSE;
1570 END IF;
1571 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1572 p_full_path => l_path_name,
1573 p_string => ' Price Index for current revaluation catchup period :'||to_char(l_curr_price_index));
1574
1575 l_reval_factor := l_curr_price_index / l_prev_price_index ;
1576 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1577 p_full_path => l_path_name,
1578 p_string => ' Current Reval Factor : '||to_char(l_reval_factor));
1579 IF (idx = p_reval_control.FIRST) THEN
1580 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1581 p_full_path => l_path_name,
1582 p_string => ' Initialization for First revaluation ');
1583 p_reval_control(idx).first_time_flag := TRUE;
1584
1585 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1586 p_full_path => l_path_name,
1587 p_string => ' Initializing reval input asset');
1588 p_reval_input_asset(idx).asset_id := p_reval_asset_params(idx).asset_id;
1589 p_reval_input_asset(idx).book_type_code := p_reval_asset_params(idx).book_type_code;
1590 p_reval_input_asset(idx).period_counter := p_reval_asset_params(idx).period_counter;
1591 p_reval_input_asset(idx).net_book_value := 0;
1592 p_reval_input_asset(idx).adjusted_cost := 0;
1593 p_reval_input_asset(idx).operating_acct := 0;
1594 p_reval_input_asset(idx).reval_reserve := 0;
1595 p_reval_input_asset(idx).deprn_amount := 0;
1596 p_reval_input_asset(idx).deprn_reserve := 0;
1597 p_reval_input_asset(idx).backlog_deprn_reserve := 0;
1598 p_reval_input_asset(idx).general_fund := 0;
1599 p_reval_input_asset(idx).last_reval_date := sysdate;
1600 p_reval_input_asset(idx).current_reval_factor := l_reval_factor;
1601 p_reval_input_asset(idx).cumulative_reval_factor := l_reval_factor;
1602 p_reval_input_asset(idx).created_by := l_user_id;
1603 p_reval_input_asset(idx).creation_date := sysdate;
1604 p_reval_input_asset(idx).last_update_login := l_login_id;
1605 p_reval_input_asset(idx).last_update_date := sysdate;
1606 p_reval_input_asset(idx).last_updated_by := l_user_id;
1607
1608 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1609 p_full_path => l_path_name,
1610 p_string => ' Initializing previous rate info');
1611 p_prev_rate_info(idx).asset_id := p_reval_asset_params(idx).asset_id;
1612 p_prev_rate_info(idx).book_type_code := p_reval_asset_params(idx).book_type_code;
1613 p_prev_rate_info(idx).period_counter := p_reval_asset_params(idx).period_counter;
1614 p_prev_rate_info(idx).revaluation_id := 0;
1615 p_prev_rate_info(idx).current_reval_factor := 1;
1616 p_prev_rate_info(idx).cumulative_reval_factor := 1;
1617 p_prev_rate_info(idx).processed_flag := 'Y';
1618 p_prev_rate_info(idx).latest_record := 'Y';
1619 p_prev_rate_info(idx).created_by := l_user_id;
1620 p_prev_rate_info(idx).creation_date := sysdate;
1621 p_prev_rate_info(idx).last_update_login := l_login_id;
1622 p_prev_rate_info(idx).last_update_date := sysdate;
1623 p_prev_rate_info(idx).last_updated_by := l_user_id;
1624 p_prev_rate_info(idx).adjustment_id := 0;
1625
1626 p_curr_rate_info(idx).cumulative_reval_factor := l_reval_factor;
1627
1628 ELSE
1629
1630 p_reval_control(idx).first_time_flag := FALSE;
1631 p_prev_rate_info(idx) := p_curr_rate_info(idx-1);
1632 p_curr_rate_info(idx).current_reval_factor := l_reval_factor;
1633 p_curr_rate_info(idx).cumulative_reval_factor :=
1634 l_reval_factor * p_curr_rate_info(idx-1).cumulative_reval_factor;
1635 p_reval_input_asset(idx).current_reval_factor := l_reval_factor;
1636 p_reval_input_asset(idx).cumulative_reval_factor :=
1637 p_curr_rate_info(idx).cumulative_reval_factor;
1638 END IF;
1639
1640 IF (idx = p_reval_control.LAST) THEN
1641 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1642 p_full_path => l_path_name,
1643 p_string => ' Last revaluation - setting CRUD flags to TRUE');
1644 p_reval_control(idx).create_acctg_entries := TRUE;
1645 p_reval_control(idx).crud_allowed := TRUE;
1646 p_reval_control(idx).modify_balances := TRUE;
1647 ELSE
1648 p_reval_control(idx).create_acctg_entries := FALSE;
1649 p_reval_control(idx).crud_allowed := FALSE;
1650 p_reval_control(idx).modify_balances := FALSE;
1651 END IF;
1652
1653 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1654 p_full_path => l_path_name,
1655 p_string => ' Initializing reval control structure');
1656 p_reval_control(idx).transaction_type_code := p_calling_function;
1657 p_reval_control(idx).transaction_sub_type := 'REVALUATION';
1658 p_reval_control(idx).adjustment_status := 'COMPLETE';
1659 p_reval_control(idx).validate_business_rules := FALSE;
1660 p_reval_control(idx).message_level := 3;
1661 p_reval_control(idx).commit_flag := FALSE;
1662 p_reval_control(idx).print_report := FALSE;
1663 p_reval_control(idx).mixed_scenario := FALSE;
1664 p_reval_control(idx).show_exceptions := FALSE;
1665
1666 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1667 p_full_path => l_path_name,
1668 p_string => ' Initializing reval asset params');
1669 p_reval_asset_params(idx).revaluation_rate := l_reval_factor;
1670 p_reval_asset_params(idx).revaluation_date := sysdate;
1671 p_reval_asset_params(idx).first_set_adjustment_id := 0;
1672 p_reval_asset_params(idx).second_set_adjustment_id := 0;
1673
1674 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1675 p_full_path => l_path_name,
1676 p_string => ' Initializing reval out NOCOPY put asset');
1677 p_reval_output_asset(idx) := p_reval_input_asset(idx);
1678
1679 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1680 p_full_path => l_path_name,
1681 p_string => ' Initializing reval output asset mvmt ');
1682 p_reval_output_asset_mvmt(idx) := p_reval_input_asset(idx);
1683 p_reval_output_asset_mvmt(idx).net_book_value := 0;
1684 p_reval_output_asset_mvmt(idx).adjusted_cost := 0;
1685 p_reval_output_asset_mvmt(idx).operating_acct := 0;
1686 p_reval_output_asset_mvmt(idx).reval_reserve := 0;
1687 p_reval_output_asset_mvmt(idx).deprn_amount := 0;
1688 p_reval_output_asset_mvmt(idx).deprn_reserve := 0;
1689 p_reval_output_asset_mvmt(idx).backlog_deprn_reserve := 0;
1690 p_reval_output_asset_mvmt(idx).general_fund := 0;
1691
1692 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1693 p_full_path => l_path_name,
1694 p_string => ' Initializing current rate info');
1695 p_curr_rate_info(idx).asset_id := p_reval_asset_params(idx).asset_id;
1696 p_curr_rate_info(idx).book_type_code := p_reval_asset_params(idx).book_type_code;
1697 p_curr_rate_info(idx).period_counter := p_reval_asset_params(idx).period_counter;
1698 p_curr_rate_info(idx).revaluation_id := 0;
1699 p_curr_rate_info(idx).reval_type := p_reval_asset_rules(idx).revaluation_type;
1700 p_curr_rate_info(idx).current_reval_factor := l_reval_factor;
1701 p_curr_rate_info(idx).processed_flag := 'Y';
1702 p_curr_rate_info(idx).latest_record := 'Y';
1703 p_curr_rate_info(idx).created_by := l_user_id;
1704 p_curr_rate_info(idx).creation_date := sysdate;
1705 p_curr_rate_info(idx).last_update_login := l_login_id;
1706 p_curr_rate_info(idx).last_update_date := sysdate;
1707 p_curr_rate_info(idx).last_updated_by := l_user_id;
1708 p_curr_rate_info(idx).adjustment_id := 0;
1709
1710 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1711 p_full_path => l_path_name,
1712 p_string => ' Initializing current rate info first and current rate info next');
1713 p_curr_rate_info_first(idx) := p_curr_rate_info(idx);
1714 p_curr_rate_info_next(idx) := p_curr_rate_info(idx);
1715
1716 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1717 p_full_path => l_path_name,
1718 p_string => ' Initializing reval asset rules');
1719 p_reval_asset_rules(idx).book_type_code := p_reval_asset_params(idx).book_type_code;
1720 p_reval_asset_rules(idx).asset_id := p_reval_asset_params(idx).asset_id;
1721 p_reval_asset_rules(idx).revaluation_factor := l_reval_factor;
1722 p_reval_asset_rules(idx).category_id := p_reval_asset_params(idx).category_id;
1723 p_reval_asset_rules(idx).revaluation_id := 0;
1724
1725 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1726 p_full_path => l_path_name,
1727 p_string => ' Initializing fa asset info');
1728 p_fa_asset_info(idx) := l_fa_asset_info;
1729
1730 /* Bug 2961656 vgadde 08-jul-2003 Start(10) */
1731 IF (p_calling_function = 'ADDITION' OR p_calling_function = 'RECLASS') THEN
1732
1733 ---Get the details for supplied depreciation and YTD --------
1734 IF ((p_calling_function = 'ADDITION') AND (NVL(l_booksrow_YTD,0) <> 0) AND (p_asset_last_period IS NuLL)) THEN -- supplied YYD
1735
1736 IF NOT (igi_iac_common_utils.get_period_info_for_counter(
1737 p_reval_asset_params(idx).book_type_code,
1738 p_period_counter-1,
1739 l_open_period)) THEN
1740 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
1741 p_full_path => l_path_name,
1742 p_string => ' Error in getting open period information');
1743 return FALSE;
1744 END IF;
1745
1746 IF (l_open_period.fiscal_year <> l_curr_period.fiscal_year) THEN -- If not addition year
1747
1748 p_fa_asset_info(idx).deprn_amount := p_fa_deprn_expense_py;
1749 p_fa_asset_info(idx).deprn_periods_elapsed :=l_curr_period.period_counter - l_dpis_period.period_counter + 1;
1750 --p_fa_asset_info(idx).deprn_amount := (l_booksrow_reserve-l_booksrow_YTD)/p_fa_asset_info(idx).deprn_periods_elapsed;
1751 IF (l_dpis_period.fiscal_year = l_curr_period.fiscal_year AND l_dpis_period.period_num <= l_curr_period.period_num) THEN
1752 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num - l_dpis_period.period_num + 1;
1753 ELSE
1754 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num ;
1755 END IF;
1756 p_fa_asset_info(idx).deprn_periods_prior_year :=
1757 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1758 p_fa_asset_info(idx).deprn_reserve :=
1759 p_fa_asset_info(idx).deprn_periods_elapsed * p_fa_deprn_expense_py;
1760 p_fa_asset_info(idx).ytd_deprn :=
1761 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_py;
1762 p_fa_asset_info(idx).pys_deprn_reserve :=
1763 p_fa_asset_info(idx).deprn_reserve - p_fa_asset_info(idx).ytd_deprn;
1764 ELSE /* Revaluation in the latest fiscal year */
1765 p_fa_asset_info(idx).deprn_periods_elapsed :=
1766 l_curr_period.period_counter - l_dpis_period.period_counter + 1;
1767
1768 IF (l_dpis_period.fiscal_year = l_curr_period.fiscal_year AND l_dpis_period.period_num <= l_curr_period.period_num) THEN
1769 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num - l_dpis_period.period_num + 1;
1770 ELSE
1771 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num ;
1772 END IF;
1773 p_fa_asset_info(idx).deprn_periods_prior_year :=
1774 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1775 p_fa_asset_info(idx).pys_deprn_reserve := p_fa_asset_info(idx).deprn_periods_prior_year*p_fa_deprn_expense_py;
1776 p_fa_asset_info(idx).ytd_deprn := p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_cy;
1777 p_fa_asset_info(idx).deprn_reserve :=p_fa_asset_info(idx).pys_deprn_reserve+p_fa_asset_info(idx).ytd_deprn;
1778 p_fa_asset_info(idx).deprn_amount :=p_fa_deprn_expense_cy;
1779
1780 END IF;
1781 ELSE -- If no supplied YTD
1782
1783 IF (nvl(p_asset_last_period,l_curr_period.period_counter+1) >= l_curr_period.period_counter) THEN
1784 p_fa_asset_info(idx).deprn_periods_elapsed :=
1785 l_curr_period.period_counter - l_dpis_period.period_counter + 1 ;
1786 ELSE
1787 p_fa_asset_info(idx).deprn_periods_elapsed :=
1788 p_asset_last_period - l_dpis_period.period_counter + 1;
1789 END IF;
1790 p_fa_asset_info(idx).deprn_reserve :=
1791 p_fa_asset_info(idx).deprn_periods_elapsed * p_fa_deprn_expense_py;
1792
1793 IF NOT igi_iac_ytd_engine.Calculate_YTD
1794 ( p_reval_asset_params(1).book_type_code,
1795 p_reval_asset_params(1).asset_id,
1796 p_fa_asset_info(idx),
1797 l_dpis_period.period_counter,
1798 l_curr_period.period_counter,
1799 p_calling_function) THEN
1800 RETURN FALSE;
1801 END IF;
1802
1803 END IF; -- supplied YTd
1804
1805 ELSIF p_calling_function = 'UPGRADE' THEN
1806
1807 IF (p_fa_deprn_expense_py = p_fa_deprn_expense_cy) THEN
1808 IF (nvl(p_asset_last_period,l_curr_period.period_counter+1) >= l_curr_period.period_counter) THEN
1809 p_fa_asset_info(idx).deprn_periods_elapsed :=
1810 l_curr_period.period_counter - l_dpis_period.period_counter + 1 ;
1811 ELSE
1812 p_fa_asset_info(idx).deprn_periods_elapsed :=
1813 p_asset_last_period - l_dpis_period.period_counter + 1;
1814 END IF;
1815 p_fa_asset_info(idx).deprn_reserve :=
1816 p_fa_asset_info(idx).deprn_periods_elapsed * p_fa_deprn_expense_py;
1817
1818 IF NOT igi_iac_ytd_engine.Calculate_YTD
1819 ( p_reval_asset_params(1).book_type_code,
1820 p_reval_asset_params(1).asset_id,
1821 p_fa_asset_info(idx),
1822 l_dpis_period.period_counter,
1823 l_curr_period.period_counter,
1824 p_calling_function) THEN
1825 RETURN FALSE;
1826 END IF;
1827 ELSE
1828
1829 IF NOT (igi_iac_common_utils.get_period_info_for_counter(
1830 p_reval_asset_params(idx).book_type_code,
1831 p_period_counter,
1832 l_open_period)) THEN
1833 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
1834 p_full_path => l_path_name,
1835 p_string => ' Error in getting open period information');
1836 return FALSE;
1837 END IF;
1838
1839 IF p_asset_last_period IS NOT NULL THEN
1840 IF NOT igi_iac_common_utils.get_period_info_for_counter(
1841 p_reval_asset_params(idx).book_type_code,
1842 p_asset_last_period,
1843 l_last_deprn_period) THEN
1844 igi_iac_debug_pkg.debug_other_string(p_level => g_error_level,
1845 p_full_path => l_path_name,
1846 p_string => ' Error in getting last depreciation period information');
1847 return FALSE;
1848 END IF;
1849 END IF;
1850
1851 IF (l_open_period.fiscal_year <> l_curr_period.fiscal_year) THEN
1852 IF (nvl(p_asset_last_period,l_curr_period.period_counter+1) >= l_curr_period.period_counter) THEN
1853 p_fa_asset_info(idx).deprn_amount := p_fa_deprn_expense_py;
1854 p_fa_asset_info(idx).deprn_periods_elapsed :=
1855 l_curr_period.period_counter - l_dpis_period.period_counter + 1;
1856 IF (l_dpis_period.fiscal_year = l_curr_period.fiscal_year AND l_dpis_period.period_num <= l_curr_period.period_num) THEN
1857 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num - l_dpis_period.period_num + 1;
1858 ELSE
1859 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num ;
1860 END IF;
1861 p_fa_asset_info(idx).deprn_periods_prior_year :=
1862 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1863 p_fa_asset_info(idx).deprn_reserve :=
1864 p_fa_asset_info(idx).deprn_periods_elapsed * p_fa_asset_info(idx).deprn_amount;
1865 p_fa_asset_info(idx).ytd_deprn :=
1866 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_asset_info(idx).deprn_amount;
1867 p_fa_asset_info(idx).pys_deprn_reserve :=
1868 p_fa_asset_info(idx).deprn_reserve - p_fa_asset_info(idx).ytd_deprn;
1869 ELSE
1870 IF l_last_deprn_period.fiscal_year = l_curr_period.fiscal_year THEN
1871 p_fa_asset_info(idx).deprn_amount := 0;
1872 p_fa_asset_info(idx).deprn_periods_elapsed :=
1873 l_last_deprn_period.period_counter - l_dpis_period.period_counter + 1;
1874 IF (l_dpis_period.fiscal_year = l_last_deprn_period.fiscal_year AND l_dpis_period.period_num <= l_last_deprn_period.period_num) THEN
1875 p_fa_asset_info(idx).deprn_periods_current_year := l_last_deprn_period.period_num - l_dpis_period.period_num + 1;
1876 ELSE
1877 p_fa_asset_info(idx).deprn_periods_current_year := l_last_deprn_period.period_num ;
1878 END IF;
1879 p_fa_asset_info(idx).deprn_periods_prior_year :=
1880 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1881 p_fa_asset_info(idx).deprn_reserve :=
1882 p_fa_asset_info(idx).deprn_periods_elapsed * p_fa_deprn_expense_py;
1883 p_fa_asset_info(idx).ytd_deprn :=
1884 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_py;
1885 p_fa_asset_info(idx).pys_deprn_reserve :=
1886 p_fa_asset_info(idx).deprn_reserve - p_fa_asset_info(idx).ytd_deprn;
1887 ELSE /* fully reserved in a year prior to current revaluation */
1888 p_fa_asset_info(idx).deprn_amount := 0;
1889 p_fa_asset_info(idx).deprn_periods_elapsed :=
1890 l_last_deprn_period.period_counter - l_dpis_period.period_counter + 1;
1891 p_fa_asset_info(idx).deprn_periods_current_year := 0;
1892 p_fa_asset_info(idx).deprn_periods_prior_year :=
1893 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1894 p_fa_asset_info(idx).deprn_reserve :=
1895 p_fa_asset_info(idx).deprn_periods_elapsed * p_fa_deprn_expense_py;
1896 p_fa_asset_info(idx).ytd_deprn :=
1897 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_py;
1898 p_fa_asset_info(idx).pys_deprn_reserve :=
1899 p_fa_asset_info(idx).deprn_reserve - p_fa_asset_info(idx).ytd_deprn;
1900 END IF;
1901 END IF;
1902 ELSE /* Revaluation in the latest fiscal year */
1903 IF (nvl(p_asset_last_period,l_curr_period.period_counter+1) >= l_curr_period.period_counter) THEN
1904 p_fa_asset_info(idx).deprn_amount := p_fa_deprn_expense_cy;
1905 p_fa_asset_info(idx).deprn_periods_elapsed :=
1906 l_curr_period.period_counter - l_dpis_period.period_counter + 1;
1907 IF (l_dpis_period.fiscal_year = l_curr_period.fiscal_year AND l_dpis_period.period_num <= l_curr_period.period_num) THEN
1908 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num - l_dpis_period.period_num + 1;
1909 ELSE
1910 p_fa_asset_info(idx).deprn_periods_current_year := l_curr_period.period_num ;
1911 END IF;
1912 p_fa_asset_info(idx).deprn_periods_prior_year :=
1913 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1914 p_fa_asset_info(idx).deprn_reserve :=
1915 p_fa_asset_info(idx).deprn_periods_prior_year * p_fa_deprn_expense_py +
1916 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_cy;
1917 p_fa_asset_info(idx).ytd_deprn :=
1918 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_cy;
1919 p_fa_asset_info(idx).pys_deprn_reserve :=
1920 p_fa_asset_info(idx).deprn_reserve - p_fa_asset_info(idx).ytd_deprn;
1921 ELSE
1922 IF l_last_deprn_period.fiscal_year = l_curr_period.fiscal_year THEN
1923 p_fa_asset_info(idx).deprn_amount := 0;
1924 p_fa_asset_info(idx).deprn_periods_elapsed :=
1925 l_last_deprn_period.period_counter - l_dpis_period.period_counter + 1;
1926 IF (l_dpis_period.fiscal_year = l_last_deprn_period.fiscal_year AND l_dpis_period.period_num <= l_last_deprn_period.period_num) THEN
1927 p_fa_asset_info(idx).deprn_periods_current_year := l_last_deprn_period.period_num - l_dpis_period.period_num + 1;
1928 ELSE
1929 p_fa_asset_info(idx).deprn_periods_current_year := l_last_deprn_period.period_num ;
1930 END IF;
1931 p_fa_asset_info(idx).deprn_periods_prior_year :=
1932 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1933 p_fa_asset_info(idx).deprn_reserve :=
1934 p_fa_asset_info(idx).deprn_periods_prior_year * p_fa_deprn_expense_py +
1935 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_cy;
1936 p_fa_asset_info(idx).ytd_deprn :=
1937 p_fa_asset_info(idx).deprn_periods_current_year * p_fa_deprn_expense_cy;
1938 p_fa_asset_info(idx).pys_deprn_reserve :=
1939 p_fa_asset_info(idx).deprn_reserve - p_fa_asset_info(idx).ytd_deprn;
1940 ELSE /* fully reserved in a year prior to current revaluation */
1941 p_fa_asset_info(idx).deprn_amount := 0;
1942 p_fa_asset_info(idx).deprn_periods_elapsed :=
1943 l_last_deprn_period.period_counter - l_dpis_period.period_counter + 1;
1944 p_fa_asset_info(idx).deprn_periods_current_year := 0;
1945 p_fa_asset_info(idx).deprn_periods_prior_year :=
1946 p_fa_asset_info(idx).deprn_periods_elapsed - p_fa_asset_info(idx).deprn_periods_current_year;
1947 p_fa_asset_info(idx).deprn_reserve :=
1948 p_fa_asset_info(idx).deprn_periods_prior_year * p_fa_deprn_expense_py;
1949 p_fa_asset_info(idx).ytd_deprn := 0;
1950 p_fa_asset_info(idx).pys_deprn_reserve := p_fa_asset_info(idx).deprn_reserve;
1951 END IF;
1952 END IF;
1953 END IF;
1954 END IF;
1955 END IF;
1956 /* Bug 2961656 vgadde 08-jul-2003 End(10) */
1957 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1958 p_full_path => l_path_name,
1959 p_string => ' Deprn amount :'||to_char(p_fa_asset_info(idx).deprn_amount));
1960 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1961 p_full_path => l_path_name,
1962 p_string => ' Deprn periods elapsed :'||to_char(p_fa_asset_info(idx).deprn_periods_elapsed));
1963 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1964 p_full_path => l_path_name,
1965 p_string => ' Deprn periods current year :'||to_char(p_fa_asset_info(idx).deprn_periods_current_year));
1966 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1967 p_full_path => l_path_name,
1968 p_string => ' Deprn periods prior year :'||to_char(p_fa_asset_info(idx).deprn_periods_prior_year));
1969 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1970 p_full_path => l_path_name,
1971 p_string => ' Deprn YTD :'||to_char(p_fa_asset_info(idx).ytd_deprn));
1972 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1973 p_full_path => l_path_name,
1974 p_string => ' Prior years deprn reserve :'||to_char(p_fa_asset_info(idx).pys_deprn_reserve));
1975 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1976 p_full_path => l_path_name,
1977 p_string => ' Deprn Reserve :'||to_char(p_fa_asset_info(idx).deprn_reserve));
1978 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1979 p_full_path => l_path_name,
1980 p_string => ' Initializing reval exceptions');
1981 p_reval_exceptions(idx).asset_id := p_reval_asset_params(idx).asset_id;
1982 p_reval_exceptions(idx).book_type_code := p_reval_asset_params(idx).book_type_code;
1983
1984 l_prev_price_index := l_curr_price_index;
1985
1986 END LOOP;
1987
1988 igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
1989 p_full_path => l_path_name,
1990 p_string => ' End of initialization for revaluation in catchup pkg');
1991 return TRUE;
1992
1993 EXCEPTION
1994 WHEN OTHERS THEN
1995 igi_iac_debug_pkg.debug_unexpected_msg(p_full_path => l_path_name);
1996 return FALSE;
1997 END do_reval_init_struct;
1998
1999 BEGIN
2000
2001 g_debug := FALSE;
2002
2003 --===========================FND_LOG.START=====================================
2004
2005 g_state_level := FND_LOG.LEVEL_STATEMENT;
2006 g_proc_level := FND_LOG.LEVEL_PROCEDURE;
2007 g_event_level := FND_LOG.LEVEL_EVENT;
2008 g_excep_level := FND_LOG.LEVEL_EXCEPTION;
2009 g_error_level := FND_LOG.LEVEL_ERROR;
2010 g_unexp_level := FND_LOG.LEVEL_UNEXPECTED;
2011 g_path := 'IGI.PLSQL.igiiactb.igi_iac_catchup_pkg.';
2012
2013 --===========================FND_LOG.END=====================================
2014
2015
2016
2017 END igi_iac_catchup_pkg;