[Home] [Help]
PACKAGE BODY: APPS.IGI_IAC_REVAL_INIT_STRUCT
Source
1 PACKAGE BODY IGI_IAC_REVAL_INIT_STRUCT AS
2 -- $Header: igiiarsb.pls 120.10.12000000.1 2007/08/01 16:17:59 npandya ship $
3
4 --===========================FND_LOG.START=====================================
5
6 g_state_level NUMBER;
7 g_proc_level NUMBER;
8 g_event_level NUMBER;
9 g_excep_level NUMBER;
10 g_error_level NUMBER;
11 g_unexp_level NUMBER;
12 g_path VARCHAR2(100);
13
14 --===========================FND_LOG.END=======================================
15
16 l_rec igi_iac_revaluation_rates%rowtype; -- create this for quicker access via sql navigator
17
18 g_who_user_id number;
19 g_who_login_id number;
20 g_who_date date;
21
22 /*
23 procedure log ( p_mesg in varchar2 ) is
24 begin
25 IGI_IAC_REVAL_UTILITIES.log ( p_calling_code => 'INIT_STRUCT'
26 , p_mesg => p_mesg );
27 end;
28 */
29 function initialize ( fp_reval_control in out NOCOPY IGI_IAC_TYPES.iac_reval_control_type )
30 return boolean is
31 l_Reval_control IGI_IAC_TYPES.iac_reval_control_type;
32 l_path varchar2(100);
33 begin
34 l_path := g_path||'initialize1';
35 l_reval_control.revaluation_mode := 'P'; --Preview
36 l_reval_control.transaction_type_code := 'REVALUATION';
37 l_reval_control.transaction_sub_type := 'OCCASSIONAL';
38 l_reval_control.adjustment_status := 'PREVIEW';
39 fp_Reval_control := l_reval_control;
40 return true;
41 exception when others then
42 fp_Reval_control := l_reval_control;
43 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
44 return false;
45 end;
46
47 function initialize ( fp_reval_asset_params in out NOCOPY IGI_IAC_TYPES.iac_reval_asset_params )
48 return boolean is
49 l_Reval_asset_params IGI_IAC_TYPES.iac_reval_asset_params;
50 l_path varchar2(100);
51 begin
52 l_path := g_path||'initialize2';
53 fp_reval_asset_params := l_reval_asset_params;
54 return true;
55 exception when others then
56 fp_reval_asset_params := l_reval_asset_params;
57 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
58 return false;
59 end;
60
61 function initialize ( fp_reval_input_asset in out NOCOPY IGI_IAC_TYPES.iac_Reval_input_asset )
62 return boolean is
63 fp_reval_input_asset_old IGI_IAC_TYPES.iac_Reval_input_asset;
64 l_path varchar2(100);
65 begin
66 l_path := g_path||'initialize3';
67 fp_reval_input_asset_old := fp_reval_input_asset;
68
69 fp_reval_input_asset.asset_id := 0;
70 fp_reval_input_asset.book_type_code := null;
71 fp_reval_input_asset.period_counter := 0;
72 fp_reval_input_asset.net_book_value := 0;
73 fp_reval_input_asset.adjusted_cost := 0;
74 fp_reval_input_asset.operating_acct := 0;
75 fp_reval_input_asset.reval_reserve := 0;
76 fp_reval_input_asset.deprn_amount := 0;
77 fp_reval_input_asset.deprn_reserve := 0;
78 fp_reval_input_asset.backlog_deprn_reserve := 0;
79 fp_reval_input_asset.general_fund := 0;
80 fp_reval_input_asset.last_reval_date := null;
81 fp_reval_input_asset.current_reval_factor := 0;
82 fp_reval_input_asset.cumulative_reval_factor := 0;
83 fp_reval_input_asset.created_by := 0;
84 fp_reval_input_asset.creation_date := null;
85 fp_reval_input_asset.last_update_login := 0;
86 fp_reval_input_asset.last_update_date := null;
87 fp_reval_input_asset.last_updated_by := 0;
88 return true;
89 exception when others then
90 fp_reval_input_asset := fp_reval_input_asset_old;
91 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
92 return false;
93 end;
94
95 function initialize ( fp_reval_asset_rules in out NOCOPY IGI_IAC_TYPES.iac_Reval_asset_rules )
96 return boolean is
97 fp_reval_asset_rules_old IGI_IAC_TYPES.iac_Reval_asset_rules;
98 l_path varchar2(100);
99 begin
100 l_path := g_path||'initialize4';
101 fp_reval_asset_rules_old := fp_reval_asset_rules;
102
103 fp_reval_asset_rules.revaluation_id := 0;
104 fp_reval_asset_rules.book_type_code := null;
105 fp_reval_asset_rules.category_id := 0;
106 fp_reval_asset_rules.asset_id := 0;
107 fp_reval_asset_rules.revaluation_factor := 0;
108 fp_reval_asset_rules.revaluation_type := null;
109 fp_reval_asset_rules.new_cost := 0;
110 fp_reval_asset_rules.current_cost := 0;
111 fp_reval_asset_rules.selected_for_reval_flag := null;
112 fp_reval_asset_rules.selected_for_calc_flag := null;
113 fp_reval_asset_rules.created_by := 0;
114 fp_reval_asset_rules.creation_date := null;
115 fp_reval_asset_rules.last_update_login := 0;
116 fp_reval_asset_rules.last_update_date := null;
117 fp_reval_asset_rules.last_updated_by := 0;
118 fp_reval_asset_rules.allow_prof_update := null;
119 return true;
120 exception when others then
121 fp_reval_asset_rules := fp_reval_asset_rules_old;
122 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
123 return false;
124 end;
125
126 function initialize ( fp_asset_info in out NOCOPY IGI_IAC_TYPES.fa_hist_asset_info )
127 return boolean is
128 l_asset_info IGI_IAC_TYPES.fa_hist_asset_info;
129 l_path varchar2(100);
130 begin
131 l_path := g_path||'initialize5';
132 fp_Asset_info := l_asset_info;
133 return true;
134 exception when others then
135 fp_Asset_info := l_asset_info;
136 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
137 return false;
138 end;
139
140 function initialize ( fp_Reval_Rates in out NOCOPY IGI_IAC_TYPES.iac_reval_rate_params )
141 return boolean is
142 fp_Reval_Rates_old IGI_IAC_TYPES.iac_reval_rate_params;
143 l_path varchar2(100);
144 begin
145 l_path := g_path||'initialize6';
146 fp_Reval_Rates_old := fp_Reval_Rates;
147
148 fp_Reval_Rates.asset_id := 0;
149 fp_Reval_Rates.book_type_code := null;
150 fp_Reval_Rates.revaluation_id := 0;
151 fp_Reval_Rates.period_counter := 0;
152 fp_Reval_Rates.reval_type := null;
153 fp_Reval_Rates.current_reval_factor := 0;
154 fp_Reval_Rates.cumulative_reval_factor := 0;
155 fp_Reval_Rates.processed_flag := null;
156 fp_Reval_Rates.latest_record := null;
157 fp_Reval_Rates.created_by := 0;
158 fp_Reval_Rates.creation_date := null;
159 fp_Reval_Rates.last_update_login := 0;
160 fp_Reval_Rates.last_update_date := null;
161 fp_Reval_Rates.last_updated_by := 0;
162 fp_Reval_Rates.adjustment_id := 0;
163 return true;
164 exception when others then
165 fp_Reval_Rates := fp_Reval_Rates_old;
166 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
167 return false;
168 end;
169
170 function initialize ( fp_Reval_exceptions in out NOCOPY IGI_IAC_TYPES.iac_reval_exception_line )
171 return boolean is
172 l_line IGI_IAC_TYPES.iac_reval_exception_line ;
173 l_path varchar2(100);
174 begin
175 l_path := g_path||'initialize7';
176 fp_reval_Exceptions := l_line;
177 return true;
178 exception when others then
179 fp_reval_Exceptions := l_line;
180 return false;
181 end;
182
183
184 function initialize ( fp_reval_params in out NOCOPY IGI_IAC_TYPES.iac_reval_params )
185 return boolean is
186 fp_reval_params_old IGI_IAC_TYPES.iac_reval_params;
187 l_path varchar2(100);
188 begin
189 l_path := g_path||'initialize8';
190
191 fp_reval_params_old := fp_reval_params;
192
193 if not initialize ( fp_reval_params.reval_control ) then
194 return false;
195 end if;
196
197 if not initialize ( fp_reval_params.reval_asset_params ) then
198 return false;
199 end if;
200 if not initialize ( fp_reval_params.reval_input_Asset ) then
201 return false;
202 end if;
203
204 if not initialize ( fp_reval_params.reval_output_asset ) then
205 return false;
206 end if;
207 if not initialize ( fp_reval_params.reval_output_asset_mvmt ) then
208 return false;
209 end if;
210 if not initialize ( fp_reval_params.reval_prev_rate_info ) then
211 return false;
212 end if;
213 if not initialize ( fp_reval_params.reval_curr_rate_info_first ) then
214 return false;
215 end if;
216 if not initialize ( fp_reval_params.reval_curr_rate_info_next ) then
217 return false;
218 end if;
219 if not initialize ( fp_reval_params.reval_asset_exceptions ) then
220 return false;
221 end if;
222 if not initialize ( fp_reval_params.fa_asset_info ) then
223 return false;
224 end if;
225 if not initialize ( fp_reval_params.reval_asset_rules ) then
226 return false;
227 end if;
228
229 return true;
230 exception when others then
231 fp_reval_params := fp_reval_params_old;
232 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
233 return false;
234 end;
235
236 function init_struct_for_srs ( fp_asset_id in number
237 , fp_book_type_code in varchar2
238 , fp_revaluation_id in number
239 , fp_revaluation_mode in varchar2
240 , fp_period_counter in number
241 , fp_control in IGI_IAC_TYPES.iac_reval_control_type
242 , fp_reval_params out NOCOPY IGI_IAC_TYPES.iac_reval_params
243 )
244 return boolean is
245 l_revaluation_date date;
246 l_reval_params IGI_IAC_TYPES.iac_reval_params;
247 l_output_dists IGI_IAC_TYPES.iac_reval_output_dists;
248 l_idx BINARY_INTEGER;
249 fp_reval_params_old IGI_IAC_TYPES.iac_reval_params;
250 l_path varchar2(100);
251 begin
252 l_idx := 1;
253 l_path := g_path||'init_struct_for_srs';
254
255 if not initialize ( fp_reval_params => l_Reval_params )
256 then
257 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'Error initializing structure');
258 return false;
259 end if;
260
261 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'Begin init_struct_for_srs');
262
263 /* update or populate the reval_control record */
264 l_reval_params.reval_control.revaluation_mode := fp_revaluation_mode;
265 -- get the revaluation type!
266 -- this needs to be optimized by adding parameter to do_revaluation_asset.
267 begin
268 select dd.*
269 into l_reval_params.reval_asset_rules
270 from igi_iac_reval_asset_rules dd
271 where dd.asset_id = fp_asset_id
272 and dd.book_type_code = fp_book_type_code
273 and dd.revaluation_id = fp_revaluation_id
274 ;
275 select h.revaluation_date
276 into l_reval_params.reval_asset_params.revaluation_date
277 from igi_iac_revaluations h
278 where h.revaluation_id = fp_revaluation_id
279 ;
280 l_reval_params.reval_asset_params.revaluation_rate
281 := l_reval_params.reval_Asset_rules.revaluation_Factor;
282
283 if l_reval_params.reval_asset_rules.revaluation_type = 'O' then
284 l_reval_params.reval_control.transaction_sub_type := 'OCCASSIONAL';
285 else
286 l_reval_params.reval_control.transaction_sub_type := 'PROFESSIONAL';
287 end if;
288
289 exception when others then
290 igi_iac_debug_pkg.debug_other_string(g_unexp_level,l_path,'+failed to get the asset rules');
291 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
292 return false;
293 end;
294 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+set the reval control based on reval mode');
295 if l_reval_params.reval_control.revaluation_mode = 'P'
296 then
297 l_reval_params.reval_control.message_level := 3;
298 l_reval_params.reval_control.validate_business_rules := true;
299 l_reval_params.reval_control.create_acctg_entries := true;
300 l_reval_params.reval_control.crud_allowed := true;
301 l_reval_params.reval_control.modify_balances := false;
302 elsif l_reval_params.reval_control.revaluation_mode in ( 'R','L') then
303 l_reval_params.reval_control.validate_business_rules := false;
304 l_reval_params.reval_control.message_level := 3;
305 l_reval_params.reval_control.create_acctg_entries := false;
306 l_reval_params.reval_control.crud_allowed := true;
307 l_reval_params.reval_control.modify_balances := true;
308 else
309 l_reval_params.reval_control.validate_business_rules := false;
310 l_reval_params.reval_control.message_level := 0;
311 l_reval_params.reval_control.create_acctg_entries := false;
312 l_reval_params.reval_control.crud_allowed := false;
313 l_reval_params.reval_control.modify_balances := false;
314 end if;
315 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+set the reval control other defaults');
316 l_reval_params.reval_control.print_report := false;
317 /* populate the reval_asset_params record, category id would be calculated later in the code
318 when fa information is retrieved.
319 */
320 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_asset_params record');
321 l_reval_params.reval_asset_params.asset_id := fp_asset_id;
322 l_reval_params.reval_asset_params.book_type_code := fp_book_type_code;
323 l_reval_params.reval_asset_params.revaluation_id := fp_revaluation_id;
324 l_reval_params.reval_asset_params.period_counter := fp_period_counter;
325 l_Reval_params.reval_asset_params.first_set_adjustment_id := 0;
326 l_reval_params.reval_asset_params.second_set_adjustment_id := 0;
327 /* populate the reval_input_asset record */
328 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_input_asset record');
329 declare
330 l_max_period_counter number := 0;
331 begin
332 select nvl(max(period_counter),0)
333 into l_max_period_counter
334 from igi_iac_asset_balances
335 where asset_id = fp_asset_id
336 and book_type_code = fp_book_type_code
337 and period_counter <= fp_period_counter
338 ;
339 if l_max_period_counter = 0 then
340
341 l_reval_params.reval_control.first_time_flag := true;
342 l_reval_params.reval_input_asset.asset_id := fp_asset_id;
343 l_reval_params.reval_input_asset.book_type_code := fp_book_type_code ;
344 l_reval_params.reval_input_asset.period_counter := fp_period_counter ;
345 l_reval_params.reval_input_asset.net_book_value := 0;
346 l_reval_params.reval_input_asset.adjusted_cost := 0;
347 l_reval_params.reval_input_asset.operating_acct := 0 ;
348 l_reval_params.reval_input_asset.reval_reserve := 0 ;
349 l_reval_params.reval_input_asset.deprn_amount := 0;
350 l_reval_params.reval_input_asset.deprn_reserve := 0 ;
351 l_reval_params.reval_input_asset.backlog_deprn_reserve := 0 ;
352 l_reval_params.reval_input_asset.general_fund := 0;
353 l_reval_params.reval_input_asset.last_reval_date := l_revaluation_date;
354 l_reval_params.reval_input_asset.current_reval_factor := 1 ;
355 l_reval_params.reval_input_asset.cumulative_reval_factor := 1 ;
356 l_reval_params.reval_input_asset.created_by := g_who_user_id ;
357 l_reval_params.reval_input_asset.creation_date := g_who_date ;
358 l_reval_params.reval_input_asset.last_update_login := g_who_login_id ;
359 l_reval_params.reval_input_asset.last_update_date := g_who_date ;
360 l_reval_params.reval_input_asset.last_updated_by := g_who_user_id;
361 else
362 begin
363 select *
364 into l_reval_params.reval_input_asset
365 from igi_iac_asset_balances
366 where asset_id = fp_asset_id
367 and book_type_code = fp_book_type_code
368 and period_counter = l_max_period_counter
369 ;
370 exception when others then
371 return false;
372 end;
373 l_reval_params.reval_control.first_time_flag := false;
374 end if;
375
376 exception when others then
377 return false;
378 end;
379 if l_reval_params.reval_control.first_time_flag then
380 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+first time processing for this asset');
381 end if;
382 /* populate the reval_output_asset record */
383 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_output_asset record');
384 l_reval_params.reval_output_asset := l_reval_params.reval_input_asset;
385 /* populate the reval_output_asset_mvmt record */
386 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_output_asset_mvmt record');
387 if not initialize ( l_reval_params.reval_output_asset_mvmt ) then
388 return false;
389 end if;
390
391 l_reval_params.reval_output_asset_mvmt.asset_id := fp_asset_id;
392 l_reval_params.reval_output_asset_mvmt.book_type_code := fp_book_type_code;
393 l_reval_params.reval_output_asset_mvmt.period_counter := fp_period_counter;
394 /* populate the reval_prev_rate_info record */
395 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_prev_rate_info record');
396 declare
397 l_dummy varchar2(1);
398 begin
399 select *
400 into l_reval_params.reval_prev_rate_info
401 from igi_iac_revaluation_rates
402 where asset_id = fp_asset_id
403 and period_counter <= fp_period_counter
404 and book_type_code = fp_book_type_code
405 and reval_type in ( 'O','P')
406 and nvl(latest_record,'X') = 'Y'
407 ;
408 exception
409 when no_data_found then
410 l_reval_params.reval_prev_rate_info.asset_id := fp_asset_id;
411 l_reval_params.reval_prev_rate_info.book_type_code := fp_book_type_code;
412 l_reval_params.reval_prev_rate_info.revaluation_id := fp_revaluation_id;
413 l_reval_params.reval_prev_rate_info.period_counter := fp_period_counter;
414 l_reval_params.reval_prev_rate_info.reval_type :=
415 l_reval_params.reval_Asset_rules.revaluation_type;
416 l_reval_params.reval_prev_rate_info.current_reval_factor := 1;
417 l_reval_params.reval_prev_rate_info.cumulative_reval_factor := 1;
418 l_reval_params.reval_prev_rate_info.processed_flag := 'Y';
419 l_reval_params.reval_prev_rate_info.latest_record := 'Y';
420 l_reval_params.reval_prev_rate_info.created_by := g_who_user_id;
421 l_reval_params.reval_prev_rate_info.creation_date := g_who_date;
422 l_reval_params.reval_prev_rate_info.last_update_login := g_who_login_id;
423 l_reval_params.reval_prev_rate_info.last_update_date := g_who_date;
424 l_reval_params.reval_prev_rate_info.last_updated_by := g_who_user_id;
425 when too_many_rows then
426 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+more than 1 revaluation record found with latest record set. aborting.');
427 return false;
428 when others then
429 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'error getting information from revaluation rates table'||sqlerrm);
430 return false;
431 end;
432
433 /* fa information from fa_books and fa_deprn summary from the historic books! */
434 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the fa_asset_info record');
435 declare
436 cursor c_fa_books is
437 select fb.cost
438 , fb.adjusted_cost
439 , fb.original_cost
440 , fb.salvage_value
441 , fb.life_in_months
442 , fb.rate_adjustment_factor
443 , fb.period_counter_fully_reserved
444 , fb.adjusted_recoverable_cost
445 , fb.recoverable_cost
446 , fb.date_placed_in_service
447 , fb.deprn_start_date
448 , fb.depreciate_flag
449 , fbc.last_period_counter
450 , fbc.gl_posting_allowed_flag
451 , fds.ytd_deprn
452 , fds.deprn_reserve
453 , fds.deprn_amount
454 , fadd.asset_category_id
455 from fa_books fb
456 , fa_book_controls fbc
457 , fa_deprn_summary fds
458 , fa_additions fadd
459 where fb.book_type_code = fbc.book_type_code
460 and fb.book_type_code = fp_book_type_code
461 -- and fbc.last_period_counter = fp_period_counter
462 and fadd.asset_id = fp_asset_id
463 and fb.asset_id = fp_asset_id
464 and fb.transaction_header_id_out is null
465 and fds.book_type_code = fp_book_type_code
466 and fds.asset_id = fp_asset_id
467 and fds.period_counter = ( select max(period_counter)
468 from fa_deprn_summary
469 where asset_id = fp_asset_id
470 and book_type_code = fp_book_type_code
471 and period_counter <= fp_period_counter
472 )
473 -- this should fail with asset with deprn = no, need to verify this later on...
474 ;
475 -- l_available boolean := false;
476 l_dpis_period fa_deprn_periods.period_counter%TYPE;
477 l_current_period fa_deprn_periods.period_counter%TYPE;
478 begin
479
480 for l_b in c_fa_books loop
481
482 /*Salavge value correction*/
483 If l_b.Salvage_value <> 0 THen
484 -- resreve
485 IF NOT igi_iac_salvage_pkg.correction(p_asset_id => fp_asset_id,
486 P_book_type_code =>fp_book_type_code,
487 P_value=>l_b.deprn_reserve,
488 P_cost=>l_b.cost,
489 P_salvage_value=>l_b.salvage_value,
490 P_calling_program=>'REVALUATION') THEN
491 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'+Salvage Value Correction Failed : ');
492 return false;
493 END IF;
494 -- YTD
495 IF NOT igi_iac_salvage_pkg.correction(p_asset_id => fp_asset_id,
496 P_book_type_code =>fp_book_type_code,
497 P_value=>l_b.ytd_deprn,
498 P_cost=>l_b.cost,
499 P_salvage_value=>l_b.salvage_value,
500 P_calling_program=>'REVALUATION') THEN
501
502 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'+Salvage Value Correction Failed : ');
503 return false;
504 END IF;
505 -- deprn amount
506 IF NOT igi_iac_salvage_pkg.correction(p_asset_id => fp_asset_id,
507 P_book_type_code =>fp_book_type_code,
508 P_value=>l_b.deprn_amount,
509 P_cost=>l_b.cost,
510 P_salvage_value=>l_b.salvage_value,
511 P_calling_program=>'REVALUATION') THEN
512
513 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'+Salvage Value Correction Failed : ');
514 return false;
515 END IF ;
516 END IF;
517 /*salvage value correction*/
518
519
520
521 l_reval_params.fa_asset_info.cost := l_b.cost;
522 l_reval_params.fa_asset_info.adjusted_cost := l_b.adjusted_cost;
523 l_reval_params.fa_asset_info.original_cost := l_b.original_cost;
524 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+original cost : '|| l_b.original_cost);
525 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+cost : '|| l_b.cost);
526 l_reval_params.fa_asset_info.salvage_value := l_b.salvage_value;
527 l_reval_params.fa_asset_info.life_in_months := l_b.life_in_months;
528 l_reval_params.fa_asset_info.rate_adjustment_factor := l_b.rate_adjustment_factor;
529 l_reval_params.fa_asset_info.period_counter_fully_reserved := l_b.period_counter_fully_reserved;
530 l_reval_params.fa_asset_info.adjusted_recoverable_cost := l_b.adjusted_recoverable_cost;
531 l_reval_params.fa_asset_info.recoverable_cost := l_b.recoverable_cost;
532 l_reval_params.fa_asset_info.date_placed_in_service := l_b.date_placed_in_service;
533 l_reval_params.fa_asset_info.deprn_start_date := l_b.deprn_start_date;
534 l_reval_params.fa_asset_info.last_period_counter := l_b.last_period_counter;
535 l_reval_params.fa_asset_info.gl_posting_allowed_flag := l_b.gl_posting_allowed_flag;
536 l_reval_params.fa_asset_info.ytd_deprn := l_b.ytd_deprn;
537 l_reval_params.fa_asset_info.deprn_reserve := l_b.deprn_reserve;
538 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+deprn reserve : '|| l_b.deprn_reserve);
539 l_reval_params.fa_asset_info.deprn_amount := l_b.deprn_amount;
540 l_reval_params.fa_asset_info.depreciate_flag := l_b.depreciate_flag;
541 l_reval_params.reval_asset_params.category_id := l_b.asset_category_id;
542
543 l_current_period := fp_period_counter;
544 IF NOT igi_iac_ytd_engine.Calculate_YTD
545 ( fp_book_type_code,
546 fp_asset_id,
547 l_reval_params.fa_asset_info,
548 l_dpis_period,
549 l_current_period,
550 l_reval_params.reval_control.calling_program) THEN
551 RETURN FALSE;
552 END IF;
553
554 end loop;
555
556 exception when others then
557 igi_iac_debug_pkg.debug_other_string(g_unexp_level,l_path,'+error in get period info from common utils'||sqlerrm);
558 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'End init_struct_for_srs');
559 return false;
560 end;
561
562 fp_reval_params := l_reval_params;
563 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+successful processing for init_struct_for_srs');
564 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'End init_struct_for_srs');
565
566 return true;
567 exception when others then
568 fp_reval_params := fp_reval_params_old;
569 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
570 return false;
571 end;
572
573 /*
574 -- initialize if called for calculation from the form
575 */
576
577 function init_struct_for_calc ( fp_asset_id in number
578 , fp_book_type_code in varchar2
579 , fp_revaluation_id in number
580 , fp_revaluation_mode in varchar2
581 , fp_period_counter in number
582 , fp_control in IGI_IAC_TYPES.iac_reval_control_type
583 , fp_reval_params out NOCOPY IGI_IAC_TYPES.iac_reval_params
584 )
585 return boolean is
586 l_revaluation_date date;
587 l_reval_params IGI_IAC_TYPES.iac_reval_params;
588 l_output_dists IGI_IAC_TYPES.iac_reval_output_dists;
589 l_idx BINARY_INTEGER;
590 fp_reval_params_old IGI_IAC_TYPES.iac_reval_params;
591 l_path varchar2(100);
592 begin
593 l_idx := 1;
594 l_path := g_path||'init_struct_for_calc';
595
596 if not initialize ( fp_reval_params => l_Reval_params )
597 then
598 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'Error initializing structure');
599 return false;
600 end if;
601
602 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'Error initializing structure');
603
604 /* update or populate the reval_control record */
605 l_reval_params.reval_control.revaluation_mode := fp_revaluation_mode;
606 begin
607 select dd.*
608 into l_reval_params.reval_asset_rules
609 from igi_iac_reval_asset_rules dd
610 where dd.asset_id = fp_asset_id
611 and dd.book_type_code = fp_book_type_code
612 and dd.revaluation_id = fp_revaluation_id
613 ;
614 select h.revaluation_date
615 into l_reval_params.reval_asset_params.revaluation_date
616 from igi_iac_revaluations h
617 where h.revaluation_id = fp_revaluation_id
618 ;
619 l_reval_params.reval_asset_params.revaluation_rate
620 := l_reval_params.reval_Asset_rules.revaluation_Factor;
621
622 if l_reval_params.reval_asset_rules.revaluation_type = 'O' then
623 l_reval_params.reval_control.transaction_sub_type := 'OCCASSIONAL';
624 else
625 l_reval_params.reval_control.transaction_sub_type := 'PROFESSIONAL';
626 end if;
627
628 exception when others then
629 igi_iac_debug_pkg.debug_other_string(g_unexp_level,l_path,'+failed to get the asset rules');
630 return false;
631 end;
632 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+set the reval control based on reval mode');
633 l_reval_params.reval_control.message_level := 3;
634 l_reval_params.reval_control.validate_business_rules := false;
635 l_reval_params.reval_control.create_acctg_entries := false;
636 l_reval_params.reval_control.crud_allowed := false;
637 l_reval_params.reval_control.modify_balances := false;
638 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+set the reval control other defaults');
639 l_reval_params.reval_control.print_report := false;
640 /* populate the reval_asset_params record, category id would be calculated later in the code
641 when fa information is retrieved.
642 */
643 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_asset_params record');
644 l_reval_params.reval_asset_params.asset_id := fp_asset_id;
645 l_reval_params.reval_asset_params.book_type_code := fp_book_type_code;
646 l_reval_params.reval_asset_params.revaluation_id := fp_revaluation_id;
647 l_reval_params.reval_asset_params.period_counter := fp_period_counter;
648 l_Reval_params.reval_asset_params.first_set_adjustment_id := 0;
649 l_reval_params.reval_asset_params.second_set_adjustment_id := 0;
650 /* populate the reval_input_asset record */
651 igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+populate the reval_input_asset record');
652 declare
653 l_max_period_counter number := 0;
654 begin
655 select nvl(max(period_counter),0)
656 into l_max_period_counter
657 from igi_iac_asset_balances
658 where asset_id = fp_asset_id
659 and book_type_code = fp_book_type_code
660 and period_counter <= fp_period_counter
661 ;
662 if l_max_period_counter = 0 then
663
664 l_reval_params.reval_control.first_time_flag := true;
665 l_reval_params.reval_input_asset.asset_id := fp_asset_id;
666 l_reval_params.reval_input_asset.book_type_code := fp_book_type_code ;
667 l_reval_params.reval_input_asset.period_counter := fp_period_counter ;
668 l_reval_params.reval_input_asset.net_book_value := 0;
669 l_reval_params.reval_input_asset.adjusted_cost := 0;
670 l_reval_params.reval_input_asset.operating_acct := 0 ;
671 l_reval_params.reval_input_asset.reval_reserve := 0 ;
672 l_reval_params.reval_input_asset.deprn_amount := 0;
673 l_reval_params.reval_input_asset.deprn_reserve := 0 ;
674 l_reval_params.reval_input_asset.backlog_deprn_reserve := 0 ;
675 l_reval_params.reval_input_asset.general_fund := 0;
676 l_reval_params.reval_input_asset.last_reval_date := l_revaluation_date;
677 l_reval_params.reval_input_asset.current_reval_factor := 1 ;
678 l_reval_params.reval_input_asset.cumulative_reval_factor := 1 ;
679 l_reval_params.reval_input_asset.created_by := g_who_user_id ;
680 l_reval_params.reval_input_asset.creation_date := g_who_date ;
681 l_reval_params.reval_input_asset.last_update_login := g_who_login_id ;
682 l_reval_params.reval_input_asset.last_update_date := g_who_date ;
683 l_reval_params.reval_input_asset.last_updated_by := g_who_user_id;
684 else
685 begin
686 select *
687 into l_reval_params.reval_input_asset
688 from igi_iac_asset_balances
689 where asset_id = fp_asset_id
690 and book_type_code = fp_book_type_code
691 and period_counter = l_max_period_counter
692 ;
693 exception when others then
694 return false;
695 end;
696 l_reval_params.reval_control.first_time_flag := false;
697 end if;
698
699 exception when others then
700 return false;
701 end;
702
703 /* populate the reval_output_asset record */
704
705 l_reval_params.reval_output_asset := l_reval_params.reval_input_asset;
706 /* populate the reval_output_asset_mvmt record */
707 if not initialize ( l_reval_params.reval_output_asset_mvmt ) then
708 return false;
709 end if;
710
711 l_reval_params.reval_output_asset_mvmt.asset_id := fp_asset_id;
712 l_reval_params.reval_output_asset_mvmt.book_type_code := fp_book_type_code;
713 l_reval_params.reval_output_asset_mvmt.period_counter := fp_period_counter;
714 /* populate the reval_prev_rate_info record */
715
716 l_reval_params.reval_prev_rate_info.cumulative_reval_factor
717 := l_reval_params.reval_input_asset.cumulative_reval_factor;
718
719
720 l_reval_params.reval_prev_rate_info.current_reval_factor :=
721 l_reval_params.reval_prev_rate_info.cumulative_reval_factor;
722
723 l_reval_params.reval_prev_rate_info.asset_id := fp_asset_id;
724 l_reval_params.reval_prev_rate_info.book_type_code := fp_book_type_code;
725 l_reval_params.reval_prev_rate_info.revaluation_id := fp_revaluation_id;
726 l_reval_params.reval_prev_rate_info.period_counter := fp_period_counter;
727 l_reval_params.reval_prev_rate_info.reval_type :=
728 l_reval_params.reval_Asset_rules.revaluation_type;
729 l_reval_params.reval_prev_rate_info.processed_flag := 'Y';
730 l_reval_params.reval_prev_rate_info.latest_record := 'Y';
731 l_reval_params.reval_prev_rate_info.created_by := g_who_user_id;
732 l_reval_params.reval_prev_rate_info.creation_date := g_who_date;
733 l_reval_params.reval_prev_rate_info.last_update_login := g_who_login_id;
734 l_reval_params.reval_prev_rate_info.last_update_date := g_who_date;
735 l_reval_params.reval_prev_rate_info.last_updated_by := g_who_user_id;
736
737
738 /* fa information from fa_books and fa_deprn summary from the historic books! */
739 declare
740 cursor c_fa_books is
741 select fb.cost
742 , fb.adjusted_cost
743 , fb.original_cost
744 , fb.salvage_value
745 , fb.life_in_months
746 , fb.rate_adjustment_factor
747 , fb.period_counter_fully_reserved
748 , fb.adjusted_recoverable_cost
749 , fb.recoverable_cost
750 , fb.date_placed_in_service
751 , fb.deprn_start_date
752 , fb.depreciate_flag
753 , fbc.last_period_counter
754 , fbc.gl_posting_allowed_flag
755 , fds.ytd_deprn
756 , fds.deprn_reserve
757 , fds.deprn_amount
758 , fadd.asset_category_id
759 from fa_books fb
760 , fa_book_controls fbc
761 , fa_deprn_summary fds
762 , fa_additions fadd
763 where fb.book_type_code = fbc.book_type_code
764 and fb.book_type_code = fp_book_type_code
765 and fadd.asset_id = fp_asset_id
766 and fb.asset_id = fp_asset_id
767 and fb.transaction_header_id_out is null
768 and fds.book_type_code = fp_book_type_code
769 and fds.asset_id = fp_asset_id
770 and fds.period_counter = ( select max(period_counter)
771 from fa_deprn_summary
772 where asset_id = fp_asset_id
773 and book_type_code = fp_book_type_code
774 and period_counter <= fp_period_counter
775 )
776 -- this should fail with asset with deprn = no, need to verify this later on...
777 ;
778 -- l_available boolean := false;
779 l_dpis_period fa_deprn_periods.period_counter%TYPE;
780 l_current_period fa_deprn_periods.period_counter%TYPE;
781
782 begin
783 for l_b in c_fa_books loop
784
785 /*Salavge value correction*/
786 -- resreve
787 If l_b.Salvage_value <> 0 THen
788 IF NOT igi_iac_salvage_pkg.correction(p_asset_id => fp_asset_id,
789 P_book_type_code =>fp_book_type_code,
790 P_value=>l_b.deprn_reserve,
791 P_cost=>l_b.cost,
792 P_salvage_value=>l_b.salvage_value,
793 P_calling_program=>'REVALUATION') THEN
794 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'+Salvage Value Correction Failed : ');
795 Return false;
796 END IF;
797 -- YTD
798 IF NOT igi_iac_salvage_pkg.correction(p_asset_id => fp_asset_id,
799 P_book_type_code =>fp_book_type_code,
800 P_value=>l_b.ytd_deprn,
801 P_cost=>l_b.cost,
802 P_salvage_value=>l_b.salvage_value,
803 P_calling_program=>'REVALUATION') THEN
804
805 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'+Salvage Value Correction Failed : ');
806 Return false;
807 END IF;
808 -- deprn amount
809 IF NOT igi_iac_salvage_pkg.correction(p_asset_id => fp_asset_id,
810 P_book_type_code =>fp_book_type_code,
811 P_value=>l_b.deprn_amount,
812 P_cost=>l_b.cost,
813 P_salvage_value=>l_b.salvage_value,
814 P_calling_program=>'REVALUATION') THEN
815 igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'+Salvage Value Correction Failed : ');
816 Return false;
817 END IF;
818 End If;
819 /*salvage value correction*/
820
821 l_reval_params.fa_asset_info.cost := l_b.cost;
822 l_reval_params.fa_asset_info.adjusted_cost := l_b.adjusted_cost;
823 l_reval_params.fa_asset_info.original_cost := l_b.original_cost;
824 l_reval_params.fa_asset_info.salvage_value := l_b.salvage_value;
825 l_reval_params.fa_asset_info.life_in_months := l_b.life_in_months;
826 l_reval_params.fa_asset_info.rate_adjustment_factor := l_b.rate_adjustment_factor;
827 l_reval_params.fa_asset_info.period_counter_fully_reserved := l_b.period_counter_fully_reserved;
828 l_reval_params.fa_asset_info.adjusted_recoverable_cost := l_b.adjusted_recoverable_cost;
829 l_reval_params.fa_asset_info.recoverable_cost := l_b.recoverable_cost;
830 l_reval_params.fa_asset_info.date_placed_in_service := l_b.date_placed_in_service;
831 l_reval_params.fa_asset_info.deprn_start_date := l_b.deprn_start_date;
832 l_reval_params.fa_asset_info.last_period_counter := l_b.last_period_counter;
833 l_reval_params.fa_asset_info.gl_posting_allowed_flag := l_b.gl_posting_allowed_flag;
834 l_reval_params.fa_asset_info.ytd_deprn := l_b.ytd_deprn;
835 l_reval_params.fa_asset_info.deprn_reserve := l_b.deprn_reserve;
836 l_reval_params.fa_asset_info.deprn_amount := l_b.deprn_amount;
837 l_reval_params.fa_asset_info.depreciate_flag := l_b.depreciate_flag;
838 l_reval_params.reval_asset_params.category_id := l_b.asset_category_id;
839
840 l_current_period := fp_period_counter;
841 IF NOT igi_iac_ytd_engine.Calculate_YTD
842 ( fp_book_type_code,
843 fp_asset_id,
844 l_reval_params.fa_asset_info,
845 l_dpis_period,
846 l_current_period,
847 l_reval_params.reval_control.calling_program) THEN
848 RETURN FALSE;
849 END IF;
850
851 end loop;
852
853 exception when others then
854 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
855 return false;
856 end;
857
858 fp_reval_params := l_reval_params;
859
860 return true;
861 exception when others then
862 fp_reval_params := fp_reval_params_old;
863 igi_iac_debug_pkg.debug_unexpected_msg(l_path);
864 return false;
865 end;
866
867 BEGIN
868 --===========================FND_LOG.START=====================================
869 g_state_level := FND_LOG.LEVEL_STATEMENT;
870 g_proc_level := FND_LOG.LEVEL_PROCEDURE;
871 g_event_level := FND_LOG.LEVEL_EVENT;
872 g_excep_level := FND_LOG.LEVEL_EXCEPTION;
873 g_error_level := FND_LOG.LEVEL_ERROR;
874 g_unexp_level := FND_LOG.LEVEL_UNEXPECTED;
875 g_path := 'IGI.PLSQL.igiiarsb.IGI_IAC_REVAL_INIT_STRUCT.';
876 --===========================FND_LOG.END=======================================
877
878 g_who_user_id := fnd_global.user_id;
879 g_who_login_id := fnd_global.login_id;
880 g_who_date := sysdate;
881
882 END;
883