[Home] [Help]
PACKAGE BODY: APPS.CSE_FA_INTEGRATION_GRP
Source
1 PACKAGE BODY cse_fa_integration_grp AS
2 /* $Header: CSEGFAIB.pls 120.21 2012/03/08 08:41:50 dsingire ship $ */
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;
47 END debug;
44 EXCEPTION
45 WHEN others THEN
46 null;
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,
191 FROM csi_i_assets cia,
188 cia.object_version_number,
189 cii.inventory_item_id,
190 cii.serial_number
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.instance_asset_id := fnd_api.g_miss_num; -- Bug 12687801
309 l_inst_asset_rec.fa_asset_id := p_asset_hdr_rec.asset_id;
313 l_inst_asset_rec.instance_id := l_instance_Id;
310 l_inst_asset_rec.fa_book_type_code := p_asset_hdr_rec.book_type_code;
311 l_inst_asset_rec.asset_quantity := p_asset_dist_tbl(1).units_assigned;
312 l_inst_asset_rec.fa_location_id := p_asset_dist_tbl(1).location_ccid;
314 l_inst_asset_rec.update_status := cse_datastructures_pub.g_in_service;
315 l_inst_asset_rec.check_for_instance_expiry:= fnd_api.g_false;
316
317 create_inst_asset(
318 px_csi_txn_rec => l_csi_txn_rec,
319 px_inst_asset_rec => l_inst_asset_rec,
320 x_return_status => l_return_status);
321
322 IF l_return_status <> fnd_api.g_ret_sts_success THEN
323 RAISE fnd_api.g_exc_error;
324 END IF;
325
326 ELSE
327
328 IF l_inst_asset_tbl.COUNT = 1 THEN
329
330 l_inst_asset_rec.instance_asset_id := l_inst_asset_tbl(1).instance_asset_id;
331 l_inst_asset_rec.fa_asset_id := p_asset_hdr_rec.asset_id;
332 l_inst_asset_rec.fa_book_type_code := p_asset_hdr_rec.book_type_code;
333 -- assuming that there is only one distribution per addition
334 l_inst_asset_rec.fa_location_id := p_asset_dist_tbl(1).location_ccid;
335 l_inst_asset_rec.asset_quantity := l_inst_asset_tbl(1).asset_quantity +
336 p_asset_dist_tbl(1).transaction_units;
337 -- Bug 8901283 Assigning object version queried
338 -- This will fix both R12 and 12.1.1 issues
339 l_inst_asset_rec.object_version_number := l_inst_asset_tbl(1).object_version_number;
340
341 update_inst_asset (
342 px_csi_txn_rec => l_csi_txn_rec,
343 px_inst_asset_rec => l_inst_asset_rec,
344 x_return_status => l_return_status);
345
346 IF l_return_status <> fnd_api.g_ret_sts_success THEN
347 RAISE fnd_api.g_exc_error;
348 END IF;
349 ELSE
350 null;
351 END IF;
352 END IF;
353
354 ELSE
355
356 -- dump in to the staging table
357 cse_fa_stage_pkg.stage_addition(
358 p_trans_rec => p_trans_rec,
359 p_asset_hdr_rec => p_asset_hdr_rec,
360 p_asset_desc_rec => p_asset_desc_rec,
361 p_asset_fin_rec => p_asset_fin_rec,
362 p_asset_dist_tbl => p_asset_dist_tbl,
363 p_inv_tbl => p_inv_tbl);
364
365 END IF; -- instance is is not null
366 END IF;
367
368 ELSE
369
370 -- dump in to the staging table
371 cse_fa_stage_pkg.stage_addition(
372 p_trans_rec => p_trans_rec,
373 p_asset_hdr_rec => p_asset_hdr_rec,
374 p_asset_desc_rec => p_asset_desc_rec,
375 p_asset_fin_rec => p_asset_fin_rec,
376 p_asset_dist_tbl => p_asset_dist_tbl,
377 p_inv_tbl => p_inv_tbl);
378
379 END IF; -- proj or oat identifies chk
380
381 ELSE
382
383 -- dump in to the staging table
384 cse_fa_stage_pkg.stage_addition(
385 p_trans_rec => p_trans_rec,
386 p_asset_hdr_rec => p_asset_hdr_rec,
387 p_asset_desc_rec => p_asset_desc_rec,
388 p_asset_fin_rec => p_asset_fin_rec,
389 p_asset_dist_tbl => p_asset_dist_tbl,
390 p_inv_tbl => p_inv_tbl);
391
392 END IF;
393 END LOOP;
394 ELSE
395
396 -- dump in to the staging table
397 cse_fa_stage_pkg.stage_addition(
398 p_trans_rec => p_trans_rec,
399 p_asset_hdr_rec => p_asset_hdr_rec,
400 p_asset_desc_rec => p_asset_desc_rec,
401 p_asset_fin_rec => p_asset_fin_rec,
402 p_asset_dist_tbl => p_asset_dist_tbl,
403 p_inv_tbl => p_inv_tbl);
404
405 END IF;
406
407 END IF;
408 RETURN TRUE;
409 EXCEPTION
410 WHEN fnd_api.g_exc_error THEN
411 rollback to cse_addition;
412 RETURN FALSE;
413 WHEN others THEN
414 rollback to cse_addition;
415 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
416 fnd_message.set_token('API_NAME','csi_fa_integration_grp.addition');
417 fnd_message.set_token('SQL_ERROR',sqlerrm);
418 fnd_msg_pub.add;
419 RETURN FALSE;
420 END addition;
421
422 FUNCTION unit_adjustment(
423 p_trans_rec IN fa_api_types.trans_rec_type,
424 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
425 p_asset_dist_tbl IN fa_api_types.asset_dist_tbl_type)
426 RETURN boolean
427 IS
428 BEGIN
429 IF is_oat_enabled THEN
430 -- invoke oat routines
431 null;
432 END IF;
433 RETURN TRUE;
434 EXCEPTION
435 WHEN fnd_api.g_exc_error THEN
436 RETURN FALSE;
437 WHEN others THEN
438 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
439 fnd_message.set_token('API_NAME','csi_fa_integration_grp.unit_adjustment');
440 fnd_message.set_token('SQL_ERROR',sqlerrm);
444
441 fnd_msg_pub.add;
442 RETURN FALSE;
443 END unit_adjustment;
445 FUNCTION adjustment(
446 p_trans_rec IN fa_api_types.trans_rec_type,
447 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
448 p_asset_fin_rec_adj IN fa_api_types.asset_fin_rec_type,
449 p_inv_tbl IN fa_api_types.inv_tbl_type)
450 RETURN boolean IS
451
452 l_asset_id number;
453 l_book_type_code varchar2(30);
454 l_units number;
455 l_current_units number;
456 l_location_id number;
457 l_expense_ccid number;
458 l_employee_id number;
459 l_new_dist_id number;
460 l_instance_id number;
461 l_exp_item_id number;
462
463 l_txn_error_id number;
464 l_txn_error_rec csi_datastructures_pub.transaction_error_rec;
465
466 l_xml_string varchar2(2000);
467 l_error_message varchar2(4000);
468 l_msg_count number;
469 l_msg_data varchar2(4000);
470 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
471
472 CURSOR exp_inst_cur(p_project_asset_line_id IN number) IS
473 SELECT pei.expenditure_item_id,
474 pei.orig_transaction_reference txn_ref,
475 pei.attribute6 item,
476 pei.attribute7 serial_number,
477 pei.attribute8 location,
478 pei.attribute9 asset_category,
479 pei.attribute10 product_class,
480 ppa.location_id,
481 ppa.depreciation_expense_ccid expense_ccid,
482 ppa.assigned_to_person_id employee_id
483 FROM pa_expenditure_items_all pei,
484 pa_project_asset_line_details ppald,
485 pa_project_asset_lines_all ppal,
486 pa_project_assets_all ppa
487 WHERE ppal.project_asset_line_id = p_project_asset_line_id
488 AND ppa.project_asset_id = ppal.project_asset_id
489 AND ppald.project_asset_line_detail_id = ppal.project_asset_line_detail_id
490 AND pei.expenditure_item_id = ppald.expenditure_item_id
491 AND pei.transaction_source IN ('CSE_PO_RECEIPT','CSE_INV_ISSUE')
492 AND pei.net_zero_adjustment_flag = 'N'
493 AND (pei.attribute8 is not null and pei.attribute9 is not null);
494
495 BEGIN
496 IF is_oat_enabled THEN
497 debug('inside cse_fa_integration_grp.cost_adjustment');
498 -- cost adjustment only for now
499 IF nvl(p_asset_fin_rec_adj.cost, 0) <> 0 THEN
500 -- invoke oat routines
501 IF p_inv_tbl.COUNT > 0 THEN
502 FOR p_ind IN p_inv_tbl.FIRST .. p_inv_tbl.LAST
503 LOOP
504
505 debug(' feeder_system_name : '||p_inv_tbl(p_ind).feeder_system_name);
506
507 IF p_inv_tbl(p_ind).feeder_system_name = 'ORACLE PROJECTS' THEN
508
509 l_asset_id := p_asset_hdr_rec.asset_id;
510 l_book_type_code := p_asset_hdr_rec.book_type_code;
511
512 debug(' asset_id : '||l_asset_id);
513 debug(' book_type_code : '||l_book_type_code);
514 debug(' project_id : '||p_inv_tbl(p_ind).project_id);
515 debug(' task_id : '||p_inv_tbl(p_ind).task_id);
516 debug(' project_asset_line_id : '||p_inv_tbl(p_ind).project_asset_line_id);
517 debug(' transaction_type_code : '||p_trans_rec.transaction_type_code);
518 debug(' transaction_subtype : '||p_trans_rec.transaction_subtype);
519 debug(' payables_units : '||p_inv_tbl(p_ind).payables_units);
520
521 SELECT current_units
522 INTO l_current_units
523 FROM fa_additions
524 WHERE asset_id = l_asset_id;
525
526 debug(' current_units : '||l_current_units);
527
528 l_units := p_inv_tbl(p_ind).payables_units - l_current_units;
529
530 debug(' units_adjusted : '||l_units);
531
532 FOR exp_inst_rec IN exp_inst_cur(p_inv_tbl(p_ind).project_asset_line_id)
533 LOOP
534
535 l_location_id := exp_inst_rec.location_id;
536 l_expense_ccid := exp_inst_rec.expense_ccid;
537 l_employee_id := exp_inst_rec.employee_id;
538 l_exp_item_id := exp_inst_rec.expenditure_item_id;
539
540 BEGIN
541 l_instance_id:=to_number(substr(exp_inst_rec.txn_ref,1,(instr(exp_inst_rec.txn_ref,'-')-1)));
542 EXCEPTION
543 WHEN others THEN
544 l_instance_id := null;
545 END;
546
547 debug(' expenditure_item_id : '||exp_inst_rec.expenditure_item_id);
548 debug(' txn_ref : '||exp_inst_rec.txn_ref);
549 debug(' instance_id : '||l_instance_id);
550 debug(' location_id : '||l_location_id);
551 debug(' depreciation_expense_ccid : '||l_expense_ccid);
552
553 IF l_instance_id is not null THEN
554 EXIT;
555 END IF;
556
557 END LOOP;
558
559 IF l_instance_id is not null AND l_units <> 0 THEN
560
561 cse_util_pkg.build_error_string(l_xml_string,'ASSET_ID',l_asset_id);
562 cse_util_pkg.build_error_string(l_xml_string,'BOOK_TYPE_CODE',l_book_type_code);
563 cse_util_pkg.build_error_string(l_xml_string,'UNITS',l_units);
567 cse_util_pkg.build_error_string(l_xml_string,'INSTANCE_ID',l_instance_id);
564 cse_util_pkg.build_error_string(l_xml_string,'LOCATION_ID',l_location_id);
565 cse_util_pkg.build_error_string(l_xml_string,'EMPLOYEE_ID',l_employee_id);
566 cse_util_pkg.build_error_string(l_xml_string,'DEPRN_EXPENSE_CCID',l_expense_ccid);
568 cse_util_pkg.build_error_string(l_xml_string,'PA_ASSET_LINE_ID',p_inv_tbl(p_ind).project_asset_line_id);
569 cse_util_pkg.build_error_string(l_xml_string,'EXP_ITEM_ID', l_exp_item_id);
570
571 l_txn_error_rec.source_id := p_inv_tbl(p_ind).project_asset_line_id;
572 l_txn_error_rec.source_type := 'FA_UNIT_ADJUSTMENT_NORMAL';
573 l_txn_error_rec.source_header_ref := 'ASSET_ID';
574 l_txn_error_rec.source_header_ref_id := l_asset_id;
575 l_txn_error_rec.source_line_ref := 'EXP_ITEM_ID';
576 l_txn_error_rec.source_line_ref_id := l_exp_item_id;
577 l_txn_error_rec.processed_flag := cse_datastructures_pub.g_bypass_flag;
578 l_txn_error_rec.error_text := l_error_message;
579 l_txn_error_rec.error_stage := cse_datastructures_pub.g_fa_update;
580 l_txn_error_rec.message_string := l_xml_string;
581
582 debug('calling csi_transactions_pvt.create_txn_error to create unit adjustment entry');
583
584 csi_transactions_pvt.create_txn_error(
585 p_api_version => 1.0,
586 p_init_msg_list => fnd_api.g_true,
587 p_commit => fnd_api.g_false,
588 p_validation_level => fnd_api.g_valid_level_full,
589 p_txn_error_rec => l_txn_error_rec,
590 x_return_status => l_return_status,
591 x_msg_count => l_msg_count,
592 x_msg_data => l_msg_data,
593 x_transaction_error_id => l_txn_error_id);
594
595 END IF;
596
597 END IF; -- feeder_system_name = 'ORACLE PROJECTS'
598 END LOOP;
599 END IF; -- p_inv_tbl.count > 0
600 END IF;
601 END IF;
602
603 RETURN TRUE;
604
605 EXCEPTION
606 WHEN fnd_api.g_exc_error THEN
607 RETURN FALSE;
608 WHEN others THEN
609 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
610 fnd_message.set_token('API_NAME','csi_fa_integration_grp.adjustment');
611 fnd_message.set_token('SQL_ERROR',sqlerrm);
612 fnd_msg_pub.add;
613 RETURN FALSE;
614 END adjustment;
615
616 FUNCTION transfer(
617 p_trans_rec IN fa_api_types.trans_rec_type,
618 p_asset_hdr_rec IN fa_api_types.asset_hdr_rec_type,
619 p_asset_dist_tbl IN fa_api_types.asset_dist_tbl_type)
620 RETURN boolean
621 IS
622 BEGIN
623 IF is_oat_enabled THEN
624 -- invoke oat routines
625 null;
626 END IF;
627 RETURN TRUE;
628 EXCEPTION
629 WHEN fnd_api.g_exc_error THEN
630 RETURN FALSE;
631 WHEN others THEN
632 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
633 fnd_message.set_token('API_NAME','csi_fa_integration_grp.transfer');
634 fnd_message.set_token('SQL_ERROR',sqlerrm);
635 fnd_msg_pub.add;
636 RETURN FALSE;
637 END transfer;
638
639 FUNCTION retire(
640 p_asset_id IN number,
641 p_book_type_code IN varchar2,
642 p_retirement_id IN number,
643 p_retirement_date IN date,
644 p_retirement_units IN number)
645 RETURN boolean
646 IS
647 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
648 l_error_message varchar2(2000);
649 BEGIN
650 IF is_oat_enabled THEN
651 null;
652 END IF;
653 RETURN TRUE;
654 EXCEPTION
655 WHEN fnd_api.g_exc_error THEN
656 RETURN FALSE;
657 WHEN others THEN
658 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
659 fnd_message.set_token('API_NAME','csi_fa_integration_grp.retire');
660 fnd_message.set_token('SQL_ERROR',sqlerrm);
661 fnd_msg_pub.add;
662 RETURN FALSE;
663 END retire;
664
665 FUNCTION reinstate(
666 p_asset_id IN number,
667 p_book_type_code IN varchar2,
668 p_retirement_id IN number,
669 p_reinstatement_date IN date,
670 p_reinstatement_units IN number)
671 RETURN boolean
672 IS
673 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
674 l_error_message varchar2(2000);
675 BEGIN
676 IF is_oat_enabled THEN
677 -- invoke oat routines
678 cse_fa_txn_pkg.asset_reinstatement(
679 p_retirement_id => p_retirement_id,
680 p_book_type_code => p_book_type_code,
681 p_asset_id => p_asset_id,
682 p_units => p_reinstatement_units,
683 p_trans_date => p_reinstatement_date,
684 p_trans_by => fnd_global.user_id,
685 x_return_status => l_return_status,
686 x_error_message => l_error_message);
687
688 IF l_return_status <> fnd_api.g_ret_sts_success THEN
689 RAISE fnd_api.g_exc_error;
690 END IF;
691
692 END IF;
693 RETURN TRUE;
694 EXCEPTION
695 WHEN fnd_api.g_exc_error THEN
696 RETURN FALSE;
697 WHEN others THEN
698 fnd_message.set_name('CSI','CSI_UNEXP_SQL_ERROR');
699 fnd_message.set_token('API_NAME','csi_fa_integration_grp.reinstate');
703 END reinstate;
700 fnd_message.set_token('SQL_ERROR',sqlerrm);
701 fnd_msg_pub.add;
702 RETURN FALSE;
704
705 END cse_fa_integration_grp;