[Home] [Help]
PACKAGE BODY: APPS.FA_TRANSACTION_ITF_PKG
Source
1 package body FA_TRANSACTION_ITF_PKG as
2 /* $Header: FATRXITFB.pls 120.1 2005/07/29 15:52:14 skchawla noship $ */
3
4
5 -- Private type declarations
6
7 -- Private constant declarations
8
9 -- Private variable declarations
10 g_log_level_rec fa_api_types.log_level_rec_type;
11
12 -- Private Function and Procedures declarations
13 -- Function and procedure implementations
14 function check_asset_book(p_book_type_code varchar2, p_asset_id number)
15 return boolean is
16 l_check number;
17 begin
18 begin
19 select 1
20 into l_check
21 from fa_books
22 where book_type_code = p_book_type_code
23 and asset_id = p_asset_id
24 and transaction_header_id_out is null
25 and rownum < 2;
26 return true;
27 exception
28 when no_data_found then
29 return false;
30 when others then
31 return false;
32 end;
33 end;
34 -- Author : SKCHAWLA
35 -- Created : 7/18/2005 1:58:52 PM
36 -- Purpose : To process the assets for AFE Reclassification
37 procedure process_transaction_interface(p_book_type_code in varchar2,
38 x_request_id OUT NOCOPY number,
39 x_msg_count OUT NOCOPY NUMBER,
40 x_msg_data OUT NOCOPY VARCHAR2,
41 x_return_status OUT NOCOPY number) is
42
43 TYPE varchar30_tbl IS TABLE OF varchar2(30) INDEX BY BINARY_INTEGER;
44 TYPE trans_int_rec_tbl IS TABLE OF FA_API_TYPES.trans_interface_rec_type INDEX BY BINARY_INTEGER;
45 l_akey_segment varchar30_tbl;
46 l_akey_ccid number;
47 l_trans_int_rec FA_API_TYPES.trans_interface_rec_type;
48 l_trans_int_rec_tbl trans_int_rec_tbl;
49 l_batch_size number := 100;
50 l_akey_grp_seg varchar2(30);
51 l_akey_grp_seg_index number;
52 l_here_key_seg varchar2(30);
53
54 l_here_key_seg_index number;
55
56 l_asset_id number;
57 l_new_asset_key_ccid number;
58 l_err_stage varchar2(640);
59 l_log_level_rec FA_API_TYPES.log_level_rec_type;
60 afe_err EXCEPTION;
61 l_calling_fn varchar2(250) := 'FA_AFE_RECLASS_PKG.process_transaction_interface';
62 cursor get_interface_assets(c_book_type_code varchar2) is
63 Select TRANSACTION_INTERFACE_ID,
64 TRANSACTION_DATE,
65 TRANSACTION_TYPE_CODE,
66 POSTING_STATUS,
67 BOOK_TYPE_CODE,
68 ASSET_KEY_PROJECT_VALUE,
69 ASSET_KEY_HIERARCHY_VALUE,
70 ASSET_KEY_NEW_HIERARCHY_VALUE,
71 REFERENCE_NUMBER,
72 COMMENTS,
73 CONCURRENT_REQUEST_ID,
74 CREATED_BY,
75 CREATION_DATE,
76 LAST_UPDATED_BY,
77 LAST_UPDATE_DATE,
78 LAST_UPDATE_LOGIN
79 from fa_transaction_interface
80 where book_type_code = c_book_type_Code;
81
82 CURSOR lookup_cur(c_lookup_type varchar2) IS
83 select lookup_code
84 from fa_lookups
85 where lookup_type = c_lookup_type
86 and enabled_flag = 'Y'
87 and nvl(end_date_active, sysdate) >= sysdate
88 and rownum = 1;
89
90 cursor get_asset_key_ccid(c_akey_seg varchar30_tbl) is
91 SELECT code_combination_id
92 INTO l_akey_ccid
93 FROM fa_asset_keywords
94 WHERE nvl(segment1, '-1') = nvl(c_akey_seg(1), '-1')
95 and nvl(segment2, '-1') = nvl(c_akey_seg(2), '-1')
96 and nvl(segment3, '-1') = nvl(c_akey_seg(3), '-1')
97 and nvl(segment4, '-1') = nvl(c_akey_seg(4), '-1')
98 and nvl(segment5, '-1') = nvl(c_akey_seg(5), '-1')
99 and nvl(segment6, '-1') = nvl(c_akey_seg(6), '-1')
100 and nvl(segment7, '-1') = nvl(c_akey_seg(7), '-1')
101 and nvl(segment8, '-1') = nvl(c_akey_seg(8), '-1')
102 and nvl(segment9, '-1') = nvl(c_akey_seg(9), '-1')
103 and nvl(segment10, '-1') = nvl(c_akey_seg(10), '-1');
104
105 cursor get_cip_assets(c_akey_seg varchar30_tbl) is
106 select asset_id
107 from fa_additions
108 where asset_type = 'CIP'
109 and asset_key_ccid in
110 (SELECT code_combination_id
111 FROM fa_asset_keywords
112 WHERE nvl(segment1, '-1') =
113 nvl(c_akey_seg(1), nvl(segment1, '-1'))
114 and nvl(segment2, '-1') =
115 nvl(c_akey_seg(2), nvl(segment2, '-1'))
116 and nvl(segment3, '-1') =
117 nvl(c_akey_seg(3), nvl(segment1, '-1'))
118 and nvl(segment4, '-1') =
119 nvl(c_akey_seg(4), nvl(segment4, '-1'))
120 and nvl(segment5, '-1') =
121 nvl(c_akey_seg(5), nvl(segment5, '-1'))
122 and nvl(segment6, '-1') =
123 nvl(c_akey_seg(6), nvl(segment6, '-1'))
124 and nvl(segment7, '-1') =
125 nvl(c_akey_seg(7), nvl(segment7, '-1'))
126 and nvl(segment8, '-1') =
127 nvl(c_akey_seg(8), nvl(segment8, '-1'))
128 and nvl(segment9, '-1') =
129 nvl(c_akey_seg(9), nvl(segment9, '-1'))
130 and nvl(segment10, '-1') =
131 nvl(c_akey_seg(10), nvl(segment10, '-1')));
132
133 begin
134
135 SAVEPOINT AFE_Reclass_Asset_Begin;
136 l_err_stage := 'Begin FA_AFE_RECLASS_PKG.process_transaction_interface';
137 if (not g_log_level_rec.initialized) then
138 if (NOT
139 fa_util_pub.get_log_level_rec(x_log_level_rec => g_log_level_rec)) then
140 raise FND_API.G_EXC_UNEXPECTED_ERROR;
141 end if;
142 end if;
143
144 l_err_stage := 'Get Lookup values';
145 if (l_log_level_rec.statement_level) then
146 fa_debug_pkg.add(l_calling_fn,
147 '-',
148 'before ' || l_err_stage,
149 p_log_level_rec => l_log_level_rec);
150 end if;
151
152 /* get the asset key mapping */
153 FOR rec IN lookup_cur('ASSET KEY PROJECT MAPPING') LOOP
154 l_akey_grp_seg := rec.lookup_code;
155 l_akey_grp_seg_index := to_number(substr(l_akey_grp_seg, 8));
156 END LOOP;
157
158 FOR rec IN lookup_cur('ASSET KEY HIERARCHY MAPPING') LOOP
159 l_here_key_seg := rec.lookup_code;
160 l_here_key_seg_index := to_number(substr(l_here_key_seg, 8));
161 END LOOP;
162 l_err_stage := 'Fetching all records from the interface table ';
163 /* get all the records from interface table */
164 open get_interface_assets(p_book_type_code);
165 while true loop
166
167 fetch get_interface_assets BULK COLLECT
168 INTO l_trans_int_rec_tbl limit l_batch_size;
169
170 if (get_interface_assets%NOTFOUND) and
171 (l_trans_int_rec_tbl.count < 1) then
172 exit;
173 end if;
174 l_err_stage := 'Looping through all records of interface table';
175 if (l_log_level_rec.statement_level) then
176 fa_debug_pkg.add(l_calling_fn,
177 '-',
178 'before ' || l_err_stage,
179 p_log_level_rec => l_log_level_rec);
180 end if;
181
182 for l_count in 1 .. l_trans_int_rec_tbl.count loop
183 l_trans_int_rec := l_trans_int_rec_tbl(l_count);
184
185 if (l_trans_int_rec.ASSET_KEY_NEW_HIERARCHY_VALUE is not null) then
186 l_err_stage := 'Find the new asset key for new report center';
187 for i in 1 .. 30 loop
188 if (i = l_here_key_seg_index) then
189 l_akey_segment(i) := l_trans_int_rec.ASSET_KEY_NEW_HIERARCHY_VALUE;
190 elsif (i = l_akey_grp_seg_index) then
191 l_akey_segment(i) := l_trans_int_rec.ASSET_KEY_PROJECT_VALUE;
192 else
193 l_akey_segment(i) := null;
194 end if;
195 end loop;
196
197 begin
198 open get_asset_key_ccid(l_akey_segment);
199 fetch get_asset_key_ccid
200 into l_new_asset_key_ccid;
201 close get_asset_key_ccid;
202 exception
203 when no_data_found then
204 null;
205 end;
206 end if;
207
208 for i in 1 .. 30 loop
209 if (i = l_here_key_seg_index) then
210 l_akey_segment(i) := l_trans_int_rec.ASSET_KEY_HIERARCHY_VALUE;
211 elsif (i = l_akey_grp_seg_index) then
212 l_akey_segment(i) := l_trans_int_rec.ASSET_KEY_PROJECT_VALUE;
213 else
214 l_akey_segment(i) := null;
215 end if;
216 end loop;
217 l_err_stage := '*get all assets matching AFE Number and HIERARCHY value';
218 if (l_log_level_rec.statement_level) then
219 fa_debug_pkg.add(l_calling_fn,
220 '-',
221 'before ' || l_err_stage,
222 p_log_level_rec => l_log_level_rec);
223 end if;
224
225 /*get all assets matching AFE Number and HIERARCHY value*/
226 open get_cip_assets(l_akey_segment);
227 while true loop
228 /*fetch the cipa sset from fa_Additions */
229 fetch get_cip_assets
230 into l_asset_id;
231
232 if (get_cip_assets%NOTFOUND) then
233 exit;
234 end if;
235 l_err_stage := 'check whether asset belongs to selected book';
236 if (l_log_level_rec.statement_level) then
237 fa_debug_pkg.add(l_calling_fn,
238 '-',
239 'before ' || l_err_stage,
240 p_log_level_rec => l_log_level_rec);
241 end if;
242
243 /* check whether asset belongs to selected book or not */
244 if (check_asset_book(p_book_type_code, l_asset_id)) then
245
246 if (l_trans_int_rec.transaction_type_code = 'CAPITALIZE') then
247
248 l_err_stage := 'Calling FA_AFE_TRANSACTIONS_PKG.process_capitalize';
249 if (l_log_level_rec.statement_level) then
250 fa_debug_pkg.add(l_calling_fn,
251 '-',
252 'before ' || l_err_stage,
253 p_log_level_rec => l_log_level_rec);
254 end if;
255
256 if not
257 (FA_AFE_TRANSACTIONS_PKG.process_capitalize(l_trans_int_rec,
258 l_asset_id,
259 l_new_asset_key_ccid,
260 l_log_level_rec)) then
261 l_err_stage := 'FA_AFE_TRANSACTIONS_PKG.process_capitalize failed';
262 if (l_log_level_rec.statement_level) then
263 fa_debug_pkg.add(l_calling_fn,
264 '-',
265 l_err_stage || 'For ' ||
266 l_trans_int_rec.transaction_interface_id,
267 p_log_level_rec => l_log_level_rec);
268 end if;
269
270 end if;
271 elsif (l_trans_int_rec.transaction_type_code = 'DRY HOLE') then
272 l_err_stage := 'Calling FA_AFE_TRANSACTIONS_PKG.process_dry_hole';
273 if (l_log_level_rec.statement_level) then
274 fa_debug_pkg.add(l_calling_fn,
275 '-',
276 'before ' || l_err_stage,
277 p_log_level_rec => l_log_level_rec);
278 end if;
279
280 if not
281 (FA_AFE_TRANSACTIONS_PKG.process_dry_hole(l_trans_int_rec,
282 l_asset_id,
283 l_new_asset_key_ccid,
284 l_log_level_rec)) then
285
286 l_err_stage := 'FA_AFE_TRANSACTIONS_PKG.process_dry_hole failed';
287 if (l_log_level_rec.statement_level) then
288 fa_debug_pkg.add(l_calling_fn,
289 '-',
290 l_err_stage || 'For ' ||
291 l_trans_int_rec.transaction_interface_id,
292 p_log_level_rec => l_log_level_rec);
293 end if;
294 end if;
295 elsif (l_trans_int_rec.transaction_type_code = 'EXPENSE') then
296
297 l_err_stage := 'Calling FA_AFE_TRANSACTIONS_PKG.process_expense';
298 if (l_log_level_rec.statement_level) then
299 fa_debug_pkg.add(l_calling_fn,
300 '-',
301 'before ' || l_err_stage,
302 p_log_level_rec => l_log_level_rec);
303 end if;
304
305 if not
306 (FA_AFE_TRANSACTIONS_PKG.process_expense(l_trans_int_rec,
307 l_asset_id,
308 l_log_level_rec)) then
309 l_err_stage := 'FA_AFE_TRANSACTIONS_PKG.process_expense failed';
310 if (l_log_level_rec.statement_level) then
311 fa_debug_pkg.add(l_calling_fn,
312 '-',
313 l_err_stage || 'For ' ||
314 l_trans_int_rec.transaction_interface_id,
315 p_log_level_rec => l_log_level_rec);
316 end if;
317
318 end if;
319 else
320 null; --do nothing....
321 end if;
322 end if;
323 end loop; /* end of get_cip_assets loop*/
324 close get_cip_assets;
325 end loop;
326 commit;
327 end loop;
328 close get_interface_assets;
329 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
330
331 x_return_status := FND_API.G_RET_STS_SUCCESS;
332 EXCEPTION
333 WHEN FND_API.G_EXC_ERROR THEN
334 FA_SRVR_MSG.Add_Message(calling_fn => 'FA_TRANSFER_PUB.do_transfer',
335 p_log_level_rec => g_log_level_rec);
336
337 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count,
338 p_data => x_msg_data);
339 ROLLBACK TO AFE_Reclass_Asset_Begin;
340 x_return_status := FND_API.G_RET_STS_ERROR;
341
342 WHEN OTHERS THEN
343 FA_SRVR_MSG.add_sql_error(calling_fn => 'FA_TRANSFER_PUB.do_transfer',
344 p_log_level_rec => g_log_level_rec);
345
346 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count,
347 p_data => x_msg_data);
348 ROLLBACK TO AFE_Reclass_Asset_Begin;
349 x_return_status := FND_API.G_RET_STS_ERROR;
350 end process_transaction_interface;
351
352 end FA_TRANSACTION_ITF_PKG;