[Home] [Help]
PACKAGE BODY: APPS.INV_EBI_ITEM_PUB
Source
1 PACKAGE BODY INV_EBI_ITEM_PUB AS
2 /* $Header: INVEIPITB.pls 120.24.12010000.7 2009/02/19 11:21:36 prepatel ship $ */
3
4 /************************************************************************************
5 -- API name : validate_item
6 -- Type : Public
7 -- Function :
8 --
9 ************************************************************************************/
10 PROCEDURE validate_item (
11 p_transaction_type IN VARCHAR2
12 ,p_item IN inv_ebi_item_obj
13 ,x_out OUT NOCOPY inv_ebi_item_output_obj
14 ) IS
15 l_master_org_id NUMBER;
16 l_is_master_org VARCHAR2(3) := FND_API.g_false;
17 l_is_new_item_request_reqd VARCHAR2(3) := FND_API.g_false;
18 l_output_status inv_ebi_output_status;
19 l_item_catalog_group_code VARCHAR2(40);
20 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl;
21 BEGIN
22 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
23 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL);
24 FND_MSG_PUB.initialize;
25 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
26 IF(p_transaction_type = INV_EBI_ITEM_PUB.g_otype_create) THEN
27 IF(p_item.main_obj_type.organization_id IS NULL OR p_item.main_obj_type.organization_id = fnd_api.g_miss_num) THEN
28
29 x_out.organization_id := INV_EBI_ITEM_HELPER.get_default_master_org(
30 p_config => p_item.name_value_tbl
31 );
32
33 IF x_out.organization_id IS NULL THEN
34 FND_MESSAGE.set_name('INV','INV_EBI_NO_DEFAULT_ORG');
35 FND_MSG_PUB.add;
36 RAISE FND_API.g_exc_error;
37 ELSE
38 l_is_master_org := FND_API.g_true;
39 END IF;
40
41 END IF;
42
43 IF(p_item.main_obj_type.organization_id IS NOT NULL
44 AND p_item.main_obj_type.organization_id <> FND_API.g_miss_num) THEN
45 l_is_master_org := INV_EBI_UTIL.is_master_org(
46 p_organization_id => p_item.main_obj_type.organization_id
47 );
48
49 END IF;
50
51 IF(l_is_master_org = FND_API.g_true) THEN
52 l_is_new_item_request_reqd := INV_EBI_ITEM_HELPER.is_new_item_request_reqd(
53 p_item_catalog_group_id => p_item.main_obj_type.item_catalog_group_id
54 );
55
56 IF(l_is_new_item_request_reqd = FND_API.g_true) THEN
57 FND_MESSAGE.set_name('INV','INV_EBI_ICC_CONFG_FOR_NIR');
58 IF p_item.main_obj_type.item_catalog_group_code IS NULL THEN
59 l_pk_col_name_val_pairs.EXTEND(1);
60 l_pk_col_name_val_pairs(1).name := 'item_catalog_group_id';
61 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.item_catalog_group_id;
62 l_item_catalog_group_code := INV_EBI_ITEM_HELPER.id_to_value(
63 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
64 ,p_entity_name => INV_EBI_ITEM_HELPER.G_ITEM_CATALOG_GROUP
65 );
66 l_pk_col_name_val_pairs.TRIM(1);
67
68 ELSE
69 l_item_catalog_group_code := p_item.main_obj_type.item_catalog_group_code;
70 END IF;
71
72 FND_MESSAGE.set_token('ITEM',p_item.main_obj_type.item_number);
73 FND_MESSAGE.set_token('ITEM_CATALOG', l_item_catalog_group_code);
74 FND_MSG_PUB.add;
75 RAISE FND_API.g_exc_error;
76
77 END IF;
78 END IF;
79 END IF;
80 EXCEPTION
81 WHEN FND_API.g_exc_error THEN
82 x_out.output_status.return_status := FND_API.g_ret_sts_error;
83 IF(x_out.output_status.msg_data IS NULL) THEN
84 FND_MSG_PUB.count_and_get(
85 p_encoded => FND_API.g_false
86 ,p_count => x_out.output_status.msg_count
87 ,p_data => x_out.output_status.msg_data
88 );
89 END IF;
90 WHEN OTHERS THEN
91 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
92 IF (x_out.output_status.msg_data IS NOT NULL) THEN
93 x_out.output_status.msg_data := x_out.output_status.msg_data||' -> INV_EBI_ITEM_PUB.validate_item ';
94 ELSE
95 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_PUB.validate_item ';
96 END IF;
97 END validate_item;
98
99 /************************************************************************************
100 -- API name : process_item
101 -- Type : Public
102 -- Function :
103 --
104 ************************************************************************************/
105 PROCEDURE process_item(
106 p_commit IN VARCHAR2
107 ,p_operation IN VARCHAR2
108 ,p_item IN inv_ebi_item_obj
109 ,x_out OUT NOCOPY inv_ebi_item_output_obj
110 )
111 IS
112 l_item inv_ebi_item_obj;
113 l_output_status inv_ebi_output_status;
114 l_api_version NUMBER:=1.0;
115 l_out inv_ebi_item_output_obj;
116
117 BEGIN
118 SAVEPOINT inv_ebi_process_item_save_pnt;
119 ERROR_HANDLER.initialize;
120 FND_MSG_PUB.initialize;
121
122 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
123 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL);
124 INV_EBI_UTIL.SETUP(); --- one time for each process.
125
126 INV_EBI_UTIL.debug_line('STEP: 10 '||'START INSIDE INV_EBI_ITEM_PUB.process_item '||
127 'ORGANIZATION CODE: '||p_item.main_obj_type.organization_code||
128 'Item Number: '||p_item.main_obj_type.item_number
129 );
130 INV_EBI_UTIL.debug_line('STEP: 20 '||'START CALLING INV_EBI_ITEM_HELPER.populate_item_ids ');
131 INV_EBI_ITEM_HELPER.populate_item_ids(
132 p_item => p_item
133 ,x_out => x_out
134 ,x_item => l_item
135 );
136 INV_EBI_UTIL.debug_line('STEP: 30 '||'END CALLING INV_EBI_ITEM_HELPER.populate_item_ids ');
137
138 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
139 RAISE FND_API.g_exc_unexpected_error;
140 END IF;
141
142 INV_EBI_UTIL.debug_line('STEP: 40 '||'START CALLING validate_item ');
143 validate_item (
144 p_transaction_type => p_operation
145 ,p_item => l_item
146 ,x_out => x_out
147 );
148 INV_EBI_UTIL.debug_line('STEP: 50 '||'END CALLING validate_item ');
149
150 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
151 RAISE FND_API.g_exc_unexpected_error;
152 END IF;
153
154 IF(l_item.main_obj_type.organization_id IS NULL OR l_item.main_obj_type.organization_id = FND_API.g_miss_num) THEN
155 l_item.main_obj_type.organization_id := x_out.organization_id;
156 END IF;
157
158 IF (l_item.main_obj_type.effectivity_date IS NULL OR
159 l_item.main_obj_type.effectivity_date = fnd_api.g_miss_date OR
160 l_item.main_obj_type.effectivity_date <= sysdate ) THEN
161 l_item.main_obj_type.effectivity_date := sysdate+(2/(60*60*24));
162 END IF;
163
164 --To create Production item
165 INV_EBI_UTIL.debug_line('STEP: 60 '||'START CALLING INV_EBI_ITEM_HELPER.sync_item ');
166
167 INV_EBI_ITEM_HELPER.sync_item (
168 p_commit => FND_API.g_false
169 ,p_operation => p_operation
170 ,p_item => l_item
171 ,x_out => l_out
172 );
173
174 INV_EBI_UTIL.debug_line('STEP: 70 '||'END CALLING INV_EBI_ITEM_HELPER.sync_item ');
175 IF (l_out.output_status.return_status <> fnd_api.g_ret_sts_success) THEN
176 x_out.output_status.msg_data := l_out.output_status.msg_data;
177 RAISE fnd_api.g_exc_unexpected_error;
178 END IF;
179
180 x_out.inventory_item_id := l_out.inventory_item_id;
181 x_out.organization_id := l_out.organization_id;
182 x_out.organization_code := l_out.organization_code;
183 x_out.item_number := l_out.item_number;
184 x_out.category_output := l_out.category_output;
185 x_out.operating_unit := l_out.operating_unit;
186 x_out.operating_unit_id := l_out.operating_unit_id;
187
188 -- To process Udas
189 IF (INV_EBI_UTIL.is_pim_installed AND l_item.main_obj_type.item_catalog_group_id IS NOT NULL ) THEN
190 IF (l_item.uda_type IS NOT NULL AND l_item.uda_type.attribute_group_tbl.COUNT > 0) THEN
191 INV_EBI_ITEM_HELPER.process_item_uda(
192 p_api_version => l_api_version
193 ,p_inventory_item_id => x_out.inventory_item_id
194 ,p_organization_id => x_out.organization_id
195 ,p_item_catalog_group_id => l_item.main_obj_type.item_catalog_group_id
196 ,p_revision_id => l_item.main_obj_type.revision_id
197 ,p_revision_code => l_item.main_obj_type.revision_code
198 ,p_uda_input_obj => l_item.uda_type
199 ,p_commit => fnd_api.g_false
200 ,x_uda_output_obj => l_out
201 );
202 END IF;
203 END IF;
204
205 IF (l_out.output_status.return_status <> fnd_api.g_ret_sts_success) THEN
206 RAISE FND_API.g_exc_unexpected_error;
207 END IF;
208
209 x_out.uda_output := l_out.uda_output;
210
211 x_out.output_status.error_table := INV_EBI_UTIL.get_error_table();
212
213 x_out.output_status.msg_data := INV_EBI_UTIL.get_error_table_msgtxt(x_out.output_status.error_table);
214
215 IF FND_API.to_boolean(p_commit) THEN
216 COMMIT;
217 END IF;
218 INV_EBI_UTIL.debug_line('STEP: 80 '||'END INSIDE INV_EBI_ITEM_HELPER.process_item '||
219 'ORGANIZATION CODE: '||p_item.main_obj_type.organization_code||
220 'Item Number: '||p_item.main_obj_type.item_number
221 );
222 INV_EBI_UTIL.wrapup;
223 EXCEPTION
224 WHEN FND_API.g_exc_error THEN
225 ROLLBACK TO inv_ebi_process_item_save_pnt;
226 x_out.output_status.return_status := FND_API.g_ret_sts_error;
227 IF(x_out.output_status.msg_data IS NULL) THEN
228 FND_MSG_PUB.count_and_get(
229 p_encoded => FND_API.g_false
230 ,p_count => x_out.output_status.msg_count
231 ,p_data => x_out.output_status.msg_data
232 );
233 END IF;
234 WHEN FND_API.g_exc_unexpected_error THEN
235 ROLLBACK TO inv_ebi_process_item_save_pnt;
236 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
237 IF(x_out.output_status.msg_data IS NULL) THEN
238 FND_MSG_PUB.count_and_get(
239 p_encoded => FND_API.g_false
240 ,p_count => x_out.output_status.msg_count
241 ,p_data => x_out.output_status.msg_data
242 );
243 END IF;
244 WHEN OTHERS THEN
245 ROLLBACK TO inv_ebi_process_item_save_pnt;
246 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
247 IF (x_out.output_status.msg_data IS NOT NULL) THEN
248 x_out.output_status.msg_data := x_out.output_status.msg_data ||' -> INV_EBI_ITEM_PUB.process_item ';
249 ELSE
250 x_out.output_status.msg_data := SQLERRM ||' INV_EBI_ITEM_PUB.process_item ';
251 END IF;
252 END process_item;
253
254 /************************************************************************************
255 -- API name : get_item_balance
256 -- Type : Public
257 -- Function :
258 ************************************************************************************/
259 PROCEDURE get_item_balance(
260 p_items IN inv_ebi_item_list
261 ,x_item_balance_output OUT NOCOPY inv_ebi_item_bal_output_list
262 ,x_return_status OUT NOCOPY VARCHAR2
263 ,x_msg_count OUT NOCOPY NUMBER
264 ,x_msg_data OUT NOCOPY VARCHAR2
265 )
266 IS
267 l_return_status VARCHAR2(1);
268 l_msg_count NUMBER;
269 l_msg_data VARCHAR2(1000);
270 l_items inv_ebi_item_list;
271 l_item_balance_input inv_ebi_item_bal_input_list;
272 l_item_bal_input_tbl inv_ebi_item_bal_input_tbl;
273 l_item_bal_input_obj inv_ebi_item_bal_input_obj;
274 l_api_version NUMBER:=1.0;
275
276 BEGIN
277 l_item_bal_input_tbl := inv_ebi_item_bal_input_tbl();
278
279 l_items := p_items;
280 x_return_status := FND_API.G_RET_STS_SUCCESS;
281
282 IF (l_items.item_table.COUNT > 0) THEN
283 FOR i IN l_items.item_table.FIRST..l_items.item_table.LAST LOOP
284 l_item_bal_input_tbl.extend();
285 l_item_bal_input_obj := inv_ebi_item_bal_input_obj(
286 l_api_version
287 ,fnd_api.g_true
288 ,l_items.item_table(i).organization_id
289 ,l_items.item_table(i).inventory_item_id
290 ,inv_quantity_tree_pub.g_transaction_mode
291 ,NULL
292 ,NULL
293 ,NULL
294 ,NULL
295 ,-9999
296 ,-9999
297 ,-9999
298 ,NULL
299 ,NULL
300 ,NULL
301 ,NULL
302 ,NULL
303 ,NULL
304 ,inv_quantity_tree_pvt.g_all_subs
305 ,NULL
306 ,NULL
307 ,NULL
308 ,NULL
309 ,fnd_api.g_true
310 );
311 l_item_bal_input_tbl(i) := l_item_bal_input_obj;
312 END LOOP;
313
314 l_item_balance_input := inv_ebi_item_bal_input_list(l_item_bal_input_tbl);
315
316 INV_EBI_ITEM_HELPER.get_item_balance(
317 p_item_balance_input => l_item_balance_input
318 ,x_item_balance_output => x_item_balance_output
319 ,x_return_status => x_return_status
320 ,x_msg_count => x_msg_count
321 ,x_msg_data => x_msg_data
322 );
323
324 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
325 RAISE FND_API.g_exc_unexpected_error;
326 END IF;
327 END IF;
328
329 EXCEPTION
330 WHEN FND_API.g_exc_unexpected_error THEN
331 x_return_status := FND_API.g_ret_sts_error;
332 IF (x_msg_data IS NULL) THEN
333 FND_MSG_PUB.count_and_get(
334 p_encoded => FND_API.g_false
335 ,p_count => x_msg_count
336 ,p_data => x_msg_data
337 );
338 END IF;
339 WHEN OTHERS THEN
340 x_return_status := FND_API.g_ret_sts_unexp_error;
341 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_PUB.get_item_balance';
342 END get_item_balance;
343 /************************************************************************************
344 -- API name : Convert_date_str
345 -- Type : Public
346 -- Function :
347 ************************************************************************************/
348
349 PROCEDURE Convert_date_str(p_item_tbl_obj IN inv_ebi_item_attr_tbl_obj
350 ,x_item_tbl_obj OUT NOCOPY inv_ebi_item_attr_tbl_obj)
351 IS
352 BEGIN
353
354 IF p_item_tbl_obj IS NOT NULL THEN
355 x_item_tbl_obj := p_item_tbl_obj;
356 END IF;
357
358 IF p_item_tbl_obj.ITEM_ATTR_TBL IS NOT NULL AND p_item_tbl_obj.ITEM_ATTR_TBL.COUNT>0 THEN
359 FOR i IN p_item_tbl_obj.ITEM_ATTR_TBL.FIRST..p_item_tbl_obj.ITEM_ATTR_TBL.LAST LOOP
360 ------------------------------------------------------------------
361 -- To Convert Date Fields in main_obj_type (INV_EBI_ITEM_MAIN_OBJ)
362 ------------------------------------------------------------------
363 x_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.start_date_active_str :=
364 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.start_date_active);
365 x_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.end_date_active_str :=
366 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.end_date_active);
367 x_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.creation_date_str:=
368 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.creation_date);
369 x_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.last_update_date_str :=
370 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.last_update_date_str);
371 x_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.program_update_date_str:=
372 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.main_obj_type.program_update_date);
373
374 --------------------------------------------------------------------------------
375 -- To Convert Date Fields in deprecated_obj_type (INV_EBI_ITEM_DEPRECATED_OBJ)
376 --------------------------------------------------------------------------------
377 IF(p_item_tbl_obj.item_attr_tbl(i).item_obj.deprecated_obj_type IS NOT NULL) THEN
378 x_item_tbl_obj.item_attr_tbl(i).item_obj.deprecated_obj_type.engineering_date_str :=
379 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.deprecated_obj_type.engineering_date);
380 x_item_tbl_obj.item_attr_tbl(i).item_obj.deprecated_obj_type.wh_update_date :=
381 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.deprecated_obj_type.wh_update_date);
382 END IF;
383
384 --------------------------------------------------------------------------------
385 -- To Convert Date Fields in attribute_group_tbl(INV_EBI_UDA_ATTR_GRP_TBL)
386 --------------------------------------------------------------------------------
387
388 IF(p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl IS NOT NULL AND
389 p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl.COUNT>0) THEN
390 FOR j IN p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl.FIRST..
391 p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl.LAST LOOP
392 IF(p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl(j).attributes_tbl IS NOT NULL
393 AND p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl(j).attributes_tbl.COUNT>0) THEN
394 FOR k IN p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl(j).attributes_tbl.FIRST..
395 p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl(j).attributes_tbl.LAST LOOP
396 x_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl(j).attributes_tbl(k).attr_value_date_str :=
397 INV_EBI_ITEM_HELPER.convert_date_str(p_item_tbl_obj.item_attr_tbl(i).item_obj.uda_type.attribute_group_tbl(j).attributes_tbl(k).attr_value_date);
398 END LOOP;
399 END IF;
400 END LOOP;
401 END IF;
402 END LOOP;
403 END IF;
404 EXCEPTION
405 WHEN OTHERS THEN
406 x_item_tbl_obj := p_item_tbl_obj;
407 END Convert_date_str;
408
409
410 /************************************************************************************
411 -- API name : get_item_attributes
412 -- Type : Public
413 -- Function :
414 ************************************************************************************/
415
416 PROCEDURE get_item_attributes(
417 p_items IN inv_ebi_item_list
418 ,p_name_val_list IN inv_ebi_name_value_list
419 ,x_item_tbl_obj OUT NOCOPY inv_ebi_item_attr_tbl_obj
420 ,x_return_status OUT NOCOPY VARCHAR2
421 ,x_msg_count OUT NOCOPY NUMBER
422 ,x_msg_data OUT NOCOPY VARCHAR2
423 )
424 IS
425 l_return_status VARCHAR2(1);
426 l_msg_count NUMBER;
427 l_msg_data VARCHAR2(1000);
428 l_items inv_ebi_item_list;
429 l_get_item_inp_obj inv_ebi_get_item_input;
430 l_get_opr_attrs_tbl inv_ebi_get_opr_attrs_tbl;
431 l_get_opr_atts inv_ebi_get_operational_attrs;
432 l_inv_ebi_item_attr_tbl_obj inv_ebi_item_attr_tbl_obj;
433 BEGIN
434 l_get_opr_attrs_tbl := inv_ebi_get_opr_attrs_tbl();
435 l_items := p_items;
436 x_return_status := FND_API.G_RET_STS_SUCCESS;
437
438 INV_EBI_ITEM_HELPER.set_server_time_zone;
439
440 IF (l_items.item_table.COUNT > 0) THEN
441 FOR i IN l_items.item_table.FIRST..l_items.item_table.LAST LOOP
442 l_get_opr_attrs_tbl.extend();
443 l_get_opr_atts := inv_ebi_get_operational_attrs(
444 l_items.item_table(i).inventory_item_id
445 ,NULL
446 ,l_items.item_table(i).organization_id
447 ,NULL
448 ,NULL
449 ,NULL
450 );
451
452 l_get_opr_attrs_tbl(i) := l_get_opr_atts;
453 END LOOP;
454
455 l_get_item_inp_obj := inv_ebi_get_item_input(l_get_opr_attrs_tbl,p_name_val_list.name_value_table);
456
457 INV_EBI_ITEM_HELPER.get_item_attributes(
458 p_get_item_inp_obj => l_get_item_inp_obj
459 ,x_item_tbl_obj => x_item_tbl_obj
460 ,x_return_status => x_return_status
461 ,x_msg_count => x_msg_count
462 ,x_msg_data => x_msg_data
463 );
464
465 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
466 RAISE FND_API.g_exc_unexpected_error;
467 END IF;
468 END IF;
469
470 IF(x_item_tbl_obj.item_attr_tbl IS NOT NULL AND x_item_tbl_obj.item_attr_tbl.COUNT>0) THEN
471 l_inv_ebi_item_attr_tbl_obj := inv_ebi_item_attr_tbl_obj(x_item_tbl_obj.item_attr_tbl);
472 END IF;
473
474 -- Bug# 8201401
475 -- Call to wrapper API for converting all date fields to String
476 IF l_inv_ebi_item_attr_tbl_obj IS NOT NULL THEN
477 Convert_date_str(p_item_tbl_obj => l_inv_ebi_item_attr_tbl_obj
478 ,x_item_tbl_obj => x_item_tbl_obj);
479 END IF;
480
481
482 EXCEPTION
483 WHEN FND_API.g_exc_unexpected_error THEN
484 x_return_status := FND_API.g_ret_sts_error;
485 IF (x_msg_data IS NULL) THEN
486 FND_MSG_PUB.count_and_get(
487 p_encoded => FND_API.g_false
488 ,p_count => x_msg_count
489 ,p_data => x_msg_data);
490 END IF;
491 WHEN OTHERS THEN
492 x_return_status := FND_API.g_ret_sts_unexp_error;
493 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_PUB.get_item_attributes';
494 END get_item_attributes;
495
496 /************************************************************************************
497 -- API name : process_item_list
498 -- Type : Public
499 -- Function :
500 -- This API is used to process list of items
501 --
502 ************************************************************************************/
503 PROCEDURE process_item_list(
504 p_commit IN VARCHAR2
505 ,p_operation IN VARCHAR2
506 ,p_item IN inv_ebi_item_obj_tbl
507 ,x_out OUT NOCOPY inv_ebi_item_output_obj_tbl
508 ,x_return_status OUT NOCOPY VARCHAR2
509 ,x_msg_count OUT NOCOPY NUMBER
510 ,x_msg_data OUT NOCOPY VARCHAR2
511 )
512 IS
513 l_inv_ebi_item_obj inv_ebi_item_obj;
514 l_inv_ebi_item_output_obj inv_ebi_item_output_obj;
515
516 l_part_err_msg VARCHAR2(32000);
517 l_org_code VARCHAR2(3);
518 l_is_master_org VARCHAR2(1);
519 l_item_number VARCHAR2(2000);
520 BEGIN
521 SAVEPOINT inv_ebi_prc_itm_list_save_pnt;
522 ERROR_HANDLER.Initialize;
523 FND_MSG_PUB.initialize;
524 INV_EBI_UTIL.setup();
525 INV_EBI_UTIL.debug_line('STEP: 10 START INSIDE INV_EBI_ITEM_PUB.process_item_list');
526 x_return_status := FND_API.G_RET_STS_SUCCESS ;
527 x_out := inv_ebi_item_output_obj_tbl();
528 IF (p_item IS NOT NULL AND p_item.count > 0) THEN
529 x_out.extend(p_item.count);
530 FOR i in 1..p_item.count
531 LOOP
532 l_inv_ebi_item_obj := p_item(i);
533 IF l_inv_ebi_item_obj.main_obj_type.organization_id IS NOT NULL THEN
534 l_is_master_org := INV_EBI_UTIL.is_master_org(l_inv_ebi_item_obj.main_obj_type.organization_id);
535 ELSE
536 l_is_master_org := INV_EBI_UTIL.is_master_org(l_inv_ebi_item_obj.main_obj_type.organization_code);
537 END IF;
538 l_item_number := l_inv_ebi_item_obj.main_obj_type.item_number;
539 IF(l_is_master_org = fnd_api.g_true ) THEN
540 INV_EBI_UTIL.debug_line('STEP: 20 START CALLING INV_EBI_ITEM_PUB.process_item for ');
541 INV_EBI_ITEM_PUB.process_item(
542 p_commit => p_commit
543 ,p_operation => p_operation
544 ,p_item => l_inv_ebi_item_obj
545 ,x_out => l_inv_ebi_item_output_obj
546 );
547 INV_EBI_UTIL.debug_line('STEP: 30 END CALLING INV_EBI_ITEM_PUB.process_item for ');
548
549 x_out(i) := l_inv_ebi_item_output_obj;
550 x_out(i).integration_id := l_inv_ebi_item_obj.integration_id;
551 IF x_out(i).output_status.return_status <> FND_API.G_RET_STS_SUCCESS THEN
552 x_return_status := FND_API.G_RET_STS_ERROR;
553 x_msg_count := x_out(i).output_status.msg_count;
554 x_msg_data := x_msg_data ||'Item Name :' || l_item_number || ' Err Msg: ' || x_out(i).output_status.msg_data;
555 RAISE FND_API.g_exc_unexpected_error;
556 END IF;
557 END IF;
558 END LOOP;
559 END IF;
560
561 IF (p_item IS NOT NULL AND p_item.count > 0) THEN
562 FOR i in 1..p_item.count
563 LOOP
564 l_inv_ebi_item_obj := p_item(i);
565 IF l_inv_ebi_item_obj.main_obj_type.organization_id IS NOT NULL THEN
566 l_is_master_org := INV_EBI_UTIL.is_master_org(l_inv_ebi_item_obj.main_obj_type.organization_id);
567 ELSE
568 l_is_master_org := INV_EBI_UTIL.is_master_org(l_inv_ebi_item_obj.main_obj_type.organization_code);
569 END IF;
570 l_item_number := l_inv_ebi_item_obj.main_obj_type.item_number;
571 IF(l_is_master_org = fnd_api.g_false ) THEN
572 INV_EBI_UTIL.debug_line('STEP: 20 START CALLING INV_EBI_ITEM_PUB.process_item for ');
573 INV_EBI_ITEM_PUB.process_item(
574 p_commit => p_commit
575 ,p_operation => p_operation
576 ,p_item => l_inv_ebi_item_obj
577 ,x_out => l_inv_ebi_item_output_obj
578 );
579 INV_EBI_UTIL.debug_line('STEP: 30 END CALLING INV_EBI_ITEM_PUB.process_item for ');
580
581 x_out(i) := l_inv_ebi_item_output_obj;
582 x_out(i).integration_id := l_inv_ebi_item_obj.integration_id;
583 IF x_out(i).output_status.return_status <> FND_API.G_RET_STS_SUCCESS THEN
584 x_return_status := FND_API.G_RET_STS_ERROR;
585 x_msg_count := x_out(i).output_status.msg_count;
586 x_msg_data := x_msg_data ||'Item Name :' || l_item_number || ' Err Msg: ' || x_out(i).output_status.msg_data;
587 RAISE FND_API.g_exc_unexpected_error;
588 END IF;
589 END IF;
590 END LOOP;
591 END IF;
592 IF FND_API.to_boolean(p_commit) THEN
593 COMMIT;
594 END IF;
595 INV_EBI_UTIL.debug_line('STEP: 40 END INSIDE INV_EBI_ITEM_PUB.process_item_list');
596 INV_EBI_UTIL.wrapup;
597 EXCEPTION
598 WHEN FND_API.g_exc_unexpected_error THEN
599 ROLLBACK TO inv_ebi_prc_itm_list_save_pnt;
600 WHEN OTHERS THEN
601 ROLLBACK TO inv_ebi_prc_itm_list_save_pnt;
602 x_return_status := FND_API.G_RET_STS_ERROR;
603 x_msg_data := SQLERRM|| 'INV_EBI_ITEM_PUB.process_item_list';
604 END process_item_list;
605 END INV_EBI_ITEM_PUB;