DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.IGI_IAC_REVAL_ENGINE

Source


1 PACKAGE BODY IGI_IAC_REVAL_ENGINE AS
2 -- $Header: igiiareb.pls 120.11.12020000.1 2012/06/27 10:39:01 appldev ship $
3 
4 --===========================FND_LOG.START=====================================
5 
6 g_state_level NUMBER	     :=	FND_LOG.LEVEL_STATEMENT;
7 g_proc_level  NUMBER	     :=	FND_LOG.LEVEL_PROCEDURE;
8 g_event_level NUMBER	     :=	FND_LOG.LEVEL_EVENT;
9 g_excep_level NUMBER	     :=	FND_LOG.LEVEL_EXCEPTION;
10 g_error_level NUMBER	     :=	FND_LOG.LEVEL_ERROR;
11 g_unexp_level NUMBER	     :=	FND_LOG.LEVEL_UNEXPECTED;
12 g_path        VARCHAR2(100)  := 'IGI.PLSQL.igiiareb.IGI_IAC_REVAL_ENGINE.';
13 
14 --===========================FND_LOG.END=======================================
15 
16 l_rec igi_iac_revaluation_rates%rowtype;  -- create this for quicker access via sql navigator
17 
18 procedure do_round ( p_amount in out NOCOPY number, p_book_type_code in varchar2) is
19       l_path varchar2(150) := g_path||'do_round(p_amount,p_book_type_code)';
20       l_amount number     := p_amount;
21       l_amount_old number := p_amount;
22       --l_path varchar2(150) := g_path||'do_round';
23     begin
24         igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'--- Inside Round() ---');
25        IF IGI_IAC_COMMON_UTILS.Iac_Round(X_Amount => l_amount, X_Book => p_book_type_code)
26        THEN
27           p_amount := l_amount;
28           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'IGI_IAC_COMMON_UTILS.Iac_Round is TRUE');
29           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'p_amount = '||p_amount);
30        ELSE
31           p_amount := round( l_amount, 2);
32           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'IGI_IAC_COMMON_UTILS.Iac_Round is FALSE');
33           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'p_amount = '||p_amount);
34        END IF;
35     exception when others then
36       p_amount := l_amount_old;
37       igi_iac_debug_pkg.debug_unexpected_msg(l_path);
38       Raise;
39     end;
40 
41 procedure do_round ( p_info in out NOCOPY IGI_IAC_TYPES.iac_reval_output_asset ) is
42      p_info_old IGI_IAC_TYPES.iac_reval_output_asset;
43      l_path varchar2(150) := g_path||'do_round';
44 begin
45      p_info_old := p_info;
46 
47      do_round( p_info.adjusted_cost   , p_info.book_type_code  )     ;
48      do_round( p_info.operating_acct  , p_info.book_type_code  )     ;
49      do_round( p_info.deprn_amount    , p_info.book_type_code  )     ;
50      do_round( p_info.backlog_deprn_reserve , p_info.book_type_code  )     ;
51      do_round( p_info.deprn_reserve    , p_info.book_type_code )     ;
52      do_round( p_info.general_fund     , p_info.book_type_code )     ;
53      do_round( p_info.reval_reserve    , p_info.book_type_code  )     ;
54      do_round( p_info.net_book_value   , p_info.book_type_code )  ;
55 
56 exception when others then
57   p_info := p_info_old;
58   igi_iac_debug_pkg.debug_unexpected_msg(l_path);
59   Raise;
60 end;
61 
62 procedure display ( p_info in IGI_IAC_TYPES.iac_reval_output_asset ) IS
63      l_path varchar2(150) := g_path||'display';
64 begin
65      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'++++++++++++++++++++++++++++++++++++++++++++++++');
66      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    Adjusted cost '||p_info.adjusted_cost);
67      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    Operating Acc '||p_info.operating_acct);
68      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    Deprn amount  '||p_info.deprn_amount );
69      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    Backlog       '||p_info.backlog_deprn_reserve);
70      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    Deprn Reserve '||p_info.deprn_reserve);
71      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    General Fund  '||p_info.general_fund);
72      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    Reval Reserve '||p_info.reval_reserve );
73      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    NBV           '||p_info.net_book_value );
74      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    current rate  '||p_info.current_reval_factor);
75      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'    cumulve rate  '||p_info.cumulative_reval_factor);
76      igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'++++++++++++++++++++++++++++++++++++++++++++++++');
77 end;
78 
79 Function  Calculations  ( p_iac_reval_params in out NOCOPY IGI_IAC_TYPES.iac_reval_params
80                         , p_second_set in boolean
81                         )
82 RETURN BOOLEAN IS
83       p_iac_reval_params_old IGI_IAC_TYPES.iac_reval_params;
84       l_reval_prev IGI_IAC_TYPES.iac_reval_output_asset;
85       l_reval_curr IGI_IAC_TYPES.iac_reval_output_asset;
86       l_reval_mvmt IGI_IAC_TYPES.iac_reval_output_asset;
87       l_curr_rate  number  := 0;
88       l_prev_rate  number  := 0;
89       l_tran_rate  number  := 0;
90       l_py_factor  number  := 0;
91       l_salvage_value_correction number :=0;
92       l_salvage_value_correction_ytd number :=0;
93       l_path varchar2(150) := g_path||'Calculations';
94 BEGIN
95       p_iac_reval_params_old := p_iac_reval_params;
96 
97       igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'begin calculations');
98       if not p_second_set then
99           l_curr_rate := p_iac_reval_params.reval_curr_rate_info_first.cumulative_reval_factor;
100           l_prev_rate := p_iac_reval_params.reval_prev_rate_info.cumulative_reval_factor;
101 
102       else
103           l_curr_rate := p_iac_reval_params.reval_curr_rate_info_next.cumulative_reval_factor;
104           l_prev_rate := p_iac_reval_params.reval_prev_rate_info.cumulative_reval_factor;
105       end if;
106       l_tran_rate := l_curr_rate/ l_prev_rate;
107 
108       l_py_factor := p_iac_reval_params.fa_asset_info.deprn_periods_prior_year /
109                      p_iac_reval_params.fa_asset_info.deprn_periods_elapsed
110       ;
111       igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+calculations : l_curr_rate '|| l_curr_rate);
112       igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+calculations : l_prev_rate '|| l_prev_rate);
113       igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+calculations : l_tran_rate '|| l_tran_rate);
114 
115       /* Apply the prev cumm rate to the fa info */
116       l_reval_prev := p_iac_reval_params.reval_input_asset;
117       l_reval_curr := p_iac_reval_params.reval_input_asset;
118 
119          igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,' + calculations : deprn Resreve '|| 						p_iac_reval_params.fa_asset_info.deprn_reserve);
120          igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+ calculations : YTD  '|| 						p_iac_reval_params.fa_asset_info.Ytd_deprn);
121 
122       if (p_iac_reval_params.reval_control.first_time_flag) then
123           l_reval_prev.adjusted_cost           := ( l_prev_rate *  p_iac_reval_params.fa_asset_info.cost )
124                                                                 - p_iac_reval_params.fa_asset_info.cost ;
125           do_round(l_reval_prev.adjusted_cost,p_iac_reval_params.reval_asset_params.book_type_code);
126           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'l_reval_prev.adjusted_cost :'|| l_reval_prev.adjusted_cost);
127 
128           if l_curr_rate >= 1 and l_prev_rate >= 1 then
129              l_reval_prev.operating_acct          := 0;
130           else
131              l_reval_prev.operating_acct := l_reval_prev.adjusted_cost ;
132           end if;
133 
134           p_iac_reval_params.reval_asset_params.prev_ytd_deprn := ( l_prev_rate * p_iac_reval_params.fa_asset_info.ytd_deprn)
135                                               - p_iac_reval_params.fa_asset_info.ytd_deprn;
136 		  do_round(p_iac_reval_params.reval_asset_params.prev_ytd_deprn,p_iac_reval_params.reval_asset_params.book_type_code);
137           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'p_iac_reval_params.reval_asset_params.prev_ytd_deprn :'|| p_iac_reval_params.reval_asset_params.prev_ytd_deprn);
138 
139           l_reval_prev.backlog_deprn_reserve   := (l_prev_rate - 1) *
140                                                      ( p_iac_reval_params.fa_asset_info.deprn_reserve -
141                                                        p_iac_reval_params.fa_asset_info.ytd_deprn)
142 
143                                                    /*) -
144                                                       ( p_iac_reval_params.fa_asset_info.deprn_reserve -
145                                                        p_iac_reval_params.fa_asset_info.ytd_deprn)*/ ;
146           do_round(l_reval_prev.backlog_deprn_reserve,p_iac_reval_params.reval_asset_params.book_type_code);
147           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'l_reval_prev.backlog_deprn_reserve :'
148                                                                   || l_reval_prev.backlog_deprn_reserve);
149 
150           if l_reval_prev.adjusted_cost >= 0 then
151               l_reval_prev.general_fund            := p_iac_reval_params.reval_asset_params.prev_ytd_deprn ;
152               l_reval_prev.reval_reserve           := l_reval_prev.adjusted_cost - l_reval_prev.backlog_deprn_reserve
153                                                        - l_reval_prev.general_fund ;
154           else
155              l_reval_prev.reval_reserve           := 0 ;
156              l_reval_prev.general_fund            := 0 ;
157           end if;
158 
159           l_reval_prev.deprn_reserve           := ( l_prev_rate * p_iac_reval_params.fa_asset_info.deprn_reserve)
160                                                   - p_iac_reval_params.fa_asset_info.deprn_reserve
161                                                   - l_reval_prev.backlog_deprn_reserve;
162           do_round(l_reval_prev.deprn_reserve,p_iac_reval_params.reval_asset_params.book_type_code);
163           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'l_reval_prev.deprn_reserve :'
164                                                                   || l_reval_prev.deprn_reserve);
165 
166 
167          l_reval_prev.net_book_value          := l_reval_prev.adjusted_cost - l_reval_prev.deprn_reserve
168                                               - l_reval_prev.backlog_deprn_reserve;
169       else
170           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+calculations : not the first time');
171           p_iac_reval_params.reval_asset_params.prev_ytd_deprn := ( l_prev_rate * p_iac_reval_params.fa_asset_info.ytd_deprn)
172                                               - p_iac_reval_params.fa_asset_info.ytd_deprn;
173           do_round(p_iac_reval_params.reval_asset_params.prev_ytd_deprn,p_iac_reval_params.reval_asset_params.book_type_code);
174           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'p_iac_reval_params.reval_asset_params.prev_ytd_deprn :'
175                                                                   || p_iac_reval_params.reval_asset_params.prev_ytd_deprn);
176       end if;
177 
178       /* Display prev record */
179       igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'++++++++++++++++++++++++++++++++++++++++++++++++');
180       if p_second_set then
181           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+++++++++++ SECOND SET : START +++++++++++');
182       else
183           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'++++++++++++ FIRST  SET : START +++++++++++');
184       end if;
185       Do_round( l_reval_prev );
186       Display( l_reval_prev );
187       /* Apply the curr cumm rate to the fa info */
188       l_reval_curr.adjusted_cost           := ( l_curr_rate *  p_iac_reval_params.fa_asset_info.cost )
189                                                             - p_iac_reval_params.fa_asset_info.cost;
190       do_round(l_reval_curr.adjusted_cost,p_iac_reval_params.reval_asset_params.book_type_code);
191 
192      IF  p_iac_reval_params.fa_asset_info.period_counter_fully_reserved IS NOT NULL
193         AND p_iac_reval_params.reval_asset_params.period_counter > p_iac_reval_params.fa_asset_info.last_period_counter THEN
194       l_reval_curr.deprn_amount := 0;
195       l_reval_prev.deprn_amount := 0;
196      ELSE
197       l_reval_curr.deprn_amount            := ( l_curr_rate * p_iac_reval_params.fa_asset_info.deprn_amount)
198                                               - p_iac_reval_params.fa_asset_info.deprn_amount;
199       do_round(l_reval_curr.deprn_amount ,p_iac_reval_params.reval_asset_params.book_type_code);
200      END IF;
201 
202      if p_second_set then
203           p_iac_reval_params.reval_asset_params.curr_ytd_deprn_next
204                                                := ( l_curr_rate * p_iac_reval_params.fa_asset_info.ytd_deprn)
205                                                   - p_iac_reval_params.fa_asset_info.ytd_deprn;
206           do_round(p_iac_reval_params.reval_asset_params.curr_ytd_deprn_next
207                   ,p_iac_reval_params.reval_asset_params.book_type_code);
208 
209           p_iac_reval_params.reval_asset_params.ytd_deprn_mvmt :=
210                                                 p_iac_reval_params.reval_asset_params.curr_ytd_deprn_next -
211                                                 p_iac_reval_params.reval_asset_params.prev_ytd_deprn ;
212      else
213           p_iac_reval_params.reval_asset_params.curr_ytd_deprn_first
214                                                := ( l_curr_rate * p_iac_reval_params.fa_asset_info.ytd_deprn)
215                                                   - p_iac_reval_params.fa_asset_info.ytd_deprn;
216           do_round(p_iac_reval_params.reval_asset_params.curr_ytd_deprn_first
217                   ,p_iac_reval_params.reval_asset_params.book_type_code);
218 
219           p_iac_reval_params.reval_asset_params.ytd_deprn_mvmt :=
220                                                 p_iac_reval_params.reval_asset_params.curr_ytd_deprn_first -
221                                                 p_iac_reval_params.reval_asset_params.prev_ytd_deprn ;
222      end if;
223 /* Backlog = movement in current revaluation * gross pyrs acc deprn
224 */
225      if l_py_factor <> 0 then
226           declare
227             l_blog number;
228           begin
229 
230             l_blog  := ( p_iac_reval_params.fa_asset_info.deprn_reserve -
231                                                        p_iac_reval_params.fa_asset_info.ytd_deprn) *
232                         ( l_curr_rate - l_prev_rate );
233             do_round(l_blog ,p_iac_reval_params.reval_asset_params.book_type_code);
234             igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+current period backlog is '|| l_blog);
235             l_reval_curr.backlog_deprn_reserve      :=  l_blog + l_reval_prev.backlog_deprn_reserve;
236             igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+cumulative backlog is '|| 						l_reval_curr.backlog_deprn_reserve);
237           end;
238       else
239           l_reval_curr.backlog_deprn_reserve := 0;
240       end if;
241 
242       if l_curr_rate >= 1 and l_prev_rate >= 1 then
243             l_reval_curr.general_fund            := l_reval_prev.general_fund +
244                                       p_iac_reval_params.reval_asset_params.ytd_deprn_mvmt ;
245 
246             l_reval_curr.reval_reserve           := l_reval_curr.adjusted_cost - l_reval_curr.backlog_deprn_reserve
247                                               - l_reval_curr.general_fund - l_reval_curr.operating_acct;
248       else
249           l_reval_curr.reval_reserve          := 0;
250           l_reval_curr.operating_acct         := l_reval_curr.adjusted_cost - l_reval_curr.backlog_deprn_reserve
251                                                 - l_reval_curr.general_fund ;
252       end if;
253 
254           l_reval_curr.deprn_reserve           := ( l_curr_rate * p_iac_reval_params.fa_asset_info.deprn_reserve)
255                                               - p_iac_reval_params.fa_asset_info.deprn_reserve
256 											  - l_reval_curr.backlog_deprn_reserve;
257           do_round(l_reval_curr.deprn_reserve ,p_iac_reval_params.reval_asset_params.book_type_code);
258           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'l_reval_curr.deprn_reserve :'
259                                                                   || l_reval_curr.deprn_reserve);
260 
261       l_reval_curr.net_book_value          := l_reval_curr.adjusted_cost - l_reval_curr.deprn_reserve
262                                               - l_reval_curr.backlog_deprn_reserve;
263       Do_round( p_info => l_reval_curr );
264       /* put the differences in the asset mvmt table */
265       -- note accounting entries are created from this mvmt table --
266       if p_iac_reval_params.reval_control.first_time_flag then
267          igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+first time flag is set.');
268          l_reval_mvmt := l_reval_curr;
269       else
270           l_reval_mvmt.adjusted_cost           := l_reval_curr.adjusted_cost - l_reval_prev.adjusted_cost;
271           l_reval_mvmt.operating_acct          := l_reval_curr.operating_acct - l_reval_prev.operating_acct;
272           l_reval_mvmt.deprn_amount            := l_reval_curr.deprn_amount - l_reval_prev.deprn_amount;
273           l_reval_mvmt.backlog_deprn_reserve   := l_reval_curr.backlog_deprn_reserve
274                                                   - l_reval_prev.backlog_deprn_reserve;
275           l_reval_mvmt.deprn_reserve           := l_reval_curr.deprn_reserve - l_reval_prev.deprn_reserve;
276           l_reval_mvmt.general_fund            := l_reval_curr.general_fund - l_reval_prev.general_fund;
277           l_reval_mvmt.reval_reserve           := l_reval_curr.reval_reserve - l_reval_prev.reval_reserve;
278           l_reval_mvmt.net_book_value          := 0;
279       end if;
280       /* display results to the log file */
281       Do_round ( p_info => l_reval_mvmt );
282       if p_second_set then
283           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+++++++++++ SECOND SET :  REVAL MVMT ++++++++');
284       else
285           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+++++++++++ FIRST  SET :  REVAL MVMT ++++++++');
286       end if;
287 
288       Display ( p_info => l_reval_mvmt );
289       if p_second_set then
290           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+++++++++++ SECOND SET :  REVAL END ++++++++');
291       else
292           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+++++++++++ FIRST  SET :  REVAL END ++++++++');
293       end if;
294       Display ( p_info => l_reval_curr );
295       if p_iac_reval_params.reval_control.first_time_flag then
296          p_iac_reval_params.reval_input_asset    := l_reval_prev ;
297       end if;
298       p_iac_reval_params.reval_output_asset      := l_reval_curr  ;
299       p_iac_reval_params.reval_output_asset.cumulative_reval_factor := l_curr_rate;
300       p_iac_reval_params.reval_output_asset.current_reval_factor    := l_tran_rate;
301       p_iac_reval_params.reval_output_asset_mvmt := l_reval_mvmt  ;
302       igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'end calculations');
303       return TRUE;
304 
305 exception when others then
306   p_iac_reval_params := p_iac_reval_params_old;
307   igi_iac_debug_pkg.debug_unexpected_msg(l_path);
308   return FALSE;
309 END;
310 
311 Function  First_set_calculations  ( p_iac_reval_params in out NOCOPY IGI_IAC_TYPES.iac_reval_params )
312 RETURN BOOLEAN IS
313     p_iac_reval_params_old IGI_IAC_TYPES.iac_reval_params;
314     l_path varchar2(150) := g_path||'First_set_calculations';
315 BEGIN
316 
317   p_iac_reval_params_old := p_iac_reval_params;
318 
319   igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'begin first set calculations');
320   IF NOT Calculations ( p_iac_reval_params => p_iac_reval_params, p_second_set => false )
321   THEN
322     igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'error first set calculations');
323     igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'end  first set calculations');
324     return false;
325   END IF;
326   igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'end  first set calculations');
327   return TRUE;
328 exception when others then
329   p_iac_reval_params := p_iac_reval_params_old;
330   igi_iac_debug_pkg.debug_unexpected_msg(l_path);
331   return FALSE;
332 END;
333 
334 Function  Next_set_calculations  ( p_iac_reval_params in out NOCOPY IGI_IAC_TYPES.iac_reval_params )
335 RETURN BOOLEAN IS
336   p_iac_reval_params_old IGI_IAC_TYPES.iac_reval_params;
337   l_path varchar2(150) := g_path||'Next_set_calculations';
338 BEGIN
339 
340   p_iac_reval_params_old := p_iac_reval_params;
341 
342   IF NOT Calculations ( p_iac_reval_params => p_iac_reval_params, p_second_set => true )
343   THEN
344     igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'error next set calculations');
345     igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'end  next set calculations');
346     return false;
347   END IF;
348   return TRUE;
349 exception when others then
350   p_iac_reval_params := p_iac_reval_params_old;
351   igi_iac_debug_pkg.debug_unexpected_msg(l_path);
352   return FALSE;
353 END;
354 /*
355 -- Get the rate information and then call Set_Calculations : FIRST  and  NEXT
356 */
357 
358 Function  Prepare_calculations (  p_iac_reval_params in out NOCOPY IGI_IAC_TYPES.iac_reval_params )
359 RETURN BOOLEAN IS
360   p_iac_reval_params_old IGI_IAC_TYPES.iac_reval_params;
361   l_path varchar2(150) := g_path||'Prepare_calculations';
362 BEGIN
363 
364   p_iac_reval_params_old := p_iac_reval_params;
365 
366    -- first split ratios (if revaluation is mixed!)
367    IF NOT IGI_IAC_REVAL_UTILITIES.split_rates
368           ( fp_asset_id                   => p_iac_reval_params.reval_asset_params.asset_id
369           , fp_book_type_code             => p_iac_reval_params.reval_asset_params.book_type_code
370           , fp_revaluation_id             => p_iac_reval_params.reval_asset_params.revaluation_id
371           , fp_period_counter             => p_iac_reval_params.reval_asset_params.period_counter
372           , fp_current_factor             => p_iac_reval_params.reval_asset_params.revaluation_rate
373           , fp_reval_type                 => p_iac_reval_params.reval_asset_rules.revaluation_type
374           , fp_first_time_flag            => p_iac_reval_params.reval_control.first_time_flag
375           , fp_mixed_scenario             => p_iac_reval_params.reval_control.mixed_scenario
376           , fp_reval_prev_rate_info       => p_iac_reval_params.reval_prev_rate_info
377           , fp_reval_curr_rate_info_first => p_iac_reval_params.reval_curr_rate_info_first
378           , fp_reval_curr_rate_info_next  => p_iac_reval_params.reval_curr_rate_info_next
379           )
380    THEN
381        igi_iac_debug_pkg.debug_other_string(g_error_level,l_path,'Unable to split rates!');
382        return FALSE;
383    END IF;
384 
385    return TRUE;
386 exception when others then
387   p_iac_reval_params := p_iac_reval_params_old;
388   igi_iac_debug_pkg.debug_unexpected_msg(l_path);
389   return FALSE;
390 END;
391 
392 function swap ( fp_reval_params1 IN IGI_IAC_TYPES.iac_reval_params
393               , fp_reval_params2 OUT NOCOPY IGI_IAC_TYPES.iac_reval_params
394                   )
395 return boolean is
396   fp_reval_params2_old IGI_IAC_TYPES.iac_reval_params;
397   l_path varchar2(150) := g_path||'swap';
398 begin
399 
400   if  fp_reval_params1.reval_control.mixed_scenario then
401     igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'+intializing for the second set of calculations');
402     fp_reval_params2                                                  := fp_reval_params1;
403     fp_reval_params2.reval_control.first_time_flag                    := false;
404     fp_reval_params2.reval_input_asset                                := fp_reval_params1.reval_output_asset;
405     fp_reval_params2.reval_output_asset                               :=  fp_reval_params1.reval_output_asset;
406     fp_reval_params2.reval_output_asset_mvmt.net_book_value           := 0;
407     fp_reval_params2.reval_output_asset_mvmt.adjusted_cost            := 0;
408     fp_reval_params2.reval_output_asset_mvmt.operating_acct           := 0;
409     fp_reval_params2.reval_output_asset_mvmt.reval_reserve            := 0;
410     fp_reval_params2.reval_output_asset_mvmt.deprn_amount             := 0;
411     fp_reval_params2.reval_output_asset_mvmt.deprn_reserve            := 0;
412     fp_reval_params2.reval_output_asset_mvmt.backlog_deprn_reserve    := 0;
413     fp_reval_params2.reval_output_asset_mvmt.general_fund             := 0;
414     fp_reval_params2.reval_output_asset_mvmt.current_reval_factor     := 1;
415     fp_reval_params2.reval_output_asset_mvmt.cumulative_reval_factor  := 1;
416     fp_reval_params2.reval_prev_rate_info                             :=  fp_reval_params1.reval_curr_rate_info_first;
417     fp_reval_params2.reval_asset_params.prev_ytd_deprn := fp_reval_params1.reval_asset_params.prev_ytd_deprn ;
418     fp_reval_params2.reval_asset_params.prev_ytd_opacc := fp_reval_params1.reval_asset_params.prev_ytd_opacc;
419   end if;
420   return true;
421 exception when others then
422   fp_reval_params2 := fp_reval_params2_old;
423   igi_iac_debug_pkg.debug_unexpected_msg(l_path);
424   return FALSE;
425 end;
426 
427 END;
428 
429