DBA Data[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;