DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_GAINLOSS_PRO_PKG

Source


1 PACKAGE BODY FA_GAINLOSS_PRO_PKG AS
2 /* $Header: fagprob.pls 120.8.12020000.2 2012/07/20 11:46:55 spooyath ship $*/
3 /*=============================================================================
4 |  NAME         fagpsa                                                        |
5 |                                                                             |
6 |  FUNCTION     This function loads the control byte and performs all the     |
7 |               retirement and reinstatement calculations if needed.          |
8 |                                                                             |
9 |  HISTORY      1/12/89    M Chan       Created                               |
10 |                                                                             |
11 |               01/09/97   S Behura     Rewrote in PL/SQL                     |
12 |============================================================================*/
13 
14 Function fagpsa (ret in out nocopy fa_ret_types.ret_struct, today in date,
15                  cpd_name in varchar2, cpd_ctr in number,
16                  user_id in number, p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN IS
17 
18     bk                  fa_ret_types.book_struct;
19     dpr                 fa_STD_TYPES.dpr_struct;
20     pds_per_year        number;
21     p_pds_per_year      number;
22     cpd_num             number;
23     ret_pdnum           number;
24     pro_mth             number;
25     dsd_mth             number;
26     pro_fy              number;
27     dsd_fy              number;
28 
29     h_ret_status        varchar2(15);
30     h_retirement_id     number(15);
31 
32     l_calling_fn        varchar2(40) := 'FA_GAINLOSS_PRO_PKG.fagpsa';
33 
34     BEGIN <<FAGPSA>>
35 
36 -- dbms_output.put_line('in fagpsa 1');
37 
38        bk.raf := 0;
39        bk.adj_rate := 0;
40        bk.adjusted_cost := 0;
41        bk.current_cost := 0;
42        bk.recoverable_cost := 0;
43        bk.salvage_value := 0;
44        bk.itc_amount := 0;
45        bk.reval_amort_basis := 0;
46        bk.unrevalued_cost := 0;
47        dpr.adj_cost := 0;
48        dpr.rec_cost := 0;
49        dpr.reval_amo_basis := 0;
50        dpr.deprn_rsv := 0;
51        dpr.reval_rsv := 0;
52        dpr.adj_rate := 0;
53        dpr.rate_adj_factor := 0;
54        dpr.capacity := 0;
55        dpr.ltd_prod := 0;
56        dpr.adj_rec_cost := 0;
57        dpr.used_by_adjustment := TRUE;
58        dpr.deprn_override_used_by := 'RET';            --Bug11886090
59        dpr.mrc_sob_type_code := ret.mrc_sob_type_code; --Bug11886090
60 
61 -- dbms_output.put_line('in fagpsa 2');
62 
63        if not FA_GAINLOSS_MIS_PKG.faggbi(bk, ret, p_log_level_rec => p_log_level_rec) then
64 
65           fa_srvr_msg.add_message(
66              calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
67              name       => 'FA_RET_GENERIC_ERROR',
68              token1     => 'MODULE',
69              value1     => 'FAGGBI',
70              token2     => 'INFO',
71              value2     => 'FA_BOOKS',
72              token3     => 'ASSET',
73              value3     => ret.asset_number ,  p_log_level_rec => p_log_level_rec);
74 
75           return(FALSE);
76 
77        end if;
78 
79        -- Bug 7522956: Initialize method cache to be used
80        -- later in faxama
81        if (not fa_cache_pkg.fazccmt(
82                   bk.method_code,
83                   bk.lifemonths,
84                   p_log_level_rec => p_log_level_rec)) then
85 
86           fa_srvr_msg.add_message(
87              calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
88              name       => 'FA_RET_GENERIC_ERROR',
89              token1     => 'MODULE',
90              value1     => 'FAZCCMT',
91              token2     => 'PROCESS',
92              value2     => 'CACHE',
93              token3     => 'METHOD',
94              value3     => bk.method_code,
95              p_log_level_rec => p_log_level_rec);
96 
97           return(FALSE);
98 
99        end if;
100 -- dbms_output.put_line('in fagpsa 3');
101 
102        if not FA_GAINLOSS_MIS_PKG.fagpdi(
103                         ret.book, pds_per_year,
104                         bk.d_cal, cpd_name,
105                         cpd_num, bk.ret_prorate_date,
106                         ret_pdnum, p_pds_per_year,
107                         bk.fiscal_year_name, p_log_level_rec => p_log_level_rec) then
108 
109           fa_srvr_msg.add_message(
110              calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
111              name       => 'FA_RET_GENERIC_ERROR',
112              token1     => 'MODULE',
113              value1     => 'FAGPDI',
114              token2     => 'INFO',
115              value2     => 'Period',
116              token3     => 'ASSET',
117              value3     => ret.asset_number ,  p_log_level_rec => p_log_level_rec);
118 
119           return(FALSE);
120 
121        end if;
122 
123 -- dbms_output.put_line('in fagpsa 4');
124 
125        bk.pers_per_yr := pds_per_year;
126        h_retirement_id := ret.retirement_id;
127        h_ret_status := ret.status;
128 
129        if not FA_GAINLOSS_MIS_PKG.faggfy(bk.prorate_date, bk.p_cal,
130                                         pro_mth, pro_fy,
131                                         bk.fiscal_year_name, p_log_level_rec => p_log_level_rec) then
132 
133           fa_srvr_msg.add_message(
134              calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
135              name       => 'FA_RET_GENERIC_ERROR',
136              token1     => 'MODULE',
137              value1     => 'FAGGFY',
138              token2     => 'INFO',
139              value2     => 'Retirement Prorate Date',
140              token3     => 'ASSET',
141              value3     => ret.asset_number ,  p_log_level_rec => p_log_level_rec);
142 
143           return(FALSE);
144 
145        end if;
146 
147        dpr.prorate_jdate := bk.prorate_jdate;
148        dpr.deprn_start_jdate := bk.deprn_start_jdate;
149        bk.prorate_mth := pro_mth;
150        bk.prorate_fy := pro_fy;
151 
152        if not FA_GAINLOSS_MIS_PKG.faggfy(bk.deprn_start_date, bk.p_cal,
153                                         dsd_mth, dsd_fy,
154                                         bk.fiscal_year_name, p_log_level_rec => p_log_level_rec) then
155 
156           fa_srvr_msg.add_message(
157              calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
158              name       => 'FA_RET_GENERIC_ERROR',
159              token1     => 'MODULE',
160              value1     => 'FAGGFY',
161              token2     => 'INFO',
162              value2     => 'Deprn Prorate Date',
163              token3     => 'ASSET',
164              value3     => ret.asset_number ,  p_log_level_rec => p_log_level_rec);
165 
166           return(FALSE);
167 
168        end if;
169 
170        bk.dsd_mth := dsd_mth;
171        bk.dsd_fy := dsd_fy;
172 
173        /* Partially fill in the deprn structure */
174 
175        dpr.asset_id := ret.asset_id;
176        dpr.book := ret.book;
177        dpr.adj_cost := bk.adjusted_cost;
178        dpr.rec_cost := bk.recoverable_cost;
179        dpr.adj_rate := bk.adj_rate;
180        dpr.rate_adj_factor := bk.raf;
181        dpr.reval_amo_basis := bk.reval_amort_basis;
182        dpr.adj_capacity := bk.adj_capacity;
183        dpr.capacity := bk.adj_capacity;
184        dpr.ltd_prod := 0;
185 
186        dpr.adj_rec_cost := bk.adj_rec_cost;
187        dpr.salvage_value := bk.salvage_value;
188        dpr.old_adj_cost := bk.old_adj_cost;
189        dpr.formula_factor := bk.formula_factor;
190        dpr.set_of_books_id := ret.set_of_books_id;
191 
192        /* Copy FA_BOOKS.ANNUAL_DEPRN_ROUNDING_FLAG from bk_struct to deprn_struct */
193 
194        /* BUG# 2440378: Convert internal number code for rounding to string code.
195           dpr.deprn_rounding_flag := bk.deprn_rounding_flag;
196        */
197        if (bk.deprn_rounding_flag is null
198            or bk.deprn_rounding_flag=0) then
199           dpr.deprn_rounding_flag := NULL;
200        elsif bk.deprn_rounding_flag=1 then
201           dpr.deprn_rounding_flag := 'ADD';
202        elsif bk.deprn_rounding_flag=2 then
203           dpr.deprn_rounding_flag := 'ADJ';
204        elsif bk.deprn_rounding_flag=3 then
205           dpr.deprn_rounding_flag := 'RET';
206        elsif bk.deprn_rounding_flag=4 then
207           dpr.deprn_rounding_flag := 'REV';
208        elsif bk.deprn_rounding_flag=5 then
209           dpr.deprn_rounding_flag := 'TFR';
210        elsif bk.deprn_rounding_flag=6 then
211           dpr.deprn_rounding_flag := 'RES';
212        elsif bk.deprn_rounding_flag=7 then
213           dpr.deprn_rounding_flag := 'OVE';
214        else
215           dpr.deprn_rounding_flag := NULL;
216        end if;
217 
218 
219        dpr.asset_num := ret.asset_number;
220        dpr.calendar_type := bk.d_cal;
221        dpr.ceil_name := bk.ceiling_name;
222        dpr.bonus_rule := bk.bonus_rule;
223        dpr.method_code := bk.method_code;
224        dpr.jdate_in_service := bk.jdis;
225        dpr.life := bk.lifemonths;
226        dpr.y_begin := bk.cpd_fiscal_year;
227        dpr.y_end := bk.cpd_fiscal_year;
228 
229        /* Adding the following for short tax years */
230        dpr.short_fiscal_year_flag := bk.short_fiscal_year_flag;
231        dpr.conversion_date := bk.conversion_date;
232        dpr.prorate_date := bk.prorate_date;
233        dpr.orig_deprn_start_date := bk.orig_deprn_start_date;
234 
235        if ret.status = 'PENDING' then
236 
237           if not FA_GAINLOSS_RET_PKG.fagret(ret, bk, dpr, today, cpd_ctr,
238                                         cpd_num,
239                                         ret_pdnum, user_id, p_log_level_rec => p_log_level_rec) then
240 
241              fa_srvr_msg.add_message(
242                calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
243                name       => 'FA_RET_PROCESS_ERROR',
244                token1     => 'MODULE',
245                value1     => 'FAGRET',
246                token2     => 'PROCESS',
247                value2     => 'retire',
248                token3     => 'ASSET',
249                value3     => ret.asset_number ,  p_log_level_rec => p_log_level_rec);
250 
251              return(FALSE);
252 
253           end if;
254 
255        else
256 
257           if not FA_GAINLOSS_UND_PKG.fagrin(ret, bk, dpr, today, cpd_ctr,
258                                                         cpd_num,
259                                                         user_id, p_log_level_rec => p_log_level_rec) then
260 
261              fa_srvr_msg.add_message(
262                calling_fn => 'fa_gainloss_pro_pkg.fagpsa',
263                name       => 'FA_RET_PROCESS_ERROR',
264                token1     => 'MODULE',
265                value1     => 'FAGRIN',
266                token2     => 'PROCESS',
267                value2     => 'reinstate',
268                token3     => 'ASSET',
269                value3     => ret.asset_number ,  p_log_level_rec => p_log_level_rec);
270 
271              return(FALSE);
272 
273           end if;
274 
275        end if;
276 
277        return(TRUE);
278 
279     END FAGPSA;
280 
281 
282 END FA_GAINLOSS_PRO_PKG;    -- End of Package EFA_RPRO