DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_SORP_UTIL_PVT

Source


1 PACKAGE BODY FA_SORP_UTIL_PVT as
2 /* $Header: FAVSPUTB.pls 120.2.12010000.1 2009/07/21 12:37:48 glchen noship $   */
3 
4 -- Determine if debug is enabled
5 
6 
7 /* This function must be used only when the cache information is not available.
8    Whenever possible, please check whether SORP is enabled using sorp_enabled_flag
9    available in cache */
10 /*#
11  * Thus function accepts a Book Type Code and returns True if SORP
12  * is enabled for that book. False otherwise.
13  * @param p_book_type_code The book for which SORP enabled check must be performed
14  * @rep:scope private
15  * @rep:lifecycle active
16  * @rep:displayname Is SORP Enabled
17  * @rep:compatibility S
18 */
19 FUNCTION IS_SORP_ENABLED(p_book_type_code FA_BOOK_CONTROLS.BOOK_TYPE_CODE%TYPE,
20 p_log_level_rec       IN     fa_api_types.log_level_rec_type default null)
21 RETURN BOOLEAN
22 IS
23     l_sorp_enabled_flag VARCHAR2(1);
24     l_calling_fn varchar2(35) := 'FA_SORP_UTIL_PVT.IS_SORP_ENABLED';
25 BEGIN
26     IF (p_log_level_rec.statement_level) then
27         fa_debug_pkg.add
28                (l_calling_fn,
29                 'Book Type Code Passed is ',
30                 p_book_type_code, p_log_level_rec => p_log_level_rec);
31     End If;
32 
33     SELECT SORP_ENABLED_FLAG
34     INTO l_sorp_enabled_flag
35     FROM FA_BOOK_CONTROLS
36     WHERE BOOK_TYPE_CODE = p_book_type_code;
37 
38     IF (p_log_level_rec.statement_level) then
39         fa_debug_pkg.add
40                (l_calling_fn,
41                 'SORP Enabled Flag is ',
42                 l_sorp_enabled_flag, p_log_level_rec => p_log_level_rec);
43     End If;
44 
45     IF l_sorp_enabled_flag = 'Y' Then
46         RETURN TRUE;
47     Else
48         RETURN FALSE;
49     End If;
50 
51 EXCEPTION
52     WHEN NO_DATA_FOUND THEN
53         RETURN FALSE;
54     WHEN OTHERS THEN
55         fa_srvr_msg.add_sql_error
56             (calling_fn => l_calling_fn, p_log_level_rec => p_log_level_rec);
57         RETURN FALSE;
58 END IS_SORP_ENABLED;
59 
60 
61 /*#
62  * Thus function is used to create neutralizing accounting entries for SORP
63  * compliance. This is an overloaded function which is called from several locations
64  * like revaluation, depreciation, impairments, transfers, etc. This overloaded
65  * function is a simplified version of the main create_sorp_neutral_acct function.
66  * @param p_amount The amount for which neutralizing entrie needs to be created
67  * @param p_reversal 'Y' indicates that a reversal entrie needs to be created
68  * @param p_adj Adjustment record needs to be populated with information like book, etc
69  * @param p_created_by standard who column information
70  * @param p_creation_date standard who column information
71  * @rep:scope private
72  * @rep:lifecycle active
73  * @rep:displayname create_sorp_neutral_acct
74  * @rep:compatibility S
75 */
76 FUNCTION create_sorp_neutral_acct (
77     p_amount                IN NUMBER,
78     p_reversal              IN VARCHAR2,
79     p_adj                   IN OUT NOCOPY FA_ADJUST_TYPE_PKG.FA_ADJ_ROW_STRUCT,
80     p_created_by            IN NUMBER,
81     p_creation_date         IN DATE
82     , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type)
83 RETURN BOOLEAN IS
84     pos_err EXCEPTION;
85     l_calling_fn        varchar2(60) := 'create_sorp_neutral_acct (overloaded)';
86     l_mode              varchar2(20) := 'neutralizing';
87 BEGIN
88 
89     if (p_log_level_rec.statement_level) then
90         fa_debug_pkg.add(l_calling_fn,'Entering overloaded function', 'true', p_log_level_rec => p_log_level_rec);
91         fa_debug_pkg.add(l_calling_fn,'p_amount', p_amount, p_log_level_rec => p_log_level_rec);
92         fa_debug_pkg.add(l_calling_fn,'p_reversal', p_reversal, p_log_level_rec => p_log_level_rec);
93         fa_debug_pkg.add(l_calling_fn,'p_adj.book_type_code', p_adj.book_type_code, p_log_level_rec => p_log_level_rec);
94         fa_debug_pkg.add(l_calling_fn,'p_created_by', p_created_by, p_log_level_rec => p_log_level_rec);
95         fa_debug_pkg.add(l_calling_fn,'p_creation_date', p_creation_date, p_log_level_rec => p_log_level_rec);
96     end if;
97 
98     if not create_sorp_neutral_acct(
99         p_amount => p_amount,
100         p_reversal => p_reversal,
101         p_adj => p_adj,
102         p_created_by => p_created_by,
103         p_creation_date => p_creation_date,
104         p_last_update_date => NULL,
105         p_last_updated_by => NULL,
106         p_last_update_login => NULL,
107         p_who_mode => 'CREATE',
108         p_log_level_rec => p_log_level_rec) then
109         fa_debug_pkg.add(l_calling_fn,'create_sorp_neutral_acct', 'failed', p_log_level_rec => p_log_level_rec);
110         return false;
111     end if;
112 
113     return true;
114 EXCEPTION
115     WHEN OTHERS THEN
116         fa_debug_pkg.add(l_calling_fn,'unexpected error', l_mode, p_log_level_rec => p_log_level_rec);
117         return false;
118 END create_sorp_neutral_acct;
119 
120 
121 /*#
122  * Thus function is used to create neutralizing accounting entries for SORP
123  * compliance. This is a generic function which is called from several locations
124  * like revaluation, depreciation, impairments, transfers, etc
125  * @param p_amount The amount for which neutralizing entrie needs to be created
126  * @param p_reversal 'Y' indicates that a reversal entrie needs to be created
127  * @param p_adj Adjustment record needs to be populated with information like book, etc
128  * @param p_created_by standard who column information
129  * @param p_creation_date standard who column information
130  * @param p_last_update_date standard who column information
131  * @param p_last_updated_by standard who column information
132  * @param p_last_update_login standard who column information
133  * @param p_who_mode Indicates what kind of data need to be inserted into the who
134  *        columns of fa_adjusments. In FA, some pieces of code insert the
135  *        created by information and other places the updated by information for the
136  *        who columns of FA_ADJUSTMENTS. Thus this column has been added to make
137  *        this function generic and insert the appropriate data as required depending
138  *        on where it is called from
139  * @rep:scope private
140  * @rep:lifecycle active
141  * @rep:displayname create_sorp_neutral_acct
142  * @rep:compatibility S
143 */
144 FUNCTION create_sorp_neutral_acct (
145     p_amount                IN NUMBER,
146     p_reversal              IN VARCHAR2,
147     p_adj                   IN OUT NOCOPY FA_ADJUST_TYPE_PKG.FA_ADJ_ROW_STRUCT,
148     p_created_by            IN NUMBER,
149     p_creation_date         IN DATE,
150     p_last_update_date      IN DATE,
151     p_last_updated_by       IN NUMBER,
152     p_last_update_login     IN NUMBER,
153     p_who_mode              IN VARCHAR2
154     , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type)
155 
156 RETURN BOOLEAN IS
157     pos_err EXCEPTION;
158     l_calling_fn        varchar2(60) := 'create_sorp_neutral_acct';
159     l_mode              varchar2(20) := 'neutralizing';
160     l_leveling_flag     boolean;
161 BEGIN
162 
163     if (p_log_level_rec.statement_level) then
164         fa_debug_pkg.add(l_calling_fn,'p_amount', p_amount, p_log_level_rec => p_log_level_rec);
165         fa_debug_pkg.add(l_calling_fn,'p_reversal', p_reversal, p_log_level_rec => p_log_level_rec);
166         fa_debug_pkg.add(l_calling_fn,'p_adj.book_type_code', p_adj.book_type_code, p_log_level_rec => p_log_level_rec);
167         fa_debug_pkg.add(l_calling_fn,'p_created_by', p_created_by, p_log_level_rec => p_log_level_rec);
168         fa_debug_pkg.add(l_calling_fn,'p_creation_date', p_creation_date, p_log_level_rec => p_log_level_rec);
169         fa_debug_pkg.add(l_calling_fn,'p_last_update_date', p_last_update_date, p_log_level_rec => p_log_level_rec);
170         fa_debug_pkg.add(l_calling_fn,'p_last_updated_by', p_last_updated_by, p_log_level_rec => p_log_level_rec);
171         fa_debug_pkg.add(l_calling_fn,'p_last_update_login', p_last_update_login, p_log_level_rec => p_log_level_rec);
172         fa_debug_pkg.add(l_calling_fn,'p_who_mode', p_who_mode, p_log_level_rec => p_log_level_rec);
173 	fa_debug_pkg.add(l_calling_fn,'p_adj.leveling_flag',p_adj.leveling_flag, p_log_level_rec => p_log_level_rec);
174     end if;
175 
176     l_leveling_flag := p_adj.leveling_flag;
177     p_adj.leveling_flag := FALSE;
178 
179     if (p_amount <> 0) then
180         --******************************************************
181         --       Capital Adjustment
182         --******************************************************
183         p_adj.adjustment_amount := p_amount;
184         p_adj.adjustment_type   := 'CAPITAL ADJ';
185         p_adj.account_type      := 'CAPITAL_ADJ_ACCT';
186         p_adj.account           := fa_cache_pkg.fazccb_record.capital_adj_acct;
187         if p_reversal = 'Y' then
188             p_adj.debit_credit_flag := 'CR';
189         else
190             p_adj.debit_credit_flag := 'DR';
191         end if;
192 
193         if (p_log_level_rec.statement_level) then
194            fa_debug_pkg.add(l_calling_fn,'Calling faxinaj for ', 'Impairment
195                                           Neutralizing Entry - Capital Adjustment', p_log_level_rec => p_log_level_rec);
196         end if;
197 
198         if p_who_mode = 'CREATE' then
199             if not FA_INS_ADJUST_PKG.faxinaj (p_adj,
200                                               p_creation_date,
201                                               p_created_by, p_log_level_rec => p_log_level_rec) then
202                 raise pos_err;
203             end if;
204         else
205             if not FA_INS_ADJUST_PKG.faxinaj (p_adj,
206                                               p_last_update_date,
207                                               p_last_updated_by,
208                                               p_last_update_login
209                                               , p_log_level_rec => p_log_level_rec) then
210                 raise pos_err;
211             end if;
212         end if;
213 
214         --******************************************************
215         --       General Fund
216         --******************************************************
217         p_adj.adjustment_amount := p_amount;
218         p_adj.adjustment_type   := 'GENERAL FUND';
219         p_adj.account_type      := 'GENERAL_FUND_ACCT';
220         p_adj.account           := fa_cache_pkg.fazccb_record.general_fund_acct;
221         if p_reversal = 'Y' then
222             p_adj.debit_credit_flag := 'DR';
223         else
224             p_adj.debit_credit_flag := 'CR';
225         end if;
226 
227         if (p_log_level_rec.statement_level) then
228            fa_debug_pkg.add(l_calling_fn,'Calling faxinaj for ', 'Impairment
229                                           Neutralizing Entry - General Fund Balance', p_log_level_rec => p_log_level_rec);
230         end if;
231 
232         if p_who_mode = 'CREATE' then
233             if not FA_INS_ADJUST_PKG.faxinaj (p_adj,
234                                               p_creation_date,
235                                               p_created_by, p_log_level_rec => p_log_level_rec) then
236                 raise pos_err;
237             end if;
238         else
239             if not FA_INS_ADJUST_PKG.faxinaj (p_adj,
240                                               p_last_update_date,
241                                               p_last_updated_by,
242                                               p_last_update_login
243                                               , p_log_level_rec => p_log_level_rec) then
244                 raise pos_err;
245             end if;
246         end if;
247     end if;  --End If (p_amount <> 0)
248 
249     if (p_log_level_rec.statement_level) then
250         fa_debug_pkg.add(l_calling_fn,'create_sorp_neutral_acct completed', 'Success', p_log_level_rec => p_log_level_rec);
251     end if;
252 
253     p_adj.leveling_flag := l_leveling_flag;
254 
255     return true;
256 
257 EXCEPTION
258    WHEN pos_err THEN
259 
260       if (p_log_level_rec.statement_level) then
261          fa_debug_pkg.add(l_calling_fn,'exception at create_sorp_neutral_acct', 'pos_err', p_log_level_rec => p_log_level_rec);
262          fa_debug_pkg.add(l_calling_fn,'sqlerrm', substrb(sqlerrm, 1, 200));
263       end if;
264 
265       return false;
266 
267    WHEN OTHERS THEN
268 
269       if (p_log_level_rec.statement_level) then
270          fa_debug_pkg.add(l_calling_fn,'exception at create_sorp_neutral_acct', 'OTHERS', p_log_level_rec => p_log_level_rec);
271          fa_debug_pkg.add(l_calling_fn,'sqlerrm', substrb(sqlerrm, 1, 200));
272       end if;
273 
274       return false;
275 
276 END create_sorp_neutral_acct;
277 
278 END FA_SORP_UTIL_PVT;