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