DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_BASIS_OVERRIDE_INIT_PKG

Source


1 PACKAGE BODY FA_BASIS_OVERRIDE_INIT_PKG as
2 /* $Header: FADBOIB.pls 120.26.12020000.2 2012/07/23 11:07:15 rmandali ship $ */
3 
4 g_fy fa_deprn_periods.fiscal_year%TYPE;
5 g_p_num fa_deprn_periods.period_num%TYPE;
6 g_p_counter fa_deprn_periods.period_counter%TYPE;
7 g_book fa_deprn_periods.book_type_code%TYPE;
8 
9 g_log_level_rec fa_api_types.log_level_rec_type;
10 
11 FUNCTION facodda(book                     in            varchar2,
12                  used_by_adjustment       in            number,
13                  asset_id                 in            number,
14                  bonus_rule               in            varchar2,
15                  fyctr                    in            number,
16                  perd_ctr                 in            number,
17                  prod_rate_src_flag       in            number,
18                  deprn_projecting_flag    in            number,
19                  p_ytd_deprn              in            NUMBER,
20                  p_bonus_ytd_deprn        in            NUMBER,
21                  override_depr_amt           out nocopy number,
22                  override_bonus_amt          out nocopy number,
23                  deprn_override_flag         out nocopy varchar2,
24                  return_code                 out nocopy number,
25                  p_mrc_sob_type_code      in            VARCHAR2,
26                  p_set_of_books_id        in            NUMBER,
27                  p_over_depreciate_option in            NUMBER   default null,
28                  p_asset_type             in            VARCHAR2 default null,
29                  p_deprn_rsv              in            NUMBER   default null,
30                  p_cur_adj_cost           in            NUMBER   DEFAULT NULL
31                 ) return number is
32 
33    h_used_by_adjustment_bool      boolean;
34    h_deprn_projecting_flag_bool   boolean;
35    h_prod_rate_src_flag_bool      boolean;
36    l_deprn_override_used_by       varchar2(30); --Bug11886090
37 
38    l_calling_fn   varchar2(40) := 'fa_basis_override_init_pkg.facodda';
39    facodda_err    EXCEPTION;
40 
41 begin <<FACODDA>>
42 
43   -- This is just cover process to call the function FAODDA on FA_CDE_PKG
44 
45    if (not g_log_level_rec.initialized) then
46       if (NOT fa_util_pub.get_log_level_rec ( x_log_level_rec =>  g_log_level_rec)) then
47          raise facodda_err;
48       end if;
49    end if;
50 
51    if (g_log_level_rec.statement_level) then
52       fa_debug_pkg.add('facodda','Just Start the cover program','', p_log_level_rec => g_log_level_rec);
53    end if;
54 
55    if used_by_adjustment = 1 then
56       h_used_by_adjustment_bool := TRUE;
57       l_deprn_override_used_by := 'ADJ'; --Bug11886090
58    else
59       h_used_by_adjustment_bool := FALSE;
60       l_deprn_override_used_by := 'DEP'; --Bug11886090
61    end if;
62 
63    if deprn_projecting_flag = 1 then
64       h_deprn_projecting_flag_bool := TRUE;
65    else
66       h_deprn_projecting_flag_bool := FALSE;
67    end if;
68 
69    if prod_rate_src_flag = 1 then
70       h_prod_rate_src_flag_bool := TRUE;
71    else
72       h_prod_rate_src_flag_bool := FALSE;
73    end if;
74 
75    if (g_log_level_rec.statement_level) then
76       fa_debug_pkg.add('facodda','Just Call the main program','faodda', p_log_level_rec => g_log_level_rec);
77       fa_debug_pkg.add('facodda','book',book, p_log_level_rec => g_log_level_rec);
78       fa_debug_pkg.add('facodda','used_by_adjustment',used_by_adjustment, p_log_level_rec => g_log_level_rec);
79       fa_debug_pkg.add('facodda','l_deprn_override_used_by',l_deprn_override_used_by, g_log_level_rec);
80       fa_debug_pkg.add('facodda','asset_id',asset_id, p_log_level_rec => g_log_level_rec);
81       fa_debug_pkg.add('facodda','bonus_rule',bonus_rule, p_log_level_rec => g_log_level_rec);
85       fa_debug_pkg.add('facodda','deprn_projecting_flag',deprn_projecting_flag, p_log_level_rec => g_log_level_rec);
82       fa_debug_pkg.add('facodda','fyctr',fyctr, p_log_level_rec => g_log_level_rec);
83       fa_debug_pkg.add('facodda','perd_ctr',perd_ctr, p_log_level_rec => g_log_level_rec);
84       fa_debug_pkg.add('facodda','prod_rate_src_flag',prod_rate_src_flag, p_log_level_rec => g_log_level_rec);
86       fa_debug_pkg.add('facodda','p_ytd_deprn', p_ytd_deprn, p_log_level_rec => g_log_level_rec);
87       fa_debug_pkg.add('facodda','p_bonus_ytd_deprn', p_bonus_ytd_deprn, p_log_level_rec => g_log_level_rec);
88       fa_debug_pkg.add('facodda','override_depr_amt',override_depr_amt, p_log_level_rec => g_log_level_rec);
89       fa_debug_pkg.add('facodda','override_bonus_amt',override_bonus_amt, p_log_level_rec => g_log_level_rec);
90       fa_debug_pkg.add('facodda','deprn_override_flag',deprn_override_flag, p_log_level_rec => g_log_level_rec);
91       fa_debug_pkg.add('facodda','return_code',return_code, p_log_level_rec => g_log_level_rec);
92       fa_debug_pkg.add('facodda','p_mrc_sob_type_code',p_mrc_sob_type_code, p_log_level_rec => g_log_level_rec);
93    end if;
94 
95    if not FA_CDE_PKG.faodda(book                     => book,
96                             Deprn_Override_Used_By   => l_deprn_override_used_by, --Bug11886090
97                             asset_id                 => asset_id,
98                             bonus_rule               => bonus_rule,
99                             fyctr                    => fyctr,
100                             perd_ctr                 => perd_ctr,
101                             prod_rate_src_flag       => h_prod_rate_src_flag_bool,
102                             deprn_projecting_flag    => h_deprn_projecting_flag_bool,
103                             p_ytd_deprn              => p_ytd_deprn,
104                             p_bonus_ytd_deprn        => p_bonus_ytd_deprn,
105                             override_depr_amt        => override_depr_amt,
106                             override_bonus_amt       => override_bonus_amt,
107                             deprn_override_flag      => deprn_override_flag,
108                             return_code              => return_code,
109                             p_mrc_sob_type_code      => p_mrc_sob_type_code,
110                             p_set_of_books_id        => p_set_of_books_id,
111                             p_over_depreciate_option => p_over_depreciate_option,
112 			    p_asset_type             => p_asset_type,
113 			    p_deprn_rsv              => p_deprn_rsv,
114 			    p_cur_adj_cost           => p_cur_adj_cost,
115                             p_log_level_rec          => g_log_level_rec) then
116       raise facodda_err;
117    end if;
118 
119    if (g_log_level_rec.statement_level) then
120       fa_debug_pkg.add('facodda','deprn_projecting_flag',deprn_projecting_flag, p_log_level_rec => g_log_level_rec);
121       fa_debug_pkg.add('facodda','override_depr_amt',override_depr_amt, p_log_level_rec => g_log_level_rec);
122       fa_debug_pkg.add('facodda','override_bonus_amt',override_bonus_amt, p_log_level_rec => g_log_level_rec);
123       fa_debug_pkg.add('facodda','deprn_override_flag',deprn_override_flag, p_log_level_rec => g_log_level_rec);
124       fa_debug_pkg.add('facodda','return_code',return_code, p_log_level_rec => g_log_level_rec);
125    end if;
126 
127    return 0;
128 
129 exception
130    WHEN facodda_err THEN
131       fa_srvr_msg.add_message (calling_fn => l_calling_fn, p_log_level_rec => g_log_level_rec);
132 
133       if (g_log_level_rec.statement_level) then
134          FA_DEBUG_PKG.dump_debug_messages(max_mesgs => 0, p_log_level_rec => g_log_level_rec);
135       end if;
136 
137       return 1;
138 
139    when others then
140       fa_srvr_msg.add_message (calling_fn => l_calling_fn, p_log_level_rec => g_log_level_rec);
141 
142       if (g_log_level_rec.statement_level) then
143          FA_DEBUG_PKG.dump_debug_messages(max_mesgs => 0, p_log_level_rec => g_log_level_rec);
144       end if;
145 
146       return 1;
147 
148 end FACODDA;
149 
150 /* Function to call faxcdb */
151 FUNCTION faxccdb (event_type in varchar2,
152                  asset_id in number default 0,
153                  group_asset_id in number default 0,
154                  book_type_code in varchar2 default null,
155                  asset_type in varchar2 default null,
156                  depreciate_flag in varchar2 default null,
157                  method_code in varchar2 default null,
158                  life_in_months in number default 0,
159                  method_id in number default 0,
160                  method_type in varchar2 default null,
161                  calc_basis in varchar2 default null,
162                  adjustment_amount in number default 0,
163                  transaction_flag in varchar2 default null,
164                  cost in number default 0,
165                  salvage_value in number default 0,
166                  recoverable_cost in number default 0,
167                  adjusted_cost in number default 0,
168                  current_total_rsv in number default 0,
169                  current_rsv in number default 0,
170                  current_total_ytd in number default 0,
171                  current_ytd in number default 0,
172                  hyp_basis in number default 0,
173                  hyp_total_rsv in number default 0,
174                  hyp_rsv in number default 0,
175                  hyp_total_ytd in number default 0,
176                  hyp_ytd in number default 0,
177                  old_adjusted_cost in number default 0,
178                  old_raf in number default 0,
179                  old_formula_factor in number default 0,
180                  new_adjusted_cost out NOCOPY number,
181                  new_raf out NOCOPY number,
182                  new_formula_factor out NOCOPY number,
186                  p_eofy_reserve in number default null,
183                  -- new parameter for group depreciation
184                  p_period_counter in number default null,  -- period num
185                  p_fiscal_year in number default null,
187                  p_tracking_method in varchar2 default null,
188                  p_allocate_to_fully_rsv_flag in varchar2 default null,
189                  p_allocate_to_fully_ret_flag in varchar2 default null,
190                  p_depreciation_option in varchar2 default null,
191                  p_member_rollup_flag in varchar2 default null,
192                  p_eofy_recoverable_cost in number default null,
193                  p_eop_recoverable_cost in number default null,
194                  p_eofy_salvage_value in number default null,
195                  p_eop_salvage_value in number default null,
196                  p_used_by_adjustment in number default null,
197                  p_eofy_flag in varchar2  default null,
198                  -- new parameter for polish enhancement
199                  p_polish_rule in number default
200                     FA_STD_TYPES.FAD_DBR_POLISH_NONE,
201                  p_deprn_factor in number default null,
202                  p_alternate_deprn_factor in number default null,
203                  p_impairment_reserve number default 0, -- P2IAS36
204                  p_mrc_sob_type_code in varchar2 default 'N',
205                  p_set_of_books_id in number
206                  --
207                  ) return number is
208 
209   h_rule_in           fa_std_types.fa_deprn_rule_in_struct;
210   h_rule_out          fa_std_types.fa_deprn_rule_out_struct;
211 
212   -- Added for group depreciation
213   Cursor C_PERIOD_COUNTER (
214                            l_book_type_code  varchar2,
215                            l_fiscal_year     number,
216                            l_period_number   number)
217   is
218     select dp.period_counter
219     from   FA_DEPRN_PERIODS dp
220     where  dp.book_type_code = l_book_type_code
221     and    dp.fiscal_year = l_fiscal_year
222     and    dp.period_num = l_period_number;
223 
224   Cursor C_PERIOD_COUNTER_MRC (
225                            l_book_type_code  varchar2,
226                            l_fiscal_year     number,
227                            l_period_number   number)
228   is
229     select dp.period_counter
230     from   FA_MC_DEPRN_PERIODS dp
231     where  dp.book_type_code = l_book_type_code
232     and    dp.fiscal_year = l_fiscal_year
233     and    dp.period_num = l_period_number
234     and    dp.set_of_books_id = p_set_of_books_id;
235 
236   Cursor C_METHOD_CODE (
237                         l_asset_id        number,
238                         l_book_type_code  varchar2)
239   is
240     select bk.deprn_method_code,
241            bk.life_in_months
242     from   FA_BOOKS bk
243     where  bk.asset_id = l_asset_id
244     and    bk.book_type_code = l_book_type_code
245     and    bk.date_ineffective is null;
246 
247   Cursor C_METHOD_CODE_MRC (
248                         l_asset_id        number,
249                         l_book_type_code  varchar2)
250   is
251     select bk.deprn_method_code,
252            bk.life_in_months
253     from   FA_MC_BOOKS bk
254     where  bk.asset_id = l_asset_id
255     and    bk.book_type_code = l_book_type_code
256     and    bk.date_ineffective is null
257     and    bk.set_of_books_id = p_set_of_books_id;
258 
259   h_eofy_recoverable_cost  NUMBER;
260   h_eop_recoverable_cost   NUMBER;
261   h_eofy_salvage_value     NUMBER;
262   h_eop_salvage_value      NUMBER;
263   h_used_by_adjustment     VARCHAR2(15);
264   h_eofy_flag              VARCHAR2(1);
265 
266   l_chk_count              NUMBER;
267   l_calling_fn             varchar2(40) := 'fa_basis_override_init_pkg.faxccdb';
268   faxccdb_err              exception;
269 
270 BEGIN <<FAXCCDB>>
271 
272   -- fa_debug_pkg.initialize; -- removed to not clear the message stack.
273 
274   -- This is just cover process to call the function
275   -- of faxcdb on FA_CALC_DEPRN_BASIS1_PKG
276 
277    if (not g_log_level_rec.initialized) then
278       if (NOT fa_util_pub.get_log_level_rec (
279                 x_log_level_rec =>  g_log_level_rec
280       )) then
281          raise faxccdb_err;
282       end if;
283    end if;
284 
285    if (g_log_level_rec.statement_level) then
286       fa_debug_pkg.add('faxccdb','Just Start the cover program','', p_log_level_rec => g_log_level_rec);
287    end if;
288 
289   -- Set default amount to out parameters
290   new_adjusted_cost := nvl(old_adjusted_cost,0);
291   new_raf := nvl(old_raf,1);
292   new_formula_factor := nvl(new_formula_factor,1);
293 
294   /* set h_rule_in paremters */
295 
296   h_rule_in.event_type := event_type;
297   h_rule_in.asset_id := asset_id;
298   if group_asset_id = 0 then
299     h_rule_in.group_asset_id := null;
300   else
301     h_rule_in.group_asset_id := group_asset_id;
302   end if;
303   h_rule_in.book_type_code := book_type_code;
304   h_rule_in.asset_type := asset_type;
305   h_rule_in.depreciate_flag := depreciate_flag;
306   h_rule_in.method_code := method_code;
307   h_rule_in.life_in_months := life_in_months;
308   h_rule_in.method_id := method_id;
309   h_rule_in.method_type := method_type;
310   h_rule_in.calc_basis := calc_basis;
311   h_rule_in.adjustment_amount := adjustment_amount;
312   h_rule_in.transaction_flag := transaction_flag;
313   h_rule_in.cost := cost;
314   h_rule_in.salvage_value := salvage_value;
315   h_rule_in.recoverable_cost := recoverable_cost;
319   h_rule_in.current_total_ytd := current_total_ytd;
316   h_rule_in.adjusted_cost := adjusted_cost;
317   h_rule_in.current_total_rsv := current_total_rsv;
318   h_rule_in.current_rsv := current_rsv;
320   h_rule_in.current_ytd := current_ytd;
321   h_rule_in.hyp_basis := hyp_basis;
322   h_rule_in.hyp_total_rsv := hyp_total_rsv;
323   h_rule_in.hyp_rsv := hyp_rsv;
324   h_rule_in.hyp_total_ytd := hyp_total_ytd;
325   h_rule_in.hyp_ytd := hyp_ytd;
326   h_rule_in.old_adjusted_cost := old_adjusted_cost;
327   h_rule_in.old_raf := old_raf;
328   h_rule_in.old_formula_factor := old_formula_factor;
329 
330   -- Added for Group depreciation
331   h_rule_in.fiscal_year := p_fiscal_year;
332   h_rule_in.period_num  := p_period_counter;
333 
334   -- Added for Polish Tax depreciation
335   h_rule_in.polish_rule := p_polish_rule;
336   h_rule_in.deprn_factor := p_deprn_factor;
337   h_rule_in.alternate_deprn_factor := p_alternate_deprn_factor;
338 
339   if event_type = 'AFTER_DEPRN' then
340     if p_mrc_sob_type_code <>'R' then
341       if g_book = book_type_code and
342          nvl(g_fy, -99) = p_fiscal_year and
343          nvl(g_p_num, -99) = p_period_counter then
344          h_rule_in.period_counter:= g_p_counter;
345       else
346          OPEN C_PERIOD_COUNTER(book_type_code,p_fiscal_year,p_period_counter);
347          FETCH C_PERIOD_COUNTER into h_rule_in.period_counter;
348          CLOSE C_PERIOD_COUNTER;
349 
350          g_book:= book_type_code;
351          g_fy:= p_fiscal_year;
352          g_p_num:= p_period_counter;
353          g_p_counter:= h_rule_in.period_counter;
354       end if;
355     else
356       if g_book = book_type_code and
357          nvl(g_fy, -99) = p_fiscal_year and
358          nvl(g_p_num, -99) = p_period_counter then
359          h_rule_in.period_counter:= g_p_counter;
360       else
361          OPEN C_PERIOD_COUNTER_MRC(book_type_code,p_fiscal_year,p_period_counter);
362          FETCH C_PERIOD_COUNTER_MRC into h_rule_in.period_counter;
363          CLOSE C_PERIOD_COUNTER_MRC;
364 
365          g_book:= book_type_code;
366          g_fy:= p_fiscal_year;
367          g_p_num:= p_period_counter;
368          g_p_counter:= h_rule_in.period_counter;
369       end if;
370     end if;
371   else
372     h_rule_in.period_counter := p_period_counter;
373   end if;
374 
375   h_rule_in.eofy_reserve := p_eofy_reserve;
376   h_rule_in.tracking_method := p_tracking_method;
377   h_rule_in.allocate_to_fully_rsv_flag := p_allocate_to_fully_rsv_flag;
378   h_rule_in.allocate_to_fully_ret_flag := p_allocate_to_fully_ret_flag;
379   h_rule_in.depreciation_option := p_depreciation_option;
380   h_rule_in.member_rollup_flag := p_member_rollup_flag;
381   h_rule_in.eofy_recoverable_cost := p_eofy_recoverable_cost;
382   h_rule_in.eop_recoverable_cost := p_eop_recoverable_cost;
383   h_rule_in.eofy_salvage_value := p_eofy_salvage_value;
384   h_rule_in.eop_salvage_value := p_eop_salvage_value;
385   h_rule_in.used_by_adjustment := p_used_by_adjustment;
386   h_rule_in.eofy_flag := p_eofy_flag;
387   h_rule_in.mrc_sob_type_code := nvl(p_mrc_sob_type_code,'N');
388   h_rule_in.set_of_books_id := p_set_of_books_id;
389 
390   -- Check method_code
391 
392   if (g_log_level_rec.statement_level) then
393     fa_debug_pkg.add('faxccdb','h_rule_in.method_code(1)',h_rule_in.method_code);
394     fa_debug_pkg.add('faxccdb','h_rule_in.life_in_months(1)',h_rule_in.life_in_months);
395   end if;
396 
397 --  select count(1)
398 --  into   l_chk_count
399 --  from   FA_METHODS MT
400 --  where  mt.method_code = h_rule_in.method_code
401 --  and    nvl(mt.life_in_months,0) = nvl(h_rule_in.life_in_months,0);
402 
403    -- When l_chk_count is 0, get method_code and life_in_months
404 --  if l_chk_count =0 then
405 --    if p_mrc_sob_type_code <>'R' then
406 --      OPEN  C_METHOD_CODE (asset_id, book_type_code);
407 --      FETCH C_METHOD_CODE into h_rule_in.method_code,
408 --                               h_rule_in.life_in_months;
409 --      CLOSE C_METHOD_CODE;
410 --    else --MRC
411 --      OPEN  C_METHOD_CODE_MRC (asset_id, book_type_code);
412 --      FETCH C_METHOD_CODE_MRC into h_rule_in.method_code,
413 --                                   h_rule_in.life_in_months;
414 --      CLOSE C_METHOD_CODE_MRC;
415 --    end if;
416 --  end if;
417 
418   if (g_log_level_rec.statement_level) then
419     fa_debug_pkg.add('faxccdb','h_rule_in.method_code(2)',h_rule_in.method_code);
420     fa_debug_pkg.add('faxccdb','h_rule_in.life_in_months(2)',h_rule_in.life_in_months);
421     fa_debug_pkg.add('faxccdb','method_type',method_type, p_log_level_rec => g_log_level_rec);
422     fa_debug_pkg.add('faxccdb','calc_basis',calc_basis, p_log_level_rec => g_log_level_rec);
423   end if;
424 
425   -- Get rate_source_rule and deprn_basis_rule
426   -- to avoid that method_type and calc_basis are set null
427   if method_type is null or calc_basis is null then
428 
429     if not fa_cache_pkg.fazccmt
430           (X_method                => h_rule_in.method_code,
431            X_life                  => h_rule_in.life_in_months
432           , p_log_level_rec => g_log_level_rec) then
433 
434       raise faxccdb_err;
435 
436     end if;
437 
438      h_rule_in.method_id   := fa_cache_pkg.fazccmt_record.method_id;
439      h_rule_in.method_type := fa_cache_pkg.fazccmt_record.rate_source_rule;
440      h_rule_in.calc_basis  := fa_cache_pkg.fazccmt_record.deprn_basis_rule;
441 
442      if (fa_cache_pkg.fazccmt_record.deprn_basis_rule_id is not null) then
446      -- We don't want to use this logic for Polish code.
443         h_rule_in.polish_rule := fa_cache_pkg.fazcdbr_record.polish_rule;
444      end if;
445 
447      if (h_rule_in.polish_rule is not null) and
448         (h_rule_in.polish_rule <> FA_STD_TYPES.FAD_DBR_POLISH_NONE) then
449         return 0;
450      end if;
451   end if;
452 
453   --
454   -- eofy and eop amounts are necessary only if deprn basis rules are following
455   --   need eop amounts: 'PERIOD END AVERAGE', 'BEGINNING PERIOD'
456   --   need eofy amounts: 'YEAR TO DATE AVERAGE', 'YEAR END BALANCE WITH HALF YEAR RULE'
457   --
458   if (fa_cache_pkg.fazcdbr_record.rule_name in ('PERIOD END AVERAGE', 'BEGINNING PERIOD',
459                                                 'YEAR TO DATE AVERAGE',
460                                                 'YEAR END BALANCE WITH HALF YEAR RULE')) then
461      ---------------------------------------------
462      -- Get end of fiscal year
463      -- and end of period recoverable cost
464      -- and salvage value
465      ---------------------------------------------
466      -- Get eofy recoverable cost and salvage value
467      if    p_eofy_recoverable_cost is null
468         or p_eofy_salvage_value is null
469         or p_eop_recoverable_cost is null
470         or p_eop_salvage_value is null
471      then
472 
473        if (not FA_CALC_DEPRN_BASIS1_PKG.GET_EOFY_EOP
474                 (
475                  p_asset_id              => h_rule_in.asset_id,
476                  p_book_type_code        => h_rule_in.book_type_code,
477                  p_fiscal_year           => h_rule_in.fiscal_year,
478                  p_period_num            => h_rule_in.period_num,
479                  p_asset_type            => h_rule_in.asset_type,
480                  p_recoverable_cost      => h_rule_in.recoverable_cost,
481                  p_salvage_value         => h_rule_in.salvage_value,
482                  p_period_counter        => p_period_counter,
483                  p_mrc_sob_type_code     => h_rule_in.mrc_sob_type_code,
484                  p_set_of_books_id       => h_rule_in.set_of_books_id,
485                  x_eofy_recoverable_cost => h_rule_in.eofy_recoverable_cost,
486                  x_eofy_salvage_value    => h_rule_in.eofy_salvage_value,
487                  x_eop_recoverable_cost  => h_rule_in.eop_recoverable_cost,
488                  x_eop_salvage_value     => h_rule_in.eop_salvage_value
489                 , p_log_level_rec => g_log_level_rec))
490        then
491          h_rule_in.eofy_recoverable_cost := nvl(p_eofy_recoverable_cost,0);
492          h_rule_in.eofy_salvage_value    := nvl(p_eofy_salvage_value,0);
493          h_rule_in.eop_recoverable_cost  := nvl(p_eop_recoverable_cost,0);
494          h_rule_in.eop_salvage_value     := nvl(p_eop_salvage_value,0);
495        end if;
496      end if; -- End of getting eofy and eop recoverable cost and salvage value
497 
498   else
499       h_rule_in.eofy_recoverable_cost := 0;
500       h_rule_in.eofy_salvage_value    := 0;
501       h_rule_in.eop_recoverable_cost  := 0;
502       h_rule_in.eop_salvage_value     := 0;
503   end if; -- (fa_cache_pkg.fazcdbr_record.rule_name in (....
504 
505   --------------------------------------------
506   -- Set 0 to the end of fiscal year
507   -- and end of period recoverable cost
508   -- and salvage value if they returned 0
509   --------------------------------------------
510   h_rule_in.eofy_recoverable_cost := nvl(h_rule_in.eofy_recoverable_cost,0);
511   h_rule_in.eofy_salvage_value    := nvl(h_rule_in.eofy_salvage_value,0);
512   h_rule_in.eop_recoverable_cost  := nvl(h_rule_in.eop_recoverable_cost,0);
513   h_rule_in.eop_salvage_value     := nvl(h_rule_in.eop_salvage_value,0);
514 
515   h_rule_in.impairment_reserve    := p_impairment_reserve; -- P2IAS36
516 
517   -- Initialize output parameters
518 
519   h_rule_out.new_adjusted_cost := 0;
520   h_rule_out.new_raf := 1;
521   h_rule_out.new_formula_factor := 1;
522 
523   ------------------------------------------------------
524   -- Performance Improvement:
525   -- If method_type is FLAT, set null to life_in_months
526   -- to reduce the loop on fazccmt which faxcdb calls
527   ------------------------------------------------------
528   if h_rule_in.method_type = 'FLAT' then
529     h_rule_in.life_in_months := null;
530   end if;
531 
532   --------------------------------------------------
533   -- Call Depreciable Basis Formula PL/SQL function
534   --------------------------------------------------
535 
536   if not FA_CALC_DEPRN_BASIS1_PKG.faxcdb
537                      (
538                       rule_in     => h_rule_in,
539                       rule_out    => h_rule_out
540                      , p_log_level_rec => g_log_level_rec)
541             then
542 
543               raise faxccdb_err;
544 
545             END IF;
546 
547              /* set rule_out parameters */
548             new_adjusted_cost := h_rule_out.new_adjusted_cost;
549             new_raf := h_rule_out.new_raf;
550             new_formula_factor := h_rule_out.new_formula_factor;
551 
552             return 0;
553 
554 exception
555   when faxccdb_err then
556     fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => g_log_level_rec);
557     return 1;
558 
559   when others then
560     fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => g_log_level_rec);
561     return 1;
562 
563 end faxccdb;
564 
565 
566 FUNCTION faoddat(deprn_override_trigger in number
567                 ) return number is
568              h_deprn_override_trigger  boolean;
569 
570              l_calling_fn  varchar2(40) := 'fa_basis_override_init_pkg.faoddat';
571 
572 begin <<FAODDAT>>
573 
574    -- fa_debug_pkg.initialize; -- removed to not clear the message stack.
575 
576    if (not g_log_level_rec.initialized) then
577       if (NOT fa_util_pub.get_log_level_rec (
578                 x_log_level_rec =>  g_log_level_rec
579       )) then
580          null;
581       end if;
582    end if;
583 
584    if deprn_override_trigger = 1 then
585       h_deprn_override_trigger := TRUE;
586    else
587       h_deprn_override_trigger := FALSE;
588    end if;
589 
590    fa_std_types.deprn_override_trigger_enabled:= h_deprn_override_trigger;
591 
592    if (g_log_level_rec.statement_level) then
593       fa_debug_pkg.add('faoddat','faoddat: deprn_override_trigger_enabled', fa_std_types.deprn_override_trigger_enabled, p_log_level_rec => g_log_level_rec);
594    end if;
595 
596    return 0;
597 
598 exception
599   when others then
600     fa_srvr_msg.add_sql_error (calling_fn => l_calling_fn, p_log_level_rec => g_log_level_rec);
601     return 1;
602 
603 end faoddat;
604 END FA_BASIS_OVERRIDE_INIT_PKG;
605