[Home] [Help]
PACKAGE BODY: APPS.CSE_FA_INTEGRATION_GRP
Source
1 PACKAGE BODY cse_fa_integration_grp AS
2 /* $Header: CSEGFAIB.pls 120.16 2006/11/09 06:43:02 brmanesh noship $ */
3
4 l_debug varchar2(1) := NVL(FND_PROFILE.VALUE('CSE_DEBUG_OPTION'),'N');
5
6 FUNCTION is_oat_enabled RETURN BOOLEAN
7 IS
8 l_enabled_flag char := 'N';
9 l_enabled boolean := FALSE;
10 l_dummy varchar2(40);
11 l_fnd_ret boolean;
12
13 CURSOR ib_param_cur IS
14 SELECT 'Y'
15 FROM csi_install_parameters
16 WHERE freeze_flag = 'Y';
17 BEGIN
18
19 OPEN ib_param_cur;
20 FETCH ib_param_cur INTO l_enabled_flag;
21 CLOSE ib_param_cur;
22
23 IF l_enabled_flag = 'Y' THEN
24 l_fnd_ret := fnd_installation.get_app_info('CSE',l_enabled_flag, l_dummy, l_dummy);
25 IF l_enabled_flag = 'I' THEN
26 l_enabled := TRUE;
27 END IF;
28 END IF;
29
30 RETURN l_enabled;
31
32 END is_oat_enabled;
33
34 PROCEDURE debug(
35 p_message IN varchar2)
36 IS
37 BEGIN
38 IF l_debug = 'Y' THEN
39 cse_debug_pub.add(p_message);
40 IF nvl(fnd_global.conc_request_id, -1) <> -1 THEN
41 fnd_file.put_line(fnd_file.log,p_message);
42 END IF;
43 END IF;
44 EXCEPTION
45 WHEN others THEN
46 null;
47 END debug;
48
49 FUNCTION get_tieback_csi_txn_id(
50 p_mass_addition_id IN number,
51 p_asset_id IN number,
52 p_instance_asset_id IN number)
53 RETURN number IS
54 CURSOR ma_txn_cur IS
55 SELECT transaction_id
56 FROM csi_transactions
57 WHERE transaction_type_id = 123
58 AND source_line_ref = 'MASS_ADD_ID'
59 AND source_line_ref_id = p_mass_addition_id
60 ORDER by source_transaction_date desc;
61 l_csi_txn_id number := fnd_api.g_miss_num;
62 BEGIN
63 IF p_mass_addition_id is not null THEN
64 FOR ma_txn_rec IN ma_txn_cur
65 LOOP
66 l_csi_txn_id := ma_txn_rec.transaction_id;
67 exit;
68 END LOOP;
69 END IF;
70 RETURN l_csi_txn_id;
71 END get_tieback_csi_txn_id;
72
73 PROCEDURE create_inst_asset(
74 px_csi_txn_rec IN OUT nocopy csi_datastructures_pub.transaction_rec,
75 px_inst_asset_rec IN OUT nocopy csi_datastructures_pub.instance_asset_rec,
76 x_return_status OUT nocopy varchar2)
77 IS
78 l_lookup_tbl csi_asset_pvt.lookup_tbl;
79 l_asset_count_rec csi_asset_pvt.asset_count_rec;
80 l_asset_id_tbl csi_asset_pvt.asset_id_tbl;
81 l_asset_loc_tbl csi_asset_pvt.asset_loc_tbl;
82
83 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
84 l_msg_count number;
85 l_msg_data varchar2(2000);
86 BEGIN
87
88 x_return_status := fnd_api.g_ret_sts_success;
89
90 px_inst_asset_rec.fa_sync_flag := 'Y';
91
92 csi_asset_pvt.create_instance_asset(
93 p_api_version => 1.0 ,
94 p_commit => fnd_api.g_false,
95 p_init_msg_list => fnd_api.g_true,
96 p_validation_level => fnd_api.g_valid_level_full,
97 p_instance_asset_rec => px_inst_asset_rec,
98 p_txn_rec => px_csi_txn_rec,
99 x_return_status => l_return_status,
100 x_msg_count => l_msg_count,
101 x_msg_data => l_msg_data ,
102 p_lookup_tbl => l_lookup_tbl,
103 p_asset_count_rec => l_asset_count_rec,
104 p_asset_id_tbl => l_asset_id_tbl,
105 p_asset_loc_tbl => l_asset_loc_tbl);
106
107 IF l_return_status <> fnd_api.g_ret_sts_success THEN
108 RAISE fnd_api.g_exc_error;
109 END IF;
110
111 EXCEPTION
112 WHEN fnd_api.g_exc_error THEN
113 x_return_status := fnd_api.g_ret_sts_error;
114 END create_inst_asset;
115
116
117 PROCEDURE update_inst_asset(
118 px_csi_txn_rec IN OUT nocopy csi_datastructures_pub.transaction_rec,
119 px_inst_asset_rec IN OUT nocopy csi_datastructures_pub.instance_asset_rec,
120 x_return_status OUT nocopy varchar2)
121 IS
122
123 l_lookup_tbl csi_asset_pvt.lookup_tbl;
124 l_asset_count_rec csi_asset_pvt.asset_count_rec;
125 l_asset_id_tbl csi_asset_pvt.asset_id_tbl;
126 l_asset_loc_tbl csi_asset_pvt.asset_loc_tbl;
127
128 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
129 l_msg_count number;
130 l_msg_data varchar2(2000);
131 BEGIN
132
133 x_return_status := fnd_api.g_ret_sts_success;
134
135 px_inst_asset_rec.fa_sync_flag := 'Y';
136 px_inst_asset_rec.check_for_instance_expiry := fnd_api.g_false;
137
138 csi_asset_pvt.update_instance_asset (
139 p_api_version => 1.0,
140 p_commit => fnd_api.g_false,
141 p_init_msg_list => fnd_api.g_true,
142 p_validation_level => fnd_api.g_valid_level_full,
143 p_instance_asset_rec => px_inst_asset_rec,
144 p_txn_rec => px_csi_txn_rec,
145 x_return_status => l_return_status,
146 x_msg_count => l_msg_count,
147 x_msg_data => l_msg_data,
148 p_lookup_tbl => l_lookup_tbl,
149 p_asset_count_rec => l_asset_count_rec,
150 p_asset_id_tbl => l_asset_id_tbl,
151 p_asset_loc_tbl => l_asset_loc_tbl);
152
153 IF l_return_status <> fnd_api.g_ret_sts_success THEN
154 RAISE fnd_api.g_exc_error;
155 END IF;
156
157 EXCEPTION
158 WHEN fnd_api.g_exc_error THEN
159 x_return_status := fnd_api.g_ret_sts_error;
160 END update_inst_asset;
161
162 FUNCTION addition(
163 p_trans_rec IN fa_api_types.trans_rec_type,
164 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
165 p_asset_desc_rec IN fa_api_types.asset_desc_rec_type,
166 p_asset_fin_rec IN fa_api_types.asset_fin_rec_type,
167 p_asset_dist_tbl IN fa_api_types.asset_dist_tbl_type,
168 p_inv_tbl IN fa_api_types.inv_tbl_type)
169 RETURN boolean
170 IS
171
172 l_csi_txn_rec csi_datastructures_pub.transaction_rec;
173 l_inst_asset_rec csi_datastructures_pub.instance_asset_rec;
174
175 l_instance_id number;
176 l_inst_asset_query_rec csi_datastructures_pub.instance_asset_query_rec;
177 l_inst_asset_tbl csi_datastructures_pub.instance_asset_header_tbl;
178 l_time_stamp date := null;
179
180 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
181 l_msg_count number;
182 l_msg_data varchar2(2000);
183
184 CURSOR cia_cur(p_mass_addition_id IN number) IS
185 SELECT cia.instance_asset_id,
186 cia.asset_quantity,
187 cia.instance_id,
188 cia.object_version_number,
189 cii.inventory_item_id,
190 cii.serial_number
191 FROM csi_i_assets cia,
192 csi_item_instances cii
193 WHERE cia.fa_mass_addition_id = p_mass_addition_id
194 AND cii.instance_id = cia.instance_id;
195
196 CURSOR proj_cur(p_project_asset_line_id IN number) IS
197 SELECT pei.expenditure_item_id,
198 pei.orig_transaction_reference txn_ref
199 FROM pa_expenditure_items_all pei,
200 pa_project_asset_line_details ppald,
201 pa_project_asset_lines_all ppal
202 WHERE ppal.project_asset_line_id = p_project_asset_line_id
203 AND ppald.project_asset_line_detail_id = ppal.project_asset_line_detail_id
204 AND pei.expenditure_item_id = ppald.expenditure_item_id
205 AND pei.transaction_source IN ('CSE_PO_RECEIPT','CSE_INV_ISSUE')
206 AND pei.net_zero_adjustment_flag = 'N'
207 AND (pei.attribute8 is not null and pei.attribute9 is not null);
208
209 BEGIN
210
211 savepoint cse_addition;
212
213 IF is_oat_enabled THEN
214
215 cse_util_pkg.set_debug;
216
217 debug('Inside API cse_fa_integration_grp.addition');
218 debug(' p_inv_tbl.count : '||p_inv_tbl.count);
219 debug(' p_asset_dist_tbl.count : '||p_asset_dist_tbl.count);
220
221 -- invoke oat routines
222 IF p_inv_tbl.COUNT > 0 THEN
223
224 l_csi_txn_rec.transaction_type_id := 123;
225 l_csi_txn_rec.source_transaction_date := sysdate;
226 l_csi_txn_rec.transaction_date := sysdate;
227
228 FOR p_ind IN p_inv_tbl.FIRST .. p_inv_tbl.LAST
229 LOOP
230
231 debug(' feeder_system_name : '||p_inv_tbl(p_ind).feeder_system_name);
232
233 IF p_inv_tbl(p_ind).feeder_system_name IN ( 'ORACLE ENTERPRISE INSTALL BASE', 'ORACLE PROJECTS') THEN
234
235 IF p_inv_tbl(p_ind).feeder_system_name = 'ORACLE ENTERPRISE INSTALL BASE' THEN
236
237 IF p_inv_tbl(p_ind).parent_mass_addition_id is not null THEN
238
239 FOR cia_rec IN cia_cur (p_inv_tbl(p_ind).parent_mass_addition_id)
240 LOOP
241
242 debug(' inst_asset_id : '||cia_rec.instance_asset_id);
243
244 l_inst_asset_rec.instance_asset_id := cia_rec.instance_asset_id;
245 l_inst_asset_rec.fa_asset_id := p_asset_hdr_rec.asset_id;
246 l_inst_asset_rec.fa_book_type_code := p_asset_hdr_rec.book_type_code;
247 -- assuming that there is only one distribution per addition
248 l_inst_asset_rec.fa_location_id := p_asset_dist_tbl(1).location_ccid;
249 l_inst_asset_rec.object_version_number := cia_rec.object_version_number;
250
251 l_csi_txn_rec.transaction_id := get_tieback_csi_txn_id(
252 p_mass_addition_id => p_inv_tbl(p_ind).parent_mass_addition_id,
253 p_asset_id => p_asset_hdr_rec.asset_id,
254 p_instance_asset_id => cia_rec.instance_asset_id);
255
256 update_inst_asset (
257 px_csi_txn_rec => l_csi_txn_rec,
258 px_inst_asset_rec => l_inst_asset_rec,
259 x_return_status => l_return_status);
260
261 IF l_return_status <> fnd_api.g_ret_sts_success THEN
262 RAISE fnd_api.g_exc_error;
263 END IF;
264
265 END LOOP;
266
267 END IF;
268 ELSIF p_inv_tbl(p_ind).feeder_system_name = 'ORACLE PROJECTS' THEN
269
270 IF p_inv_tbl(p_ind).parent_mass_addition_id is not null THEN
271 FOR proj_rec IN proj_cur(p_inv_tbl(p_ind).project_asset_line_id)
272 LOOP
273 debug(' expenditure_item_id : '||proj_rec.expenditure_item_id);
274 BEGIN
275 l_instance_id:=to_number(substr(proj_rec.txn_ref,1,(instr(proj_rec.txn_ref,'-')-1)));
276 EXCEPTION
277 WHEN others THEN
278 l_instance_id := null;
279 END;
280 exit;
281 END LOOP;
282
283 debug(' instance_id : '||l_instance_id);
284
285 IF l_instance_id is not null THEN
286
287 l_inst_asset_query_rec.instance_id := l_instance_id;
288
289 csi_asset_pvt.get_instance_assets(
290 p_api_version => 1.0,
291 p_commit => fnd_api.g_false,
292 p_init_msg_list => fnd_api.g_true,
293 p_validation_level => fnd_api.g_valid_level_full,
294 p_instance_asset_query_rec => l_inst_asset_query_rec,
295 p_resolve_id_columns => fnd_api.g_false,
296 p_time_stamp => l_time_stamp,
297 x_instance_asset_tbl => l_inst_asset_tbl,
298 x_return_status => l_return_status,
299 x_msg_count => l_msg_count,
300 x_msg_data => l_msg_data);
301
302 IF l_return_status <> fnd_api.g_ret_sts_success THEN
303 RAISE fnd_api.g_exc_error;
304 END IF;
305
306 IF l_inst_asset_tbl.COUNT = 0 THEN
307
308 l_inst_asset_rec.fa_asset_id := p_asset_hdr_rec.asset_id;
309 l_inst_asset_rec.fa_book_type_code := p_asset_hdr_rec.book_type_code;
310 l_inst_asset_rec.asset_quantity := p_asset_dist_tbl(1).units_assigned;
311 l_inst_asset_rec.fa_location_id := p_asset_dist_tbl(1).location_ccid;
312 l_inst_asset_rec.instance_id := l_instance_Id;
313 l_inst_asset_rec.update_status := cse_datastructures_pub.g_in_service;
314 l_inst_asset_rec.check_for_instance_expiry:= fnd_api.g_false;
315
316 create_inst_asset(
317 px_csi_txn_rec => l_csi_txn_rec,
318 px_inst_asset_rec => l_inst_asset_rec,
319 x_return_status => l_return_status);
320
321 IF l_return_status <> fnd_api.g_ret_sts_success THEN
322 RAISE fnd_api.g_exc_error;
323 END IF;
324
325 ELSE
326
327 IF l_inst_asset_tbl.COUNT = 1 THEN
328
329 l_inst_asset_rec.instance_asset_id := l_inst_asset_tbl(1).instance_asset_id;
330 l_inst_asset_rec.fa_asset_id := p_asset_hdr_rec.asset_id;
331 l_inst_asset_rec.fa_book_type_code := p_asset_hdr_rec.book_type_code;
332 -- assuming that there is only one distribution per addition
333 l_inst_asset_rec.fa_location_id := p_asset_dist_tbl(1).location_ccid;
334 l_inst_asset_rec.asset_quantity := l_inst_asset_tbl(1).asset_quantity +
335 p_asset_dist_tbl(1).transaction_units;
336 update_inst_asset (
337 px_csi_txn_rec => l_csi_txn_rec,
338 px_inst_asset_rec => l_inst_asset_rec,
339 x_return_status => l_return_status);
340
341 IF l_return_status <> fnd_api.g_ret_sts_success THEN
342 RAISE fnd_api.g_exc_error;
343 END IF;
344 ELSE
345 null;
346 END IF;
347 END IF;
348
349 ELSE
350
351 -- dump in to the staging table
352 cse_fa_stage_pkg.stage_addition(
353 p_trans_rec => p_trans_rec,
354 p_asset_hdr_rec => p_asset_hdr_rec,
355 p_asset_desc_rec => p_asset_desc_rec,
356 p_asset_fin_rec => p_asset_fin_rec,
357 p_asset_dist_tbl => p_asset_dist_tbl,
358 p_inv_tbl => p_inv_tbl);
359
360 END IF; -- instance is is not null
361 END IF;
362
363 ELSE
364
365 -- dump in to the staging table
366 cse_fa_stage_pkg.stage_addition(
367 p_trans_rec => p_trans_rec,
368 p_asset_hdr_rec => p_asset_hdr_rec,
369 p_asset_desc_rec => p_asset_desc_rec,
370 p_asset_fin_rec => p_asset_fin_rec,
371 p_asset_dist_tbl => p_asset_dist_tbl,
372 p_inv_tbl => p_inv_tbl);
373
374 END IF; -- proj or oat identifies chk
375
376 ELSE
377
378 -- dump in to the staging table
379 cse_fa_stage_pkg.stage_addition(
380 p_trans_rec => p_trans_rec,
381 p_asset_hdr_rec => p_asset_hdr_rec,
382 p_asset_desc_rec => p_asset_desc_rec,
383 p_asset_fin_rec => p_asset_fin_rec,
384 p_asset_dist_tbl => p_asset_dist_tbl,
385 p_inv_tbl => p_inv_tbl);
386
387 END IF;
388 END LOOP;
389 ELSE
390
391 -- dump in to the staging table
392 cse_fa_stage_pkg.stage_addition(
393 p_trans_rec => p_trans_rec,
394 p_asset_hdr_rec => p_asset_hdr_rec,
395 p_asset_desc_rec => p_asset_desc_rec,
396 p_asset_fin_rec => p_asset_fin_rec,
397 p_asset_dist_tbl => p_asset_dist_tbl,
398 p_inv_tbl => p_inv_tbl);
399
400 END IF;
401
402 END IF;
403 RETURN TRUE;
404 EXCEPTION
405 WHEN fnd_api.g_exc_error THEN
406 rollback to cse_addition;
407 RETURN FALSE;
408 WHEN others THEN
409 rollback to cse_addition;
410 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
411 fnd_message.set_token('API_NAME','csi_fa_integration_grp.addition');
412 fnd_message.set_token('SQL_ERROR',sqlerrm);
413 fnd_msg_pub.add;
414 RETURN FALSE;
415 END addition;
416
417 FUNCTION unit_adjustment(
418 p_trans_rec IN fa_api_types.trans_rec_type,
419 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
420 p_asset_dist_tbl IN fa_api_types.asset_dist_tbl_type)
421 RETURN boolean
422 IS
423 BEGIN
424 IF is_oat_enabled THEN
425 -- invoke oat routines
426 null;
427 END IF;
428 RETURN TRUE;
429 EXCEPTION
430 WHEN fnd_api.g_exc_error THEN
431 RETURN FALSE;
432 WHEN others THEN
433 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
434 fnd_message.set_token('API_NAME','csi_fa_integration_grp.unit_adjustment');
435 fnd_message.set_token('SQL_ERROR',sqlerrm);
436 fnd_msg_pub.add;
437 RETURN FALSE;
438 END unit_adjustment;
439
440 FUNCTION adjustment(
441 p_trans_rec IN fa_api_types.trans_rec_type,
442 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
443 p_asset_fin_rec_adj IN fa_api_types.asset_fin_rec_type,
444 p_inv_tbl IN fa_api_types.inv_tbl_type)
445 RETURN boolean IS
446
447 l_asset_id number;
448 l_book_type_code varchar2(30);
449 l_units number;
450 l_current_units number;
451 l_location_id number;
452 l_expense_ccid number;
453 l_employee_id number;
454 l_new_dist_id number;
455 l_instance_id number;
456 l_exp_item_id number;
457
458 l_txn_error_id number;
459 l_txn_error_rec csi_datastructures_pub.transaction_error_rec;
460
461 l_xml_string varchar2(2000);
462 l_error_message varchar2(4000);
463 l_msg_count number;
464 l_msg_data varchar2(4000);
465 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
466
467 CURSOR exp_inst_cur(p_project_asset_line_id IN number) IS
468 SELECT pei.expenditure_item_id,
469 pei.orig_transaction_reference txn_ref,
470 pei.attribute6 item,
471 pei.attribute7 serial_number,
472 pei.attribute8 location,
473 pei.attribute9 asset_category,
474 pei.attribute10 product_class,
475 ppa.location_id,
476 ppa.depreciation_expense_ccid expense_ccid,
477 ppa.assigned_to_person_id employee_id
478 FROM pa_expenditure_items_all pei,
479 pa_project_asset_line_details ppald,
480 pa_project_asset_lines_all ppal,
481 pa_project_assets_all ppa
482 WHERE ppal.project_asset_line_id = p_project_asset_line_id
483 AND ppa.project_asset_id = ppal.project_asset_id
484 AND ppald.project_asset_line_detail_id = ppal.project_asset_line_detail_id
485 AND pei.expenditure_item_id = ppald.expenditure_item_id
486 AND pei.transaction_source IN ('CSE_PO_RECEIPT','CSE_INV_ISSUE')
487 AND pei.net_zero_adjustment_flag = 'N'
488 AND (pei.attribute8 is not null and pei.attribute9 is not null);
489
490 BEGIN
491 IF is_oat_enabled THEN
492 debug('inside cse_fa_integration_grp.cost_adjustment');
493 -- cost adjustment only for now
494 IF nvl(p_asset_fin_rec_adj.cost, 0) <> 0 THEN
495 -- invoke oat routines
496 IF p_inv_tbl.COUNT > 0 THEN
497 FOR p_ind IN p_inv_tbl.FIRST .. p_inv_tbl.LAST
498 LOOP
499
500 debug(' feeder_system_name : '||p_inv_tbl(p_ind).feeder_system_name);
501
502 IF p_inv_tbl(p_ind).feeder_system_name = 'ORACLE PROJECTS' THEN
503
504 l_asset_id := p_asset_hdr_rec.asset_id;
505 l_book_type_code := p_asset_hdr_rec.book_type_code;
506
507 debug(' asset_id : '||l_asset_id);
508 debug(' book_type_code : '||l_book_type_code);
509 debug(' project_id : '||p_inv_tbl(p_ind).project_id);
510 debug(' task_id : '||p_inv_tbl(p_ind).task_id);
511 debug(' project_asset_line_id : '||p_inv_tbl(p_ind).project_asset_line_id);
512 debug(' transaction_type_code : '||p_trans_rec.transaction_type_code);
513 debug(' transaction_subtype : '||p_trans_rec.transaction_subtype);
514 debug(' payables_units : '||p_inv_tbl(p_ind).payables_units);
515
516 SELECT current_units
517 INTO l_current_units
518 FROM fa_additions
519 WHERE asset_id = l_asset_id;
520
521 debug(' current_units : '||l_current_units);
522
523 l_units := p_inv_tbl(p_ind).payables_units - l_current_units;
524
525 debug(' units_adjusted : '||l_units);
526
527 FOR exp_inst_rec IN exp_inst_cur(p_inv_tbl(p_ind).project_asset_line_id)
528 LOOP
529
530 l_location_id := exp_inst_rec.location_id;
531 l_expense_ccid := exp_inst_rec.expense_ccid;
532 l_employee_id := exp_inst_rec.employee_id;
533 l_exp_item_id := exp_inst_rec.expenditure_item_id;
534
535 BEGIN
536 l_instance_id:=to_number(substr(exp_inst_rec.txn_ref,1,(instr(exp_inst_rec.txn_ref,'-')-1)));
537 EXCEPTION
538 WHEN others THEN
539 l_instance_id := null;
540 END;
541
542 debug(' expenditure_item_id : '||exp_inst_rec.expenditure_item_id);
543 debug(' txn_ref : '||exp_inst_rec.txn_ref);
544 debug(' instance_id : '||l_instance_id);
545 debug(' location_id : '||l_location_id);
546 debug(' depreciation_expense_ccid : '||l_expense_ccid);
547
548 IF l_instance_id is not null THEN
549 EXIT;
550 END IF;
551
552 END LOOP;
553
554 IF l_instance_id is not null AND l_units <> 0 THEN
555
556 cse_util_pkg.build_error_string(l_xml_string,'ASSET_ID',l_asset_id);
557 cse_util_pkg.build_error_string(l_xml_string,'BOOK_TYPE_CODE',l_book_type_code);
558 cse_util_pkg.build_error_string(l_xml_string,'UNITS',l_units);
559 cse_util_pkg.build_error_string(l_xml_string,'LOCATION_ID',l_location_id);
560 cse_util_pkg.build_error_string(l_xml_string,'EMPLOYEE_ID',l_employee_id);
561 cse_util_pkg.build_error_string(l_xml_string,'DEPRN_EXPENSE_CCID',l_expense_ccid);
562 cse_util_pkg.build_error_string(l_xml_string,'INSTANCE_ID',l_instance_id);
563 cse_util_pkg.build_error_string(l_xml_string,'PA_ASSET_LINE_ID',p_inv_tbl(p_ind).project_asset_line_id);
564 cse_util_pkg.build_error_string(l_xml_string,'EXP_ITEM_ID', l_exp_item_id);
565
566 l_txn_error_rec.source_id := p_inv_tbl(p_ind).project_asset_line_id;
567 l_txn_error_rec.source_type := 'FA_UNIT_ADJUSTMENT_NORMAL';
568 l_txn_error_rec.source_header_ref := 'ASSET_ID';
569 l_txn_error_rec.source_header_ref_id := l_asset_id;
570 l_txn_error_rec.source_line_ref := 'EXP_ITEM_ID';
571 l_txn_error_rec.source_line_ref_id := l_exp_item_id;
572 l_txn_error_rec.processed_flag := cse_datastructures_pub.g_bypass_flag;
573 l_txn_error_rec.error_text := l_error_message;
574 l_txn_error_rec.error_stage := cse_datastructures_pub.g_fa_update;
575 l_txn_error_rec.message_string := l_xml_string;
576
577 debug('calling csi_transactions_pvt.create_txn_error to create unit adjustment entry');
578
579 csi_transactions_pvt.create_txn_error(
580 p_api_version => 1.0,
581 p_init_msg_list => fnd_api.g_true,
582 p_commit => fnd_api.g_false,
583 p_validation_level => fnd_api.g_valid_level_full,
584 p_txn_error_rec => l_txn_error_rec,
585 x_return_status => l_return_status,
586 x_msg_count => l_msg_count,
587 x_msg_data => l_msg_data,
588 x_transaction_error_id => l_txn_error_id);
589
590 END IF;
591
592 END IF; -- feeder_system_name = 'ORACLE PROJECTS'
593 END LOOP;
594 END IF; -- p_inv_tbl.count > 0
595 END IF;
596 END IF;
597
598 RETURN TRUE;
599
600 EXCEPTION
601 WHEN fnd_api.g_exc_error THEN
602 RETURN FALSE;
603 WHEN others THEN
604 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
605 fnd_message.set_token('API_NAME','csi_fa_integration_grp.adjustment');
606 fnd_message.set_token('SQL_ERROR',sqlerrm);
607 fnd_msg_pub.add;
608 RETURN FALSE;
609 END adjustment;
610
611 FUNCTION transfer(
612 p_trans_rec IN fa_api_types.trans_rec_type,
613 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
614 p_asset_dist_tbl IN fa_api_types.asset_dist_tbl_type)
615 RETURN boolean
616 IS
617 BEGIN
618 IF is_oat_enabled THEN
619 -- invoke oat routines
620 null;
621 END IF;
622 RETURN TRUE;
623 EXCEPTION
624 WHEN fnd_api.g_exc_error THEN
625 RETURN FALSE;
626 WHEN others THEN
627 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
628 fnd_message.set_token('API_NAME','csi_fa_integration_grp.transfer');
629 fnd_message.set_token('SQL_ERROR',sqlerrm);
630 fnd_msg_pub.add;
631 RETURN FALSE;
632 END transfer;
633
634 FUNCTION retire(
635 p_asset_id IN number,
636 p_book_type_code IN varchar2,
637 p_retirement_id IN number,
638 p_retirement_date IN date,
639 p_retirement_units IN number)
640 RETURN boolean
641 IS
642 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
643 l_error_message varchar2(2000);
644 BEGIN
645 IF is_oat_enabled THEN
646 null;
647 END IF;
648 RETURN TRUE;
649 EXCEPTION
650 WHEN fnd_api.g_exc_error THEN
651 RETURN FALSE;
652 WHEN others THEN
653 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
654 fnd_message.set_token('API_NAME','csi_fa_integration_grp.retire');
655 fnd_message.set_token('SQL_ERROR',sqlerrm);
656 fnd_msg_pub.add;
657 RETURN FALSE;
658 END retire;
659
660 FUNCTION reinstate(
661 p_asset_id IN number,
662 p_book_type_code IN varchar2,
663 p_retirement_id IN number,
664 p_reinstatement_date IN date,
665 p_reinstatement_units IN number)
666 RETURN boolean
667 IS
668 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
669 l_error_message varchar2(2000);
670 BEGIN
671 IF is_oat_enabled THEN
672 -- invoke oat routines
673 cse_fa_txn_pkg.asset_reinstatement(
674 p_retirement_id => p_retirement_id,
675 p_book_type_code => p_book_type_code,
676 p_asset_id => p_asset_id,
677 p_units => p_reinstatement_units,
678 p_trans_date => p_reinstatement_date,
679 p_trans_by => fnd_global.user_id,
680 x_return_status => l_return_status,
681 x_error_message => l_error_message);
682
683 IF l_return_status <> fnd_api.g_ret_sts_success THEN
684 RAISE fnd_api.g_exc_error;
685 END IF;
686
687 END IF;
688 RETURN TRUE;
689 EXCEPTION
690 WHEN fnd_api.g_exc_error THEN
691 RETURN FALSE;
692 WHEN others THEN
693 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
694 fnd_message.set_token('API_NAME','csi_fa_integration_grp.reinstate');
695 fnd_message.set_token('SQL_ERROR',sqlerrm);
696 fnd_msg_pub.add;
697 RETURN FALSE;
698 END reinstate;
699
700 END cse_fa_integration_grp;