[Home] [Help]
PACKAGE BODY: APPS.INV_EBI_ITEM_HELPER
Source
1 PACKAGE BODY INV_EBI_ITEM_HELPER AS
2 /* $Header: INVEIHITB.pls 120.76.12020000.2 2012/07/19 05:09:40 smukka ship $ */
3
4 /************************************************************************************
5 -- API name : set_nls
6 -- Type : Private
7 -- Function :
8 -- This API is used to set nls in autonomous transaction
9 --
10 ************************************************************************************/
11
12 PROCEDURE set_nls(p_nls_language in VARCHAR2)
13 IS
14 PRAGMA AUTONOMOUS_TRANSACTION;
15 BEGIN
16 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.set_nls');
17 FND_GLOBAL.SET_NLS_CONTEXT(p_nls_language);
18 INV_EBI_UTIL.debug_line('STEP 20 :END INSIDE INV_EBI_ITEM_HELPER.set_nls');
19 commit;
20 END ;
21
22 /************************************************************************************
23 -- API name : populate_err_msg
24 -- Type : Public
25 -- Function :
26 -- This API is used to retrieve the err message.
27 --
28 ************************************************************************************/
29 PROCEDURE populate_err_msg(p_orgid IN NUMBER
30 ,p_invid IN NUMBER
31 ,p_org_code IN VARCHAR2
32 ,p_item_name IN VARCHAR2
33 ,p_part_err_msg IN VARCHAR2
34 ,x_err_msg IN OUT NOCOPY VARCHAR2
35 )
36 IS
37 l_ovrflw_msg VARCHAR2(1):='N';
38 l_part_item_msg VARCHAR2(32000);
39 l_part_org_msg VARCHAR2(32000);
40 l_part_msgtxt VARCHAR2(32000);
41 BEGIN
42 IF (p_item_name IS NOT NULL) THEN
43 l_part_item_msg := ' Item Name: '|| p_item_name ;
44 ELSIF (p_item_name IS NULL AND p_invid IS NOT NULL) THEN
45 l_part_item_msg := ' Item Id: '|| p_invid ;
46 END IF;
47 IF (p_org_code IS NOT NULL) THEN
48 l_part_org_msg := ' Org Code: ' || p_org_code ;
49 ELSIF (p_org_code IS NULL AND p_orgid IS NOT NULL) THEN
50 l_part_org_msg := ' Org Id: ' || p_orgId ;
51 END IF;
52 l_part_msgtxt := l_part_org_msg || l_part_item_msg || ' Err Msg: ' || p_part_err_msg ;
53 IF (x_err_msg IS NULL) THEN
54 x_err_msg := l_part_msgtxt;
55 ELSE
56 IF (LENGTH(x_err_msg ||l_part_msgtxt) < 31000) THEN
57 x_err_msg := x_err_msg ||' , ' || l_part_msgtxt;
58 ELSE
59 l_ovrflw_msg := 'Y';
60 END IF;
61 END IF;
62 IF (l_ovrflw_msg = 'Y') AND SUBSTR(x_err_msg,length(x_err_msg)-2) <> '...' THEN
63 x_err_msg := x_err_msg || '...';
64 END IF;
65 EXCEPTION
66 WHEN OTHERS THEN
67 NULL;
68 END populate_err_msg;
69 /************************************************************************************
70 -- API name : id_col_value
71 -- Type : Public
72 -- Function :
73 ************************************************************************************/
74 FUNCTION id_col_value(
75 p_col_name IN VARCHAR2
76 ,p_pk_col_name_val_pairs IN INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl
77 ) RETURN VARCHAR2 IS
78 l_pkval varchar2(150);
79 BEGIN
80 IF ( (p_pk_col_name_val_pairs IS NOT NULL AND p_pk_col_name_val_pairs.COUNT >0)
81 AND p_col_name IS NOT NULL) THEN
82 FOR i IN 1..p_pk_col_name_val_pairs.COUNT
83 LOOP
84 IF LOWER(p_col_name) = LOWER(p_pk_col_name_val_pairs(i).name)
85 THEN
86 l_pkval := p_pk_col_name_val_pairs(i).value;
87 EXIT;
88 END IF;
89 END LOOP;
90 END IF;
91 RETURN l_pkval;
92 EXCEPTION WHEN OTHERS THEN
93 RETURN NULL;
94 END id_col_value;
95 /************************************************************************************
96 -- API name : value_to_id
97 -- Type : Public
98 -- Function :
99 ************************************************************************************/
100 FUNCTION value_to_id(
101 p_pk_col_name_val_pairs IN INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl
102 ,p_entity_name IN VARCHAR2
103 ) RETURN NUMBER IS
104 l_table_name VARCHAR2(30);
105 l_col_name VARCHAR2(30);
106 l_sql VARCHAR2(32000);
107 l_id NUMBER;
108 l_pk1 VARCHAR2(150);
109 l_pk2 VARCHAR2(150);
110 BEGIN
111 IF ( p_entity_name is NOT NULL )
112 THEN
113 CASE p_entity_name
114 WHEN G_TEMPLATE THEN
115 l_pk1 := ID_COL_VALUE('template_name',p_pk_col_name_val_pairs);
116 SELECT template_id INTO l_id FROM mtl_item_templates
117 WHERE template_name =l_pk1;
118 WHEN G_INVENTORY_ITEM THEN
119 l_pk1 := ID_COL_VALUE('concatenated_segments',p_pk_col_name_val_pairs);
120 l_pk2 := ID_COL_VALUE('organization_id',p_pk_col_name_val_pairs);
121 SELECT inventory_item_id INTO l_id FROM mtl_system_items_kfv
122 WHERE concatenated_segments = l_pk1
123 AND organization_id = l_pk2;
124 WHEN G_ORGANIZATION THEN
125 l_pk1 := ID_COL_VALUE('organization_code',p_pk_col_name_val_pairs);
126 SELECT organization_id INTO l_id FROM mtl_parameters
127 WHERE organization_code = l_pk1;
128 WHEN G_ITEM_CATALOG_GROUP THEN
129 l_pk1 := ID_COL_VALUE('concatenated_segments',p_pk_col_name_val_pairs);
130 SELECT item_catalog_group_id INTO l_id FROM mtl_item_catalog_groups_kfv
131 WHERE concatenated_segments = l_pk1;
132 WHEN G_LIFECYCLE THEN
133 l_pk1 := ID_COL_VALUE('name',p_pk_col_name_val_pairs);
134 SELECT proj_element_id INTO l_id FROM pa_ego_lifecycles_v
135 WHERE name = l_pk1;
136 WHEN G_CURRENT_PHASE THEN
137 l_pk1 := ID_COL_VALUE('name',p_pk_col_name_val_pairs);
138 l_pk2 := ID_COL_VALUE('parent_structure_id',p_pk_col_name_val_pairs);
139 SELECT proj_element_id INTO l_id from pa_ego_phases_v
140 WHERE name = l_pk1
141 AND parent_structure_id = l_pk2;
142 WHEN G_REVISION THEN
143 l_pk1 := ID_COL_VALUE('organization_id',p_pk_col_name_val_pairs);
144 l_pk2 := ID_COL_VALUE('inventory_item_id',p_pk_col_name_val_pairs);
145 SELECT revision_id INTO l_id from mtl_item_rev_highdate_v MIRVH
146 WHERE organization_id = l_pk1
147 AND inventory_item_id = l_pk2
148 AND MIRVH.EFFECTIVITY_DATE < SYSDATE
149 AND decode(MIRVH.HIGH_DATE,SYSDATE,SYSDATE+1) > SYSDATE;
150 WHEN G_HAZARD_CLASS THEN
151 l_pk1 := ID_COL_VALUE('hazard_class',p_pk_col_name_val_pairs);
152 SELECT hazard_class_id INTO l_id from po_hazard_classes_vl
153 WHERE hazard_class = l_pk1;
154 WHEN G_ASSET_CATEGORY THEN
155 l_pk1 := ID_COL_VALUE('concatenated_segments',p_pk_col_name_val_pairs);
156 SELECT category_id INTO l_id FROM fa_categories_b_kfv
157 WHERE concatenated_segments = l_pk1;
158 WHEN G_MANUFACTURER THEN
159 l_pk1 := ID_COL_VALUE('manufacturer_name',p_pk_col_name_val_pairs);
160 SELECT manufacturer_id INTO l_id FROM mtl_manufacturers
161 WHERE manufacturer_name = l_pk1;
162 WHEN G_CATEGORY_SET THEN
163 l_pk1 := ID_COL_VALUE('category_set_name',p_pk_col_name_val_pairs);
164 SELECT category_set_id INTO l_id FROM mtl_category_sets_vl
165 WHERE category_set_name = l_pk1;
166 WHEN G_CATEGORY THEN
167 l_pk1 := ID_COL_VALUE('concatenated_segments',p_pk_col_name_val_pairs);
168 l_pk2 := ID_COL_VALUE('category_set_name',p_pk_col_name_val_pairs);
169 SELECT category_id INTO l_id FROM mtl_categories_kfv mck,mtl_category_sets_vl mcs
170 where mcs.category_set_name = l_pk2
171 and mcs.structure_id = mck.structure_id
172 and mck.concatenated_segments = l_pk1;
173 END CASE;
174 END IF;
175 RETURN l_id;
176 EXCEPTION
177 WHEN OTHERS THEN
178 RETURN NULL;
179 END value_to_id;
180 /************************************************************************************
181 -- API name : id_to_value
182 -- Type : Public
183 -- Function : returns the code equivalent of a given id
184 ************************************************************************************/
185 FUNCTION id_to_value(
186 p_pk_col_name_val_pairs IN INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl
187 ,p_entity_name IN VARCHAR2
188 ) RETURN VARCHAR2 IS
189 l_table_name VARCHAR2(30);
190 l_col_name VARCHAR2(30);
191 l_sql VARCHAR2(32000);
192 l_code VARCHAR2(100);
193 l_pk1 VARCHAR2(150);
194 l_pk2 VARCHAR2(150);
195 BEGIN
196 IF ( p_entity_name is NOT NULL )
197 THEN
198 CASE p_entity_name
199 WHEN G_TEMPLATE THEN
200 l_pk1 := ID_COL_VALUE('template_id',p_pk_col_name_val_pairs);
201 SELECT template_name INTO l_code
202 FROM mtl_item_templates_vl
203 WHERE template_id = l_pk1;
204 WHEN G_ORGANIZATION THEN
205 l_pk1 := ID_COL_VALUE('organization_id',p_pk_col_name_val_pairs);
206 SELECT organization_code INTO l_code
207 FROM mtl_parameters
208 WHERE organization_id = l_pk1;
209 WHEN G_ITEM_CATALOG_GROUP THEN
210 l_pk1 := ID_COL_VALUE('item_catalog_group_id',p_pk_col_name_val_pairs);
211 SELECT concatenated_segments INTO l_code
212 FROM mtl_item_catalog_groups_kfv
213 WHERE item_catalog_group_id = l_pk1;
214 WHEN G_LIFECYCLE THEN
215 l_pk1 := ID_COL_VALUE('proj_element_id',p_pk_col_name_val_pairs);
216 SELECT name INTO l_code
217 FROM pa_ego_lifecycles_v
218 WHERE proj_element_id = l_pk1;
219 WHEN G_CURRENT_PHASE THEN
220 l_pk1 := ID_COL_VALUE('proj_element_id',p_pk_col_name_val_pairs);
221 SELECT phase_code INTO l_code
222 FROM pa_ego_phases_v
223 WHERE proj_element_id = l_pk1;
224 WHEN G_REVISION THEN
225 l_pk1 := ID_COL_VALUE('revision_id',p_pk_col_name_val_pairs);
226 SELECT revision_label INTO l_code
227 FROM mtl_item_revisions_vl
228 WHERE revision_id = l_pk1;
229 WHEN G_HAZARD_CLASS THEN
230 l_pk1 := ID_COL_VALUE('hazard_class_id',p_pk_col_name_val_pairs);
231 SELECT hazard_class INTO l_code
232 FROM po_hazard_classes_vl
233 WHERE hazard_class_id = l_pk1;
234 WHEN G_ASSET_CATEGORY THEN
235 l_pk1 := ID_COL_VALUE('category_id',p_pk_col_name_val_pairs);
236 SELECT concatenated_segments INTO l_code
237 FROM fa_categories_b_kfv
238 WHERE category_id = l_pk1 ;
239 WHEN G_MANUFACTURER THEN
240 l_pk1 := ID_COL_VALUE('manufacturer_id',p_pk_col_name_val_pairs);
241 SELECT manufacturer_name INTO l_code
242 FROM mtl_manufacturers
243 WHERE manufacturer_id = l_pk1;
244 WHEN G_CATEGORY_SET THEN
245 l_pk1 := ID_COL_VALUE('cat_set_id',p_pk_col_name_val_pairs);
246 SELECT category_set_name INTO l_code
247 FROM mtl_category_sets_vl
248 WHERE CATEGORY_SET_ID = l_pk1;
249 WHEN G_CATEGORY THEN
250 l_pk1 := ID_COL_VALUE('cat_id',p_pk_col_name_val_pairs);
251 SELECT concatenated_segments INTO l_code
252 FROM mtl_categories_kfv
253 WHERE CATEGORY_ID =l_pk1;
254 WHEN G_INVENTORY_ITEM THEN
255 l_pk1 := ID_COL_VALUE('organization_id',p_pk_col_name_val_pairs);
256 l_pk2 := ID_COL_VALUE('inventory_item_id',p_pk_col_name_val_pairs);
257 SELECT concatenated_segments INTO l_code
258 FROM mtl_system_items_b_kfv
259 WHERE organization_id = l_pk1
260 AND inventory_item_id = l_pk2;
261 END CASE;
262 END IF;
263 RETURN l_code;
264 EXCEPTION
265 WHEN OTHERS THEN
266 RETURN NULL;
267 END id_to_value;
268
269 /************************************************************************************
270 -- API name : populate_item_ids
271 -- Type : Public
272 -- Function :
273 ***********************************************************************************/
274
275 PROCEDURE populate_item_ids(
276 p_item IN inv_ebi_item_obj
277 ,x_out OUT NOCOPY inv_ebi_item_output_obj
278 ,x_item OUT NOCOPY inv_ebi_item_obj
279 ) IS
280 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl;
281 l_output_status inv_ebi_output_status;
282 BEGIN
283 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.populate_item_ids');
284 x_item := p_item;
285 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
286 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL,NULL);
287 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
288 IF ( (p_item.main_obj_type.organization_id IS NULL OR p_item.main_obj_type.organization_id = fnd_api.g_miss_num)
289 AND p_item.main_obj_type.organization_code IS NOT NULL ) THEN
290 l_pk_col_name_val_pairs.EXTEND(1);
291 l_pk_col_name_val_pairs(1).name := 'organization_code';
292 l_pk_col_name_val_pairs(1).value := p_Item.main_obj_type.organization_code;
293 x_item.main_obj_type.organization_id := INV_EBI_ITEM_HELPER.value_to_id(
294 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
295 ,p_entity_name => INV_EBI_ITEM_HELPER.G_ORGANIZATION
296 );
297 INV_EBI_UTIL.debug_line('STEP 20: ORG ID '|| x_item.main_obj_type.organization_id);
298 l_pk_col_name_val_pairs.TRIM(1);
299 IF (x_item.main_obj_type.organization_id IS NULL) THEN
300 FND_MESSAGE.set_name('INV','INV_EBI_ORG_CODE_INVALID');
301 FND_MESSAGE.set_token('COL_VALUE', p_Item.main_obj_type.organization_code);
302 FND_MSG_PUB.add;
303 RAISE FND_API.g_exc_error;
304 END IF;
305 END IF;
306 IF ( (p_item.main_obj_type.inventory_item_id IS NULL OR p_item.main_obj_type.inventory_item_id= fnd_api.g_miss_num)
307 AND p_item.main_obj_type.item_number IS NOT NULL ) THEN
308 l_pk_col_name_val_pairs.EXTEND(2);
309 l_pk_col_name_val_pairs(1).name := 'concatenated_segments';
310 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.item_number;
311 l_pk_col_name_val_pairs(2).name := 'organization_id';
312 l_pk_col_name_val_pairs(2).value := x_item.main_obj_type.organization_id;
313 x_item.main_obj_type.inventory_item_id := INV_EBI_ITEM_HELPER.value_to_id(
314 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
315 ,p_entity_name => INV_EBI_ITEM_HELPER.G_INVENTORY_ITEM
316 );
317 l_pk_col_name_val_pairs.TRIM(2);
318 INV_EBI_UTIL.debug_line('STEP 30: INV ITEM ID '|| x_item.main_obj_type.inventory_item_id);
319 END IF;
320 IF ( (p_item.main_obj_type.template_id IS NULL OR p_item.main_obj_type.template_id =fnd_api.g_miss_num)
321 AND p_item.main_obj_type.template_name IS NOT NULL AND p_item.main_obj_type.template_name <> fnd_api.g_miss_char) THEN
322 l_pk_col_name_val_pairs.EXTEND(1);
323 l_pk_col_name_val_pairs(1).name := 'template_name';
324 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.template_name;
325 x_item.main_obj_type.template_id := INV_EBI_ITEM_HELPER.value_to_id(
326 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
327 ,p_entity_name => INV_EBI_ITEM_HELPER.G_TEMPLATE
328 );
329 INV_EBI_UTIL.debug_line('STEP 40: TEMPLATE ID '|| x_item.main_obj_type.template_id);
330 l_pk_col_name_val_pairs.TRIM(1);
331
332 IF (x_item.main_obj_type.template_id IS NULL) THEN
333 FND_MESSAGE.set_name('INV','INV_TEMPLATE_ERROR');
334 FND_MSG_PUB.add;
335 RAISE FND_API.g_exc_error;
336 END IF;
337 END IF;
338 IF (p_item.org_id_obj_type IS NOT NULL AND p_item.org_id_obj_type.COUNT > 0 ) THEN
339 FOR i IN 1..p_item.org_id_obj_type.COUNT LOOP
340 IF (p_item.org_id_obj_type(i).org_id IS NULL AND p_item.org_id_obj_type(i).org_code IS NOT NULL) THEN
341 l_pk_col_name_val_pairs.EXTEND(1);
342 l_pk_col_name_val_pairs(1).name := 'organization_code';
343 l_pk_col_name_val_pairs(1).value := p_item.org_id_obj_type(i).org_code;
344 x_item.org_id_obj_type(i).org_id := INV_EBI_ITEM_HELPER.value_to_id(
345 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
346 ,p_entity_name => INV_EBI_ITEM_HELPER.G_ORGANIZATION
347 );
348 INV_EBI_UTIL.debug_line('STEP 50: ORG ID '|| x_item.org_id_obj_type(i).org_id);
349 l_pk_col_name_val_pairs.TRIM(1);
350 IF (x_item.org_id_obj_type(i).org_id IS NULL) THEN
351 FND_MESSAGE.set_name('INV','INV_EBI_ORG_CODE_INVALID');
352 FND_MESSAGE.set_token('COL_VALUE', p_item.org_id_obj_type(i).org_code);
353 FND_MSG_PUB.add;
354 RAISE FND_API.g_exc_error;
355 END IF;
356 END IF;
357 END LOOP;
358 END IF;
359 IF ( (p_item.main_obj_type.item_catalog_group_id IS NULL OR p_item.main_obj_type.item_catalog_group_id=fnd_api.g_miss_num)
360 AND p_item.main_obj_type.item_catalog_group_code IS NOT NULL
361 AND p_item.main_obj_type.item_catalog_group_code <> fnd_api.g_miss_char) THEN
362 l_pk_col_name_val_pairs.EXTEND(1);
363 l_pk_col_name_val_pairs(1).name := 'concatenated_segments';
364 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.item_catalog_group_code;
365 x_item.main_obj_type.item_catalog_group_id := INV_EBI_ITEM_HELPER.value_to_id(
366 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
367 ,p_entity_name => INV_EBI_ITEM_HELPER.G_ITEM_CATALOG_GROUP
368 );
369 INV_EBI_UTIL.debug_line('STEP 60: CATALOG GROUP ID '|| x_item.main_obj_type.item_catalog_group_id);
370 l_pk_col_name_val_pairs.TRIM(1);
371 IF (x_item.main_obj_type.item_catalog_group_id IS NULL ) THEN
372 FND_MESSAGE.set_name('INV','INV_EBI_ITEM_INVALID');
373 FND_MESSAGE.set_token('COL_VALUE',p_item.main_obj_type.item_catalog_group_code);
374 FND_MSG_PUB.add;
375 RAISE FND_API.g_exc_error;
376 END IF;
377 END IF;
378 IF ( (p_item.main_obj_type.lifecycle_id IS NULL OR p_item.main_obj_type.lifecycle_id =fnd_api.g_miss_num)
379 AND p_item.main_obj_type.lifecycle_name IS NOT NULL) THEN
380 l_pk_col_name_val_pairs.EXTEND(1);
381 l_pk_col_name_val_pairs(1).name := 'name';
382 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.lifecycle_name;
383 x_item.main_obj_type.lifecycle_id := INV_EBI_ITEM_HELPER.value_to_id (
384 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
385 ,p_entity_name => INV_EBI_ITEM_HELPER.G_LIFECYCLE
386 );
387 INV_EBI_UTIL.debug_line('STEP 70: LIFE CYCLE ID '|| x_item.main_obj_type.lifecycle_id);
388 l_pk_col_name_val_pairs.TRIM(1);
389 END IF;
390 IF ( (p_item.main_obj_type.current_phase_id IS NULL OR p_item.main_obj_type.current_phase_id=fnd_api.g_miss_num)
391 AND (p_item.main_obj_type.current_phase_name IS NOT NULL AND x_item.main_obj_type.lifecycle_id is NOT NULL)) THEN
392 l_pk_col_name_val_pairs.EXTEND(2);
393 l_pk_col_name_val_pairs(1).name := 'name';
394 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.current_phase_name;
395 l_pk_col_name_val_pairs(2).name := 'parent_structure_id';
396 l_pk_col_name_val_pairs(2).value := x_item.main_obj_type.lifecycle_id ;
397 x_item.main_obj_type.current_phase_id := INV_EBI_ITEM_HELPER.value_to_id(
398 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
399 ,p_entity_name => INV_EBI_ITEM_HELPER.G_CURRENT_PHASE
400 );
401 INV_EBI_UTIL.debug_line('STEP 80: CURRENT PHASE ID '|| x_item.main_obj_type.current_phase_id);
402 l_pk_col_name_val_pairs.TRIM(2);
403 END IF;
404 IF ( (p_item.main_obj_type.revision_id IS NULL OR p_item.main_obj_type.revision_id= fnd_api.g_miss_num)
405 AND (x_item.main_obj_type.organization_id IS NOT NULL AND x_item.main_obj_type.inventory_item_id IS NOT NULL)
406 ) THEN
407 l_pk_col_name_val_pairs.EXTEND(2);
408 l_pk_col_name_val_pairs(1).name := 'organization_id';
409 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.organization_id;
410 l_pk_col_name_val_pairs(2).name := 'inventory_item_id';
411 l_pk_col_name_val_pairs(2).value := x_item.main_obj_type.inventory_item_id;
412 x_item.main_obj_type.revision_id := INV_EBI_ITEM_HELPER.value_to_id(
413 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
414 ,p_entity_name => INV_EBI_ITEM_HELPER.G_REVISION
415 );
416 INV_EBI_UTIL.debug_line('STEP 90: REVISION ID '|| x_item.main_obj_type.revision_id);
417 l_pk_col_name_val_pairs.TRIM(2);
418 END IF;
419 IF ( (p_item.purchasing_obj_type.hazard_class_id IS NULL OR p_item.purchasing_obj_type.hazard_class_id = fnd_api.g_miss_num)
420 AND p_item.purchasing_obj_type.hazard_class_code IS NOT NULL) THEN
421 l_pk_col_name_val_pairs.EXTEND(1);
422 l_pk_col_name_val_pairs(1).name := 'hazard_class';
423 l_pk_col_name_val_pairs(1).value := p_item.purchasing_obj_type.hazard_class_code ;
424 x_item.purchasing_obj_type.hazard_class_id := INV_EBI_ITEM_HELPER.value_to_id(
425 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
426 ,p_entity_name => INV_EBI_ITEM_HELPER.G_HAZARD_CLASS
427 );
428 INV_EBI_UTIL.debug_line('STEP 100: HAZARD CLASS ID '|| x_item.purchasing_obj_type.hazard_class_id);
429 l_pk_col_name_val_pairs.TRIM(1);
430 END IF;
431 IF ( (p_item.purchasing_obj_type.asset_category_id IS NULL OR p_item.purchasing_obj_type.asset_category_id =fnd_api.g_miss_num)
432 AND p_item.purchasing_obj_type.asset_category_code IS NOT NULL ) THEN
433 l_pk_col_name_val_pairs.EXTEND(1);
434 l_pk_col_name_val_pairs(1).name := 'concatenated_segments';
435 l_pk_col_name_val_pairs(1).value := p_item.purchasing_obj_type.asset_category_code;
436 x_item.purchasing_obj_type.asset_category_id := INV_EBI_ITEM_HELPER.value_to_id(
437 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
438 ,p_entity_name => INV_EBI_ITEM_HELPER.G_ASSET_CATEGORY
439 );
440 INV_EBI_UTIL.debug_line('STEP 110: ASSET CATEGORY ID '|| x_item.purchasing_obj_type.asset_category_id);
441 l_pk_col_name_val_pairs.TRIM(1);
442 END IF;
443 IF ( (p_item.bom_obj_type.base_item_id IS NULL OR p_item.bom_obj_type.base_item_id= fnd_api.g_miss_num)
444 AND p_item.bom_obj_type.base_item_number IS NOT NULL )THEN
445 l_pk_col_name_val_pairs.EXTEND(2);
446 l_pk_col_name_val_pairs(1).name := 'concatenated_segments';
447 l_pk_col_name_val_pairs(1).value := p_item.bom_obj_type.base_item_number;
448 l_pk_col_name_val_pairs(2).name := 'organization_id';
449 l_pk_col_name_val_pairs(2).value := p_item.main_obj_type.organization_id;
450 x_item.bom_obj_type.base_item_id := INV_EBI_ITEM_HELPER.value_to_id(
451 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
452 ,p_entity_name => INV_EBI_ITEM_HELPER.G_INVENTORY_ITEM
453 );
454 INV_EBI_UTIL.debug_line('STEP 120: BASE ITEM ID '|| x_item.bom_obj_type.base_item_id);
455 l_pk_col_name_val_pairs.TRIM(2);
456 END IF;
457 IF ( p_item.part_num_obj_tbl_type IS NOT NULL AND p_item.part_num_obj_tbl_type.COUNT > 0 ) THEN
458 FOR i in 1..p_item.part_num_obj_tbl_type.COUNT LOOP
459 IF ((p_item.part_num_obj_tbl_type(i).manufacturer_id IS NULL OR p_item.part_num_obj_tbl_type(i).manufacturer_id = fnd_api.g_miss_num)
460 AND (p_item.part_num_obj_tbl_type(i).manufacturer_name IS NOT NULL OR p_item.part_num_obj_tbl_type(i).manufacturer_name <> fnd_api.g_miss_char))THEN
461 l_pk_col_name_val_pairs.EXTEND(1);
462 l_pk_col_name_val_pairs(1).name := 'manufacturer_name';
463 l_pk_col_name_val_pairs(1).value := p_item.part_num_obj_tbl_type(i).manufacturer_name;
464 x_item.part_num_obj_tbl_type(i).manufacturer_id := INV_EBI_ITEM_HELPER.value_to_id (
465 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
466 ,p_entity_name => INV_EBI_ITEM_HELPER.G_MANUFACTURER
467 );
468 INV_EBI_UTIL.debug_line('STEP 130: MANUFACTURER NAME' || p_item.part_num_obj_tbl_type(i).manufacturer_name || 'MFG ID: ' || x_item.part_num_obj_tbl_type(i).manufacturer_id);
469 l_pk_col_name_val_pairs.TRIM(1);
470 END IF;
471 END LOOP;
472 END IF;
473 IF ( p_item.category_id_obj_tbl_type IS NOT NULL AND p_item.category_id_obj_tbl_type.COUNT > 0) THEN
474 FOR i IN 1..p_item.category_id_obj_tbl_type.COUNT LOOP
475 IF ((p_item.category_id_obj_tbl_type(i).cat_set_id IS NULL OR p_item.category_id_obj_tbl_type(i).cat_set_id = fnd_api.g_miss_num)
476 AND (p_item.category_id_obj_tbl_type(i).cat_set_name IS NOT NULL OR p_item.category_id_obj_tbl_type(i).cat_set_name <> fnd_api.g_miss_char) ) THEN
477 l_pk_col_name_val_pairs.EXTEND(1);
478 l_pk_col_name_val_pairs(1).name := 'category_set_name';
479 l_pk_col_name_val_pairs(1).value := p_item.category_id_obj_tbl_type(i).cat_set_name;
480 x_item.category_id_obj_tbl_type(i).cat_set_id := INV_EBI_ITEM_HELPER.value_to_id(
481 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
482 ,p_entity_name => INV_EBI_ITEM_HELPER.G_CATEGORY_SET
483 );
484 INV_EBI_UTIL.debug_line('STEP 140: CATEGORY SET NAME: '|| p_item.category_id_obj_tbl_type(i).cat_set_name ||
485 'CATEGORY SET ID: '|| x_item.category_id_obj_tbl_type(i).cat_set_id);
486 l_pk_col_name_val_pairs.TRIM(1);
487 END IF;
488 IF ( (p_item.category_id_obj_tbl_type(i).cat_id IS NULL OR p_item.category_id_obj_tbl_type(i).cat_id =fnd_api.g_miss_num)
489 AND ( p_item.category_id_obj_tbl_type(i).cat_name IS NOT NULL OR p_item.category_id_obj_tbl_type(i).cat_name <> fnd_api.g_miss_char)) THEN
490 l_pk_col_name_val_pairs.EXTEND(2);
491 l_pk_col_name_val_pairs(1).name := 'concatenated_segments';
492 l_pk_col_name_val_pairs(1).value := p_item.category_id_obj_tbl_type(i).cat_name;
493 l_pk_col_name_val_pairs(2).name := 'category_set_name';
494 l_pk_col_name_val_pairs(2).value := p_item.category_id_obj_tbl_type(i).cat_set_name;
495 x_item.category_id_obj_tbl_type(i).cat_id := INV_EBI_ITEM_HELPER.value_to_id (
496 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
497 ,p_entity_name => INV_EBI_ITEM_HELPER.G_CATEGORY
498 );
499 INV_EBI_UTIL.debug_line('STEP 150: CATEGORY ID: '|| x_item.category_id_obj_tbl_type(i).cat_id);
500 l_pk_col_name_val_pairs.TRIM(1);
501 END IF;
502 END LOOP;
503 END IF;
504 IF ( (p_item.main_obj_type.rev_lifecycle_id IS NULL OR p_item.main_obj_type.rev_lifecycle_id= fnd_api.g_miss_num)
505 AND p_item.main_obj_type.rev_lifecycle_name IS NOT NULL) THEN
506 l_pk_col_name_val_pairs.EXTEND(1);
507 l_pk_col_name_val_pairs(1).name := 'name';
508 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.rev_lifecycle_name;
509 x_item.main_obj_type.rev_lifecycle_id := INV_EBI_ITEM_HELPER.value_to_id(
510 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
511 ,p_entity_name => INV_EBI_ITEM_HELPER.G_LIFECYCLE
512 );
513 INV_EBI_UTIL.debug_line('STEP 160: REV LIFECYCLE ID: '|| x_item.main_obj_type.rev_lifecycle_id);
514 l_pk_col_name_val_pairs.TRIM(1);
515 END IF;
516 IF ( (p_item.main_obj_type.rev_current_phase_id IS NULL OR p_item.main_obj_type.rev_current_phase_id= fnd_api.g_miss_num)
517 AND (p_item.main_obj_type.rev_current_phase_name IS NOT NULL AND x_item.main_obj_type.rev_lifecycle_id IS NOT NULL )
518 ) THEN
519 l_pk_col_name_val_pairs.EXTEND(2);
520 l_pk_col_name_val_pairs(1).name := 'name';
521 l_pk_col_name_val_pairs(1).value := p_item.main_obj_type.rev_current_phase_name;
522 l_pk_col_name_val_pairs(2).name := 'parent_structure_id';
523 l_pk_col_name_val_pairs(2).value := x_item.main_obj_type.rev_lifecycle_id;
524 x_item.main_obj_type.rev_current_phase_id := INV_EBI_ITEM_HELPER.value_to_id(
525 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
526 ,p_entity_name => INV_EBI_ITEM_HELPER.G_CURRENT_PHASE
527 );
528 INV_EBI_UTIL.debug_line('STEP 170: REV CURR PHASE ID: '|| x_item.main_obj_type.rev_current_phase_id);
529 l_pk_col_name_val_pairs.TRIM(2);
530 END IF;
531 INV_EBI_UTIL.debug_line('STEP 180: END INSIDE INV_EBI_ITEM_HELPER.populate_item_ids STATUS: '|| x_out.output_status.return_status);
532
533 EXCEPTION
534 WHEN FND_API.g_exc_error THEN
535 x_out.output_status.return_status := FND_API.g_ret_sts_error;
536 IF(x_out.output_status.msg_data IS NULL) THEN
537 fnd_msg_pub.count_and_get(
538 p_encoded => fnd_api.g_false
539 ,p_count => x_out.output_status.msg_count
540 ,p_data => x_out.output_status.msg_data
541 );
542 END IF;
543 WHEN OTHERS THEN
544 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
545 IF (x_out.output_status.msg_data IS NOT NULL) THEN
546 x_out.output_status.msg_data := x_out.output_status.msg_data||' -> INV_EBI_ITEM_PUB.populate_item_ids ';
547 ELSE
548 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_PUB.populate_item_ids ';
549 END IF;
550 END populate_item_ids;
551 /************************************************************************************
552 -- API name : get_default_master_org
553 -- Type : Public
554 -- Function :
555 ************************************************************************************/
556 FUNCTION get_default_master_org(
557 p_config IN inv_ebi_name_value_tbl
558 ) RETURN NUMBER IS
559 l_master_org NUMBER;
560 l_master_org_count NUMBER;
561 l_default_master_org_id NUMBER;
562 l_master_org_code VARCHAR2(3);
563 CURSOR c_master_org IS
564 SELECT master_organization_id
565 FROM mtl_parameters
566 WHERE organization_id = master_organization_id;
567 BEGIN
568 OPEN c_master_org;
569 LOOP
570 FETCH c_master_org INTO l_master_org;
571 IF (c_master_org%ROWCOUNT > 1) THEN
572 l_master_org_code := INV_EBI_UTIL.get_config_param_value(
573 p_config_tbl => p_config
574 ,p_config_param_name => 'Default_Master_Organization_For_Item'
575 );
576 l_master_org := get_organization_id(
577 p_organization_code => l_master_org_code
578 );
579 EXIT;
580 END IF;
581 END LOOP;
582 CLOSE c_master_org;
583 RETURN l_master_org;
584 EXCEPTION
585 WHEN OTHERS THEN
586 RETURN NULL;
587 END get_default_master_org;
588
589
590 procedure check_conversion(p_conv_rate_from_unit1_to_bu1 in number,
591 p_conv_rate_from_uom1_uom2 in number ,
592 p_convrate_from_unit_to_bu in number,
593 p_conv_rate_from_bu1_to_bu2 in number,
594 x_return_status OUT NOCOPY VARCHAR2)
595 is
596
597 l_length1 NUMBER;
598 l_length2 NUMBER;
599 l_conv_rate_calc NUMBER;
600 l_rate_in_tbl NUMBER;
601 BEGIN
602 l_conv_rate_calc := (((p_conv_rate_from_uom1_uom2 ) * p_convrate_from_unit_to_bu)/p_conv_rate_from_bu1_to_bu2);
603 l_rate_in_tbl := p_conv_rate_from_unit1_to_bu1;
604 SELECT Length(l_rate_in_tbl)-InStr(l_rate_in_tbl,'.') INTO l_length1 FROM dual;
605 SELECT Length(l_conv_rate_calc)-InStr(l_conv_rate_calc,'.') INTO l_length2 FROM dual;
606 IF l_length1<=l_length2 THEN
607 SELECT Round(l_conv_rate_calc,l_length1) INTO l_conv_rate_calc FROM dual;
608 ELSE
609 SELECT Round(l_rate_in_tbl,l_length2) INTO l_rate_in_tbl FROM dual;
610 END IF;
611
612 if(l_conv_rate_calc = l_rate_in_tbl ) then
613 x_return_status := FND_API.G_RET_STS_SUCCESS ;
614 else
615 x_return_status := FND_API.G_RET_STS_ERROR;
616 end if;
617 end check_conversion;
618
619 FUNCTION validate_uom(p_uom_code IN VARCHAR2)
620 RETURN VARCHAR2
621 IS
622
623 CURSOR is_uom_valid is
624 SELECT uom_code FROM mtl_units_of_measure WHERE uom_code = p_uom_code;
625 BEGIN
626 OPEN is_uom_valid;
627
628 IF ( is_uom_valid%NOTFOUND) THEN
629 RETURN FND_API.G_FALSE;
630 ELSE
631 RETURN FND_API.G_TRUE;
632 END IF;
633
634 END;
635
636
637 /************************************************************************************
638 -- API name : UOMConversion
639 -- Type : Private
640 -- Function :
641 -- This API is used to create uom conversions
642 --
643 ************************************************************************************/
644
645
646 procedure UOMConversion(
647 p_uom_input IN inv_ebi_uom_conv_obj_tbl_type,
648 p_item_id IN NUMBER,
649 x_msg_data OUT NOCOPY VARCHAR2,
650 x_return_status OUT NOCOPY VARCHAR2
651 )
652 is
653
654 uom_conv_details inv_ebi_uom_conv_obj_tbl_type;
655 l_class1 varchar2(10);
656 l_baseunit1 varchar2(3);
657 l_conv_rate_from_mu_to_unit number;
658 l_convrate_from_unit_to_bu number;
659 l_convrate_from_bu_to_unit number;
660 uom_from_v_list1_uom_cur varchar2(3);
661 conv_rate_from_v_list1_uom_cur number;
662 l_CONVRATE_FROM_MU_TO_BU number;
663 l_ret varchar2(1);
664 l_class2 varchar2(10);
665 l_baseunit2 varchar2(3);
666 l_conv_rate_from_bu2_to_bu1 number;
667 l_conv_rate_from_mu1_to_bu2 number;
668 l_conv_rate_from_mu1_to_unit number;
669 uom_from_v_list2_uom_cur varchar2(3);
670 conv_rate_from_v_list2_uom_cur number;
671 l_conv_rate_from_unit1_to_bu1 number;
672 flag number;
673 flag1 number;
674 msg_count NUMBER;
675 begin
676 uom_conv_details := p_uom_input;
677 x_return_status := FND_API.G_RET_STS_SUCCESS ;
678 for j in 1..uom_conv_details.count loop
679 flag:=0;
680 flag1:=0;
681 IF(validate_uom(uom_conv_details(j).to_uom)=FND_API.G_FALSE) THEN
682 x_return_status := FND_API.G_RET_STS_ERROR;
683 FND_MESSAGE.set_name('INV','INV_EBI_INVALID_UOM');
684 FND_MESSAGE.set_token('UOM', uom_conv_details(j).to_uom);
685 FND_MSG_PUB.add;
686 RAISE fnd_api.g_exc_unexpected_error;
687 END IF;
688 IF(validate_uom(uom_conv_details(j).from_uom)=FND_API.G_FALSE) THEN
689 x_return_status := FND_API.G_RET_STS_ERROR;
690 FND_MESSAGE.set_name('INV','INV_EBI_INVALID_UOM');
691 FND_MESSAGE.set_token('UOM', uom_conv_details(j).from_uom);
692 FND_MSG_PUB.add;
693 RAISE fnd_api.g_exc_unexpected_error;
694 END IF;
695 select UOM_CLASS into l_class1 from MTL_UNITS_OF_MEASURE where UOM_CODE=uom_conv_details(j).to_uom;
696 select UOM_CODE into l_baseunit1 from MTL_UNITS_OF_MEASURE where UOM_CLASS=l_class1 and BASE_UOM_FLAG='Y';
697 if(l_baseunit1 = uom_conv_details(j).to_uom) then
698 l_convrate_from_unit_to_bu :=1;
699 else
700 inv_convert.inv_um_conversion(uom_conv_details(j).to_uom,l_baseunit1,p_item_id,l_convrate_from_unit_to_bu);
701 if(l_convrate_from_unit_to_bu = -99999) then
702 for l_list1_uom_rec in (select conversion_rate,UOM_CODE from MTL_UOM_CONVERSIONS where UOM_CLASS = l_class1 and inventory_item_id= 0)
703 loop
704 for i in 1..uom_conv_details.count loop
705 uom_from_v_list1_uom_cur := l_list1_uom_rec.UOM_CODE;
706 if(uom_conv_details(i).from_uom = uom_from_v_list1_uom_cur) then
707 l_conv_rate_from_mu_to_unit :=uom_conv_details(i).conversion_rate;
708 inv_convert.inv_um_conversion(uom_conv_details(i).from_uom,l_baseunit1,p_item_id,l_convrate_from_mu_to_bu);
709 l_convrate_from_unit_to_bu :=l_convrate_from_mu_to_bu/l_conv_rate_from_mu_to_unit;
710 inv_convert.create_uom_conversion(l_baseunit1,uom_conv_details(i).to_uom,p_item_id,(1/l_convrate_from_unit_to_bu),l_ret);
711 flag := 1;
712 end if;
713 end loop;
714 end loop;
715 if(flag <> 1) then
716 l_convrate_from_unit_to_bu :=1;
717 inv_convert.create_uom_conversion(l_baseunit1,uom_conv_details(j).to_uom,p_item_id,l_convrate_from_unit_to_bu,l_ret);
718 end if;
719 end if;
720 if (l_ret <> FND_API.g_ret_sts_success) then
721 x_return_status := FND_API.G_RET_STS_ERROR;
722 RAISE fnd_api.g_exc_unexpected_error;
723 END IF;
724 end if;
725 /* step -2 starts from here */
726 select UOM_CLASS into l_class2 from MTL_UNITS_OF_MEASURE where UOM_CODE=uom_conv_details(j).from_uom;
727 select UOM_CODE into l_baseunit2 from MTL_UNITS_OF_MEASURE where UOM_CLASS= l_class2 and BASE_UOM_FLAG='Y';
728 if(l_class1=l_class2) then
729 l_baseunit2:= l_baseunit1 ;
730 l_conv_rate_from_bu2_to_bu1 :=1;
731 /*Next calls step-3 */
732 else
733 inv_convert.inv_um_conversion(l_baseunit2,l_baseunit1,p_item_id,l_conv_rate_from_bu2_to_bu1 );
734 if(l_conv_rate_from_bu2_to_bu1 = -99999) then
735 for l_list2_uom_rec in (select conversion_rate,UOM_CODE from MTL_UOM_CONVERSIONS where UOM_CLASS = l_class2 and inventory_item_id= 0) loop
736 for l in 1..uom_conv_details.Count loop
737 uom_from_v_list2_uom_cur := l_list2_uom_rec.UOM_CODE;
738 if(uom_conv_details(l).from_uom = uom_from_v_list2_uom_cur) then
739 l_conv_rate_from_mu1_to_unit := uom_conv_details(l).conversion_rate;
740 inv_convert.inv_um_conversion(uom_conv_details(l).from_uom,l_baseunit2,p_item_id,l_conv_rate_from_mu1_to_bu2);
741 l_conv_rate_from_bu2_to_bu1 := (l_conv_rate_from_mu1_to_unit * l_convrate_from_unit_to_bu )/l_conv_rate_from_mu1_to_bu2;
742 inv_convert.create_uom_conversion(l_baseunit1,l_baseunit2,p_item_id,l_conv_rate_from_bu2_to_bu1,l_ret);
743 flag1 :=1;
744 /*Next calls step-3 */
745 end if ;
746 end loop;
747 end loop;
748 if(flag1 <> 1) then
749 l_conv_rate_from_bu2_to_bu1 :=1;
750 inv_convert.create_uom_conversion(l_baseunit1,l_baseunit2,p_item_id,l_conv_rate_from_bu2_to_bu1,l_ret);
751 end if;
752 end if;
753 if (l_ret <> FND_API.g_ret_sts_success) then
754 x_return_status := FND_API.G_RET_STS_ERROR;
755 RAISE fnd_api.g_exc_unexpected_error;
756 END IF;
757 end if ;
758 /*STEP3*/
759 if (l_baseunit2 = uom_conv_details(j).from_uom) then
760 l_conv_rate_from_unit1_to_bu1 :=1;
761 check_conversion(l_conv_rate_from_unit1_to_bu1,uom_conv_details(j).conversion_rate,l_convrate_from_unit_to_bu,l_conv_rate_from_bu2_to_bu1,l_ret);
762 if( l_ret = 'E') then
763 x_return_status := FND_API.G_RET_STS_ERROR;
764 FND_MESSAGE.set_name('INV','INV_EBI_MISMATCH_CONV_RATE');
765 FND_MESSAGE.set_token('UOM1',uom_conv_details(j).from_uom);
766 FND_MESSAGE.set_token('UOM2',uom_conv_details(j).to_uom);
767 FND_MSG_PUB.add;
768 RAISE fnd_api.g_exc_unexpected_error;
769 end if;
770 else
771 inv_convert.inv_um_conversion(uom_conv_details(j).from_uom,l_baseunit2,p_item_id,l_conv_rate_from_unit1_to_bu1);
772 if(l_conv_rate_from_unit1_to_bu1 = -99999) then
773 l_conv_rate_from_unit1_to_bu1 := ((uom_conv_details(j).conversion_rate) * l_convrate_from_unit_to_bu)/l_conv_rate_from_bu2_to_bu1;
774 inv_convert.create_uom_conversion(l_baseunit2,uom_conv_details(j).from_uom,p_item_id,l_conv_rate_from_unit1_to_bu1,l_ret);
775 if (l_ret <> FND_API.g_ret_sts_success) then
776 x_return_status := FND_API.G_RET_STS_ERROR;
777 RAISE fnd_api.g_exc_unexpected_error;
778 end if;
779 else
780 check_conversion(l_conv_rate_from_unit1_to_bu1,uom_conv_details(j).conversion_rate,l_convrate_from_unit_to_bu,l_conv_rate_from_bu2_to_bu1,l_ret);
781 if( l_ret = 'E') THEN
782 x_return_status := FND_API.G_RET_STS_ERROR;
783 FND_MESSAGE.set_name('INV','INV_EBI_MISMATCH_CONV_RATE');
784 FND_MSG_PUB.add;
785 RAISE fnd_api.g_exc_unexpected_error;
786 end if;
787 end if ;
788 end if;
789 end loop;
790 Exception
791 WHEN fnd_api.g_exc_unexpected_error THEN
792 IF x_msg_data IS NULL THEN
793 FND_MSG_PUB.count_and_get(
794 p_encoded => FND_API.g_false
795 ,p_count => msg_count
796 ,p_data => x_msg_data
797 );
798 END IF;
799 WHEN OTHERS THEN
800 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
801 IF x_msg_data IS NULL THEN
802 x_msg_data := SQLERRM || ' AT UOMConversion';
803 END IF;
804 end UOMConversion;
805
806
807
808
809
810 /************************************************************************************
811 -- API name : initialize_item
812 -- Type : Private
813 -- Function :
814 -- This API is used to
815 --
816 ************************************************************************************/
817 PROCEDURE initialize_item(
818 x_item IN OUT NOCOPY inv_ebi_item_obj
819 )
820 IS
821 BEGIN
822 IF (x_item.physical_obj_type IS NULL) THEN
823 x_item.physical_obj_type := inv_ebi_item_physical_obj(
824 fnd_api.g_miss_char,
825 fnd_api.g_miss_num,
826 fnd_api.g_miss_char,
827 fnd_api.g_miss_num,
828 fnd_api.g_miss_char,
829 fnd_api.g_miss_char,
830 fnd_api.g_miss_char,
831 fnd_api.g_miss_num,
832 fnd_api.g_miss_num,
833 fnd_api.g_miss_num,
834 fnd_api.g_miss_num,
835 fnd_api.g_miss_char,
836 fnd_api.g_miss_char,
837 fnd_api.g_miss_char,
838 fnd_api.g_miss_char,
839 fnd_api.g_miss_char,
840 fnd_api.g_miss_num,
841 fnd_api.g_miss_num,
842 fnd_api.g_miss_num
843 );
844 END IF;
845 IF (x_item.inventory_obj_type IS NULL) THEN
846 x_item.inventory_obj_type := inv_ebi_item_inventory_obj(
847 fnd_api.g_miss_char,
848 fnd_api.g_miss_char,
849 fnd_api.g_miss_char,
850 fnd_api.g_miss_char,
851 fnd_api.g_miss_num,
852 fnd_api.g_miss_num,
853 fnd_api.g_miss_num,
854 fnd_api.g_miss_num,
855 fnd_api.g_miss_char,
856 fnd_api.g_miss_num,
857 fnd_api.g_miss_num,
858 fnd_api.g_miss_num,
859 fnd_api.g_miss_char,
860 fnd_api.g_miss_char,
861 fnd_api.g_miss_num,
862 fnd_api.g_miss_char,
863 fnd_api.g_miss_char,
864 fnd_api.g_miss_num,
865 fnd_api.g_miss_num,
866 fnd_api.g_miss_num,
867 fnd_api.g_miss_char,
868 fnd_api.g_miss_char,
869 fnd_api.g_miss_char,
870 fnd_api.g_miss_char,
871 fnd_api.g_miss_char,
872 fnd_api.g_miss_char,
873 fnd_api.g_miss_char,
874 fnd_api.g_miss_char,
875 fnd_api.g_miss_char,
876 fnd_api.g_miss_num,
877 fnd_api.g_miss_char,
878 fnd_api.g_miss_char,
879 fnd_api.g_miss_char,
880 fnd_api.g_miss_char,
881 fnd_api.g_miss_num,
882 fnd_api.g_miss_char,
883 fnd_api.g_miss_num,
884 fnd_api.g_miss_char,
885 fnd_api.g_miss_num,
886 fnd_api.g_miss_char,
887 fnd_api.g_miss_num
888 );
889 END IF;
890 IF (x_item.purchasing_obj_type IS NULL) THEN
891 x_item.purchasing_obj_type := inv_ebi_item_purchasing_obj(
892 fnd_api.g_miss_char,
893 fnd_api.g_miss_char,
894 fnd_api.g_miss_char,
895 fnd_api.g_miss_char,
896 fnd_api.g_miss_char,
897 fnd_api.g_miss_char,
898 fnd_api.g_miss_char,
899 fnd_api.g_miss_char,
900 fnd_api.g_miss_char,
901 fnd_api.g_miss_char,
902 fnd_api.g_miss_char,
903 fnd_api.g_miss_num,
904 fnd_api.g_miss_char,
905 fnd_api.g_miss_num,
906 fnd_api.g_miss_num,
907 fnd_api.g_miss_num,
908 fnd_api.g_miss_num,
909 fnd_api.g_miss_char,
910 fnd_api.g_miss_num,
911 fnd_api.g_miss_num,
912 fnd_api.g_miss_num,
913 fnd_api.g_miss_num,
914 fnd_api.g_miss_num,
915 fnd_api.g_miss_num,
916 fnd_api.g_miss_num,
917 fnd_api.g_miss_char,
918 fnd_api.g_miss_num
919 );
920 END IF;
921 IF (x_item.receiving_obj_type IS NULL) THEN
922 x_item.receiving_obj_type := inv_ebi_item_receiving_obj(
923 fnd_api.g_miss_char,
924 fnd_api.g_miss_num,
925 fnd_api.g_miss_num,
926 fnd_api.g_miss_char,
927 fnd_api.g_miss_char,
928 fnd_api.g_miss_char,
929 fnd_api.g_miss_char,
930 fnd_api.g_miss_num,
931 fnd_api.g_miss_num,
932 fnd_api.g_miss_char
933 );
934 END IF;
935 IF (x_item.gplanning_obj_type IS NULL) THEN
936 x_item.gplanning_obj_type := inv_ebi_item_gplanning_obj(
937 fnd_api.g_miss_num,
938 fnd_api.g_miss_char,
939 fnd_api.g_miss_num,
940 fnd_api.g_miss_num,
941 fnd_api.g_miss_num,
942 fnd_api.g_miss_num,
943 fnd_api.g_miss_num,
944 fnd_api.g_miss_num,
945 fnd_api.g_miss_num,
946 fnd_api.g_miss_num,
947 fnd_api.g_miss_num,
948 fnd_api.g_miss_char,
949 fnd_api.g_miss_num,
950 fnd_api.g_miss_num,
951 fnd_api.g_miss_num,
952 fnd_api.g_miss_num,
953 fnd_api.g_miss_num,
954 fnd_api.g_miss_num,
955 fnd_api.g_miss_num,
956 fnd_api.g_miss_num,
957 fnd_api.g_miss_num,
958 fnd_api.g_miss_num,
959 fnd_api.g_miss_num,
960 fnd_api.g_miss_num,
961 fnd_api.g_miss_num,
962 fnd_api.g_miss_num,
963 fnd_api.g_miss_num,
964 fnd_api.g_miss_num,
965 fnd_api.g_miss_num
966 );
967 END IF;
968 IF (x_item.mrp_obj_type IS NULL) THEN
969 x_item.mrp_obj_type := inv_ebi_item_mrp_obj(
970 fnd_api.g_miss_num,
971 fnd_api.g_miss_num,
972 fnd_api.g_miss_char,
973 fnd_api.g_miss_char,
974 fnd_api.g_miss_num,
975 fnd_api.g_miss_num,
976 fnd_api.g_miss_num,
977 fnd_api.g_miss_char,
978 fnd_api.g_miss_num,
979 fnd_api.g_miss_num,
980 fnd_api.g_miss_num,
981 fnd_api.g_miss_char,
982 fnd_api.g_miss_num,
983 fnd_api.g_miss_num,
984 fnd_api.g_miss_num,
985 fnd_api.g_miss_num,
986 fnd_api.g_miss_num,
987 fnd_api.g_miss_num,
988 fnd_api.g_miss_num,
989 fnd_api.g_miss_char,
990 fnd_api.g_miss_char,
991 fnd_api.g_miss_num,
992 fnd_api.g_miss_num,
993 fnd_api.g_miss_num,
994 fnd_api.g_miss_num,
995 fnd_api.g_miss_num,
996 fnd_api.g_miss_num,
997 fnd_api.g_miss_num,
998 fnd_api.g_miss_num,
999 fnd_api.g_miss_num,
1000 fnd_api.g_miss_num,
1001 fnd_api.g_miss_num,
1002 fnd_api.g_miss_num,
1003 fnd_api.g_miss_num,
1004 fnd_api.g_miss_num,
1005 fnd_api.g_miss_char,
1006 fnd_api.g_miss_num
1007 );
1008 END IF;
1009 IF (x_item.order_obj_type IS NULL) THEN
1010 x_item.order_obj_type := inv_ebi_item_order_obj(
1011 fnd_api.g_miss_char,
1012 fnd_api.g_miss_char,
1013 fnd_api.g_miss_char,
1014 fnd_api.g_miss_char,
1015 fnd_api.g_miss_char,
1016 fnd_api.g_miss_char,
1017 fnd_api.g_miss_char,
1018 fnd_api.g_miss_char,
1019 fnd_api.g_miss_char,
1020 fnd_api.g_miss_num,
1021 fnd_api.g_miss_char,
1022 fnd_api.g_miss_char,
1023 fnd_api.g_miss_num,
1024 fnd_api.g_miss_char,
1025 fnd_api.g_miss_num,
1026 fnd_api.g_miss_char,
1027 fnd_api.g_miss_num,
1028 fnd_api.g_miss_num,
1029 fnd_api.g_miss_num,
1030 fnd_api.g_miss_num,
1031 fnd_api.g_miss_num,
1032 fnd_api.g_miss_char,
1033 fnd_api.g_miss_char,
1034 fnd_api.g_miss_char
1035 );
1036 END IF;
1037 IF (x_item.service_obj_type IS NULL) THEN
1038 x_item.service_obj_type := inv_ebi_item_service_obj(
1039 fnd_api.g_miss_num,
1040 fnd_api.g_miss_num,
1041 fnd_api.g_miss_char,
1042 fnd_api.g_miss_char,
1043 fnd_api.g_miss_num,
1044 fnd_api.g_miss_char,
1045 fnd_api.g_miss_char,
1046 fnd_api.g_miss_char,
1047 fnd_api.g_miss_char,
1048 fnd_api.g_miss_char,
1049 fnd_api.g_miss_char
1050 );
1051 END IF;
1052 IF (x_item.bom_obj_type IS NULL) THEN
1053 x_item.bom_obj_type := inv_ebi_item_bom_obj(
1054 fnd_api.g_miss_char,
1055 fnd_api.g_miss_num,
1056 fnd_api.g_miss_num,
1057 fnd_api.g_miss_char,
1058 fnd_api.g_miss_num,
1059 fnd_api.g_miss_char,
1060 fnd_api.g_miss_char,
1061 fnd_api.g_miss_char,
1062 fnd_api.g_miss_char,
1063 fnd_api.g_miss_char
1064 );
1065 END IF;
1066 IF (x_item.costing_obj_type IS NULL) THEN
1067 x_item.costing_obj_type := inv_ebi_item_costing_obj(
1068 fnd_api.g_miss_char,
1069 fnd_api.g_miss_char,
1070 fnd_api.g_miss_char,
1071 fnd_api.g_miss_num,
1072 fnd_api.g_miss_num,
1073 fnd_api.g_miss_num
1074 );
1075 END IF;
1076 IF (x_item.lead_time_obj_type IS NULL) THEN
1077 x_item.lead_time_obj_type := inv_ebi_item_lead_time_obj(
1078 fnd_api.g_miss_num,
1079 fnd_api.g_miss_num,
1080 fnd_api.g_miss_num,
1081 fnd_api.g_miss_num,
1082 fnd_api.g_miss_num,
1083 fnd_api.g_miss_num,
1084 fnd_api.g_miss_num,
1085 fnd_api.g_miss_num
1086 );
1087 END IF;
1088 IF (x_item.wip_obj_type IS NULL) THEN
1089 x_item.wip_obj_type := inv_ebi_item_wip_obj(
1090 fnd_api.g_miss_char,
1091 fnd_api.g_miss_num,
1092 fnd_api.g_miss_char,
1093 fnd_api.g_miss_num,
1094 fnd_api.g_miss_num,
1095 fnd_api.g_miss_num,
1096 fnd_api.g_miss_num,
1097 fnd_api.g_miss_num
1098 );
1099 END IF;
1100 IF (x_item.invoice_obj_type IS NULL) THEN
1101 x_item.invoice_obj_type := inv_ebi_item_invoice_obj(
1102 fnd_api.g_miss_char,
1103 fnd_api.g_miss_char,
1104 fnd_api.g_miss_num,
1105 fnd_api.g_miss_num,
1106 fnd_api.g_miss_char,
1107 fnd_api.g_miss_num,
1108 fnd_api.g_miss_num
1109 );
1110 END IF;
1111 IF (x_item.web_option_obj_type IS NULL) THEN
1112 x_item.web_option_obj_type := inv_ebi_item_web_option_obj(
1113 fnd_api.g_miss_char,
1114 fnd_api.g_miss_char,
1115 fnd_api.g_miss_char,
1116 fnd_api.g_miss_num
1117 );
1118 END IF;
1119 IF (x_item.asset_obj_type IS NULL) THEN
1120 x_item.asset_obj_type := inv_ebi_item_asset_obj(
1121 fnd_api.g_miss_num,
1122 fnd_api.g_miss_char,
1123 fnd_api.g_miss_char,
1124 fnd_api.g_miss_char,
1125 fnd_api.g_miss_char,
1126 fnd_api.g_miss_char,
1127 fnd_api.g_miss_char,
1128 fnd_api.g_miss_char,
1129 fnd_api.g_miss_char
1130 );
1131 END IF;
1132 IF (x_item.deprecated_obj_type IS NULL) THEN
1133 x_item.deprecated_obj_type := inv_ebi_item_deprecated_obj(
1134 fnd_api.g_miss_char,
1135 fnd_api.g_miss_num,
1136 fnd_api.g_miss_num,
1137 fnd_api.g_miss_char,
1138 fnd_api.g_miss_num,
1139 fnd_api.g_miss_date,
1140 fnd_api.g_miss_num,
1141 fnd_api.g_miss_char,
1142 fnd_api.g_miss_char,
1143 fnd_api.g_miss_char,
1144 fnd_api.g_miss_char,
1145 fnd_api.g_miss_char,
1146 fnd_api.g_miss_char,
1147 fnd_api.g_miss_num,
1148 fnd_api.g_miss_num,
1149 fnd_api.g_miss_num,
1150 fnd_api.g_miss_num,
1151 fnd_api.g_miss_char,
1152 fnd_api.g_miss_num,
1153 fnd_api.g_miss_num,
1154 fnd_api.g_miss_num,
1155 fnd_api.g_miss_date,
1156 fnd_api.g_miss_char,
1157 fnd_api.g_miss_char,
1158 fnd_api.g_miss_char,
1159 fnd_api.g_miss_num,
1160 fnd_api.g_miss_char,
1161 fnd_api.g_miss_num,
1162 fnd_api.g_miss_char,
1163 fnd_api.g_miss_num,
1164 fnd_api.g_miss_num,
1165 fnd_api.g_miss_char,
1166 fnd_api.g_miss_char
1167 );
1168 END IF;
1169 IF (x_item.process_manufacturing_obj IS NULL) THEN
1170 x_item.process_manufacturing_obj := inv_ebi_item_processmfg_obj(
1171 fnd_api.g_miss_char,
1172 fnd_api.g_miss_char,
1173 fnd_api.g_miss_char,
1174 fnd_api.g_miss_char,
1175 fnd_api.g_miss_char,
1176 fnd_api.g_miss_num,
1177 fnd_api.g_miss_char,
1178 fnd_api.g_miss_num,
1179 fnd_api.g_miss_char,
1180 fnd_api.g_miss_char
1181 );
1182 END IF;
1183 END initialize_item;
1184
1185 /************************************************************************************
1186 -- API name : is_new_item_request_reqd
1187 -- Type : Public
1188 -- Function :
1189 ************************************************************************************/
1190 FUNCTION is_new_item_request_reqd(
1191 p_item_catalog_group_id IN NUMBER
1192 ) RETURN VARCHAR IS
1193 l_is_new_item_request_reqd VARCHAR2(3);
1194 BEGIN
1195 IF (p_item_catalog_group_id IS NOT NULL AND p_item_catalog_group_id <> fnd_api.g_miss_num) THEN
1196 SELECT new_item_request_reqd INTO l_is_new_item_request_reqd
1197 FROM mtl_item_catalog_groups_vl
1198 WHERE item_catalog_group_id = p_item_catalog_group_id;
1199 IF(l_is_new_item_request_reqd = 'Y') THEN
1200 RETURN FND_API.g_true;
1201 ELSE
1202 RETURN FND_API.g_false;
1203 END IF;
1204 END IF;
1205 RETURN FND_API.g_false;
1206 EXCEPTION
1207 WHEN OTHERS THEN
1208 RETURN FND_API.g_false;
1209 END is_new_item_request_reqd;
1210 /************************************************************************************
1211 -- API name : get_organization_id
1212 -- Type : Public
1213 -- Function :
1214 ************************************************************************************/
1215 FUNCTION get_organization_id ( p_organization_code IN VARCHAR2 ) RETURN NUMBER
1216 IS
1217 l_org_id NUMBER;
1218 BEGIN
1219 SELECT organization_id
1220 INTO l_org_id
1221 FROM mtl_parameters
1222 WHERE organization_code = p_organization_code;
1223 RETURN l_org_id;
1224 EXCEPTION
1225 WHEN OTHERS THEN
1226 RETURN NULL;
1227 END Get_Organization_Id;
1228 /************************************************************************************
1229 -- API name : get_inventory_item_id
1230 -- Type : Public
1231 -- Function :
1232 ************************************************************************************/
1233 FUNCTION get_inventory_item_id(
1234 p_organization_id IN NUMBER
1235 ,p_item_number IN VARCHAR2
1236 ) RETURN NUMBER IS
1237 l_inventory_item_id NUMBER;
1238 BEGIN
1239 SELECT inventory_item_id INTO l_inventory_item_id
1240 FROM mtl_system_items_kfv
1241 WHERE concatenated_segments = p_item_number
1242 AND organization_id = p_organization_id;
1243 RETURN l_inventory_item_id;
1244 EXCEPTION
1245 WHEN OTHERS THEN
1246 RETURN FND_API.g_miss_num;
1247 END get_inventory_item_id;
1248 /************************************************************************************
1249 -- API name : get_item_num
1250 -- Type : Private
1251 -- Function :
1252 -- This API is used to
1253 --
1254 ************************************************************************************/
1255 FUNCTION get_item_num(
1256 p_segment1 IN VARCHAR2
1257 ,p_segment2 IN VARCHAR2
1258 ,p_segment3 IN VARCHAR2
1259 ,p_segment4 IN VARCHAR2
1260 ,p_segment5 IN VARCHAR2
1261 ,p_segment6 IN VARCHAR2
1262 ,p_segment7 IN VARCHAR2
1263 ,p_segment8 IN VARCHAR2
1264 ,p_segment9 IN VARCHAR2
1265 ,p_segment10 IN VARCHAR2
1266 ,p_segment11 IN VARCHAR2
1267 ,p_segment12 IN VARCHAR2
1268 ,p_segment13 IN VARCHAR2
1269 ,p_segment14 IN VARCHAR2
1270 ,p_segment15 IN VARCHAR2
1271 ,p_segment16 IN VARCHAR2
1272 ,p_segment17 IN VARCHAR2
1273 ,p_segment18 IN VARCHAR2
1274 ,p_segment19 IN VARCHAR2
1275 ,p_segment20 IN VARCHAR2
1276 ) RETURN VARCHAR2 IS
1277 l_item_number VARCHAR2(2000);
1278 BEGIN
1279 SELECT DECODE(p_segment1,fnd_api.g_miss_char,'',NULL,'',p_segment1) ||
1280 DECODE(p_segment2,fnd_api.g_miss_char,'',NULL,'',p_segment2) ||
1281 DECODE(p_segment3,fnd_api.g_miss_char,'',NULL,'',p_segment3) ||
1282 DECODE(p_segment4,fnd_api.g_miss_char,'',NULL,'',p_segment4) ||
1283 DECODE(p_segment5,fnd_api.g_miss_char,'',NULL,'',p_segment5) ||
1284 DECODE(p_segment6,fnd_api.g_miss_char,'',NULL,'',p_segment6) ||
1285 DECODE(p_segment7,fnd_api.g_miss_char,'',NULL,'',p_segment7) ||
1286 DECODE(p_segment8,fnd_api.g_miss_char,'',NULL,'',p_segment8) ||
1287 DECODE(p_segment9,fnd_api.g_miss_char,'',NULL,'',p_segment9) ||
1288 DECODE(p_segment10,fnd_api.g_miss_char,'',NULL,'',p_segment10) ||
1289 DECODE(p_segment11,fnd_api.g_miss_char,'',NULL,'',p_segment11) ||
1290 DECODE(p_segment12,fnd_api.g_miss_char,'',NULL,'',p_segment12) ||
1291 DECODE(p_segment13,fnd_api.g_miss_char,'',NULL,'',p_segment13) ||
1292 DECODE(p_segment14,fnd_api.g_miss_char,'',NULL,'',p_segment14) ||
1293 DECODE(p_segment15,fnd_api.g_miss_char,'',NULL,'',p_segment15) ||
1294 DECODE(p_segment16,fnd_api.g_miss_char,'',NULL,'',p_segment16) ||
1295 DECODE(p_segment17,fnd_api.g_miss_char,'',NULL,'',p_segment17) ||
1296 DECODE(p_segment18,fnd_api.g_miss_char,'',NULL,'',p_segment18) ||
1297 DECODE(p_segment19,fnd_api.g_miss_char,'',NULL,'',p_segment19) ||
1298 DECODE(p_segment20,fnd_api.g_miss_char,'',NULL,'',p_segment20)
1299 INTO l_item_number
1300 FROM DUAL;
1301 RETURN l_item_number;
1302 EXCEPTION
1303 WHEN OTHERS THEN
1304 RETURN NULL;
1305 END get_item_num;
1306 /************************************************************************************
1307 -- API name : is_item_engg
1308 -- Type : Public
1309 -- Function :
1310 --
1311 ************************************************************************************/
1312 FUNCTION is_engineering_item(
1313 p_organization_id IN NUMBER
1314 ,p_item_number IN VARCHAR2
1315 ) RETURN VARCHAR IS
1316 l_item_flag VARCHAR2(1);
1317 BEGIN
1318 SELECT eng_item_flag INTO l_item_flag
1319 FROM mtl_system_items_kfv
1320 WHERE concatenated_segments = NVL(p_item_number,FND_API.G_MISS_CHAR)
1321 AND organization_id =p_organization_id;
1322 IF(l_item_flag='Y') THEN
1323 RETURN FND_API.g_true;
1324 ELSE
1325 RETURN FND_API.g_false;
1326 END IF;
1327 EXCEPTION
1328 WHEN OTHERS THEN
1329 RETURN FND_API.g_false;
1330 END is_engineering_item;
1331 /************************************************************************************
1332 -- API name : is_item_exists
1333 -- Type : Public
1334 -- Function :
1335 --
1336 --Check if the concatenated segment numbers have to be unique or Is the
1337 --below condition sufficient
1338 --some information
1339 ************************************************************************************/
1340 FUNCTION is_item_exists (
1341 p_organization_id IN NUMBER
1342 ,p_item_number IN VARCHAR2
1343 ) RETURN VARCHAR IS
1344 l_item_count NUMBER;
1345 BEGIN
1346 SELECT COUNT(1) INTO l_item_count
1347 FROM mtl_system_items_kfv
1348 WHERE concatenated_segments = p_item_number
1349 AND organization_id = p_organization_id;
1350 IF(l_item_count=0) THEN
1351 RETURN FND_API.g_false;
1352 ELSE
1353 RETURN FND_API.g_true;
1354 END IF;
1355 EXCEPTION
1356 WHEN OTHERS THEN
1357 RETURN FND_API.g_false;
1358 END is_item_exists;
1359
1360 /************************************************************************************
1361 -- API name : is_revision_exists
1362 -- Type : private
1363 -- Function :
1364 --
1365 --Check if the revision is already created
1366 ************************************************************************************/
1367
1368 FUNCTION is_revision_exists (
1369 p_organization_id IN NUMBER
1370 ,p_item_number IN VARCHAR2
1371 ,p_revision IN VARCHAR2
1372 ) RETURN VARCHAR IS
1373
1374 l_count NUMBER;
1375 BEGIN
1376
1377 SELECT COUNT(1) INTO l_count
1378 FROM
1379 mtl_item_revisions_b mir ,
1380 mtl_system_items_kfv msi
1381 WHERE
1382 msi.concatenated_segments = p_item_number AND
1383 msi.organization_id = p_organization_id AND
1384 msi.inventory_item_id = mir.inventory_item_id AND
1385 msi.organization_id = mir.organization_id AND
1386 mir.revision = UPPER(p_revision);
1387
1388 IF(l_count=0) THEN
1389 RETURN FND_API.g_false;
1390 ELSE
1391 RETURN FND_API.g_true;
1392 END IF;
1393 EXCEPTION
1394 WHEN OTHERS THEN
1395 RETURN FND_API.g_false;
1396 END is_revision_exists;
1397
1398
1399 /************************************************************************************
1400 -- API name : get_desc_gen_method
1401 -- Type : private
1402 -- Function : Return description generation method of ICC
1403 ************************************************************************************/
1404 FUNCTION get_desc_gen_method(p_item_catalog_group_id NUMBER)
1405 RETURN VARCHAR2
1406 IS
1407 l_parent_catalog_group_id NUMBER;
1408 t_parent_catalog_group_id NUMBER;
1409 l_item_desc_gen_method VARCHAR2(2);
1410 BEGIN
1411 SELECT item_desc_gen_method, parent_catalog_group_id
1412 INTO l_item_desc_gen_method, l_parent_catalog_group_id
1413 FROM MTL_ITEM_CATALOG_GROUPS_VL
1414 WHERE item_catalog_group_id = p_item_catalog_group_id;
1415 IF UPPER(l_item_desc_gen_method)='I' THEN
1416 WHILE UPPER(l_item_desc_gen_method) = 'I' LOOP
1417 SELECT item_desc_gen_method,
1418 parent_catalog_group_id
1419 INTO l_item_desc_gen_method,
1420 t_parent_catalog_group_id
1421 FROM mtl_item_catalog_groups_vl
1422 WHERE item_catalog_group_id = l_parent_catalog_group_id;
1423 EXIT WHEN t_parent_catalog_group_id IS NULL;
1424 l_parent_catalog_group_id := t_parent_catalog_group_id;
1425 END LOOP;
1426 END IF;
1427 RETURN l_item_desc_gen_method;
1428 EXCEPTION
1429 WHEN OTHERS THEN
1430 RETURN NULL;
1431 END;
1432
1433 /************************************************************************************
1434 -- API name : Get_Default_Lifecycle_Phase
1435 -- Type : Private
1436 -- Function :
1437 -- This API is used to
1438 --
1439 ************************************************************************************/
1440
1441 FUNCTION Get_Default_Lifecycle_Phase ( p_lifecycle_id IN NUMBER)
1442 RETURN NUMBER IS
1443
1444 CURSOR c_Get_Lifecyle_Phase (
1445 p_lifecycle_id NUMBER
1446 ) IS
1447 SELECT pev_p.proj_element_id
1448 FROM pa_proj_element_versions pev_l
1449 ,pa_lifecycle_usages plu
1450 ,pa_proj_element_versions pev_p
1451 ,pa_proj_elements ppe_p
1452 ,pa_project_statuses pc
1453 WHERE pev_l.object_type = 'PA_STRUCTURES'
1454 AND pev_l.proj_element_id = p_lifecycle_id
1455 AND pev_l.project_id = 0
1456 AND plu.usage_type = 'PRODUCTS'
1457 AND plu.lifecycle_id = pev_l.proj_element_id
1458 AND pev_l.element_version_id = pev_p.parent_structure_version_id
1459 AND pev_p.proj_element_id = ppe_p.proj_element_id
1460 AND ppe_p.phase_code = pc.project_status_code
1461 AND (pc.start_date_active IS NULL OR pc.start_date_active <= SYSDATE)
1462 AND (pc.end_date_active IS NULL OR pc.end_date_active >= SYSDATE)
1463 ORDER BY pev_p.display_sequence ;
1464
1465 l_phase_id NUMBER;
1466
1467 BEGIN
1468 IF(c_Get_Lifecyle_Phase % ISOPEN) THEN
1469 CLOSE c_Get_Lifecyle_Phase;
1470 END IF;
1471
1472 OPEN c_Get_Lifecyle_Phase ( p_lifecycle_id => p_lifecycle_id );
1473
1474 FETCH c_Get_Lifecyle_Phase INTO l_phase_id;
1475
1476 IF ( c_Get_Lifecyle_Phase%NOTFOUND ) THEN
1477 CLOSE c_Get_Lifecyle_Phase;
1478 Return 0;
1479 END IF;
1480
1481 CLOSE c_Get_Lifecyle_Phase;
1482
1483 RETURN l_phase_id;
1484
1485 EXCEPTION WHEN OTHERS THEN
1486 IF(c_Get_Lifecyle_Phase % ISOPEN) THEN
1487 CLOSE c_Get_Lifecyle_Phase;
1488 END IF;
1489 Return 0;
1490
1491 END Get_Default_Lifecycle_Phase;
1492
1493 /************************************************************************************
1494 -- API name : Get_Default_Item_Status_Code
1495 -- Type : Private
1496 -- Function :
1497 -- This API is used to get default inventory item status code
1498 -- Added for bug 9688120
1499 ************************************************************************************/
1500 FUNCTION Get_Default_Item_Status_Code(p_phase_id IN NUMBER)
1501 RETURN VARCHAR2 IS
1502
1503 l_status_code EGO_LCPHASE_ITEM_STATUS.ITEM_STATUS_CODE%TYPE;
1504
1505 BEGIN
1506
1507 SELECT status.ITEM_STATUS_CODE INTO l_status_code
1508 FROM EGO_LCPHASE_ITEM_STATUS status
1509 ,PA_EGO_PHASES_V phases
1510 WHERE phases.PROJ_ELEMENT_ID = p_phase_id
1511 AND status.PHASE_CODE = phases.PHASE_CODE
1512 AND DEFAULT_FLAG = 'Y';
1513
1514 RETURN l_status_code;
1515
1516 EXCEPTION WHEN OTHERS THEN
1517 RETURN NULL;
1518
1519 END Get_Default_Item_Status_Code;
1520
1521
1522 /************************************************************************************
1523 -- API name : process_item_pvt
1524 -- Type : Public
1525 -- Function :
1526 -- This API is used to
1527 --
1528 ************************************************************************************/
1529 PROCEDURE process_item_pvt(
1530 p_commit IN VARCHAR2 := FND_API.g_false
1531 ,p_operation IN VARCHAR2
1532 ,p_item IN inv_ebi_item_obj
1533 ,x_out OUT NOCOPY inv_ebi_item_output_obj
1534 )
1535 IS
1536 l_transaction_type VARCHAR2(20);
1537 l_item_exits VARCHAR2(3);
1538 l_item inv_ebi_item_obj;
1539 l_xref_id NUMBER;
1540 l_item_number VARCHAR2(2000);
1541 l_description VARCHAR2(240);
1542 l_item_desc_gen_method VARCHAR2(3) := 'U';
1543 l_is_master_org VARCHAR2(3) := 'N';
1544 l_is_new_item_request_reqd VARCHAR2(3) := 'N';
1545 l_eng_item_flag VARCHAR2(3);
1546 l_output_status inv_ebi_output_status;
1547 l_count NUMBER := 0;
1548 l_master_org NUMBER;
1549 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl;
1550 l_apply_template_update VARCHAR2(2000);
1551 l_validate_revised_itm_rev VARCHAR2(1);
1552 l_revised_item_exists NUMBER := 0;
1553 l_effectivity_date DATE;
1554 l_source_system_id NUMBER;
1555 l_assign_def_temp_from_icc VARCHAR2(1) := FND_API.G_FALSE;
1556 l_curr_lifecycle_id NUMBER;
1557 l_curr_phase_id NUMBER;
1558 l_curr_item_status_code MTL_SYSTEM_ITEMS_B.inventory_item_status_code%TYPE;
1559 /* Start of Bug 13370136 */ -- ramukher
1560 l_nls_language FND_LANGUAGES.nls_language%TYPE;
1561 l_orig_nls_lang FND_LANGUAGES.nls_language%TYPE;
1562 /*End of Bug 13370136 */ -- ramukher
1563 CURSOR c_item_description(
1564 p_item_number IN VARCHAR2
1565 ,p_organization_id IN NUMBER
1566 ) IS
1567 SELECT description
1568 FROM mtl_system_items_kfv
1569 WHERE concatenated_segments = p_item_number
1570 AND organization_id = p_organization_id;
1571
1572 -- Added for bug 10416391
1573 CURSOR c_get_item_curr_data(
1574 cp_item_id IN NUMBER,
1575 cp_org_id IN NUMBER
1576 ) IS
1577
1578 SELECT lifecycle_id ,current_phase_id ,inventory_item_status_code
1579 FROM mtl_system_items_b
1580 WHERE inventory_item_id = cp_item_id
1581 AND organization_id = cp_org_id;
1582
1583 /* CURSOR c_get_default_phase_id (cp_lifecycle_id IN NUMBER) IS
1584 SELECT pev_p.PROJ_ELEMENT_ID
1585 FROM PA_PROJ_ELEMENT_VERSIONS pev_l,
1586 PA_LIFECYCLE_USAGES plu,
1587 PA_PROJ_ELEMENT_VERSIONS pev_p,
1588 PA_PROJ_ELEMENTS PPE_P,
1589 PA_PROJECT_STATUSES pc
1590 WHERE pev_l.OBJECT_TYPE = 'PA_STRUCTURES'
1591 AND pev_l.PROJ_ELEMENT_ID = cp_lifecycle_id
1592 AND pev_l.PROJECT_ID = 0
1593 AND plu.USAGE_TYPE = 'PRODUCTS'
1594 AND plu.LIFECYCLE_ID = pev_l.PROJ_ELEMENT_ID
1595 AND pev_l.ELEMENT_VERSION_ID = pev_p.PARENT_STRUCTURE_VERSION_ID
1596 AND pev_p.PROJ_ELEMENT_ID = ppe_p.PROJ_ELEMENT_ID
1597 AND ppe_p.PHASE_CODE = pc.PROJECT_STATUS_CODE
1598 AND (pc.START_DATE_ACTIVE IS NULL OR pc.START_DATE_ACTIVE <= SYSDATE)
1599 AND (pc.END_DATE_ACTIVE IS NULL OR pc.END_DATE_ACTIVE >= SYSDATE)
1600 ORDER BY pev_p.DISPLAY_SEQUENCE;*/
1601
1602 /* Start of Bug 13370136 */ -- ramukher
1603 CURSOR c_get_nls_language (p_language_code IN VARCHAR2) IS
1604 SELECT nls_language
1605 FROM FND_LANGUAGES
1606 WHERE LANGUAGE_CODE = p_language_code;
1607 /*End of Bug 13370136 */ -- ramukher
1608
1609 BEGIN
1610 SAVEPOINT inv_ebi_pvt_item_save_pnt;
1611 l_item := p_item;
1612 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.process_item_pvt ');
1613 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
1614 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL,NULL);
1615 l_item_number := l_item.main_obj_type.item_number;
1616 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
1617 IF(l_item_number IS NULL OR l_item_number = fnd_api.g_miss_char) THEN
1618 l_item_number := get_item_num(
1619 p_segment1 => l_item.main_obj_type.segment1
1620 ,p_segment2 => l_item.main_obj_type.segment2
1621 ,p_segment3 => l_item.main_obj_type.segment3
1622 ,p_segment4 => l_item.main_obj_type.segment4
1623 ,p_segment5 => l_item.main_obj_type.segment5
1624 ,p_segment6 => l_item.main_obj_type.segment6
1625 ,p_segment7 => l_item.main_obj_type.segment7
1626 ,p_segment8 => l_item.main_obj_type.segment8
1627 ,p_segment9 => l_item.main_obj_type.segment9
1628 ,p_segment10 => l_item.main_obj_type.segment10
1629 ,p_segment11 => l_item.main_obj_type.segment11
1630 ,p_segment12 => l_item.main_obj_type.segment12
1631 ,p_segment13 => l_item.main_obj_type.segment13
1632 ,p_segment14 => l_item.main_obj_type.segment14
1633 ,p_segment15 => l_item.main_obj_type.segment15
1634 ,p_segment16 => l_item.main_obj_type.segment16
1635 ,p_segment17 => l_item.main_obj_type.segment17
1636 ,p_segment18 => l_item.main_obj_type.segment18
1637 ,p_segment19 => l_item.main_obj_type.segment19
1638 ,p_segment20 => l_item.main_obj_type.segment20
1639 );
1640 END IF;
1641 IF l_item_number IS NULL THEN
1642 FND_MESSAGE.set_name('INV','INV_EBI_ITEM_NUM_NULL');
1643 FND_MSG_PUB.add;
1644 RAISE FND_API.g_exc_error;
1645 END IF;
1646 IF p_operation = INV_EBI_ITEM_PUB.g_otype_sync THEN
1647 IF( is_item_exists (
1648 p_organization_id => l_item.main_obj_type.organization_id
1649 ,p_item_number => l_item_number
1650 ) = FND_API.g_true ) THEN
1651 l_transaction_type := INV_EBI_ITEM_PUB.g_otype_update;
1652 ELSE
1653 l_transaction_type := INV_EBI_ITEM_PUB.g_otype_create;
1654 l_item.main_obj_type.item_number := l_item_number;
1655 END IF;
1656 ELSE
1657 l_transaction_type := p_operation;
1658 l_item.main_obj_type.item_number := l_item_number;
1659 END IF;
1660 initialize_item(x_item => l_item);
1661
1662 l_validate_revised_itm_rev := INV_EBI_UTIL.get_config_param_value(
1663 p_config_tbl => l_item.name_value_tbl
1664 ,p_config_param_name => 'VALIDATE_REVISED_ITEM_REVISION'
1665 );
1666 IF (l_validate_revised_itm_rev = fnd_api.g_true ) AND (l_item.main_obj_type.revision_code IS NOT NULL)
1667 AND (l_item.main_obj_type.revision_code <> fnd_api.g_miss_char)
1668 AND ( is_item_exists (
1669 p_organization_id => l_item.main_obj_type.organization_id
1670 ,p_item_number => l_item_number
1671 ) = FND_API.g_true )
1672 THEN
1673 IF( l_item.main_obj_type.inventory_item_id IS NULL) THEN
1674 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
1675 l_pk_col_name_val_pairs.EXTEND(2);
1676 l_pk_col_name_val_pairs(1).name := 'organization_id';
1677 l_pk_col_name_val_pairs(1).value := l_item.main_obj_type.organization_id;
1678 l_pk_col_name_val_pairs(2).name := 'concatenated_segments';
1679 l_pk_col_name_val_pairs(2).value := l_item.main_obj_type.item_number;
1680 l_item.main_obj_type.inventory_item_id := INV_EBI_ITEM_HELPER.value_to_id (
1681 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
1682 ,p_entity_name=> INV_EBI_ITEM_HELPER.G_INVENTORY_ITEM
1683 );
1684 END IF;
1685
1686 SELECT COUNT(1) into l_revised_item_exists
1687 FROM mtl_item_revisions_b ir
1688 WHERE ir.inventory_item_id = l_item.main_obj_type.inventory_item_id
1689 AND ir.organization_id = l_item.main_obj_type.organization_id
1690 AND ir.revision = l_item.main_obj_type.revision_code
1691 AND(ir.effectivity_date IN
1692 (SELECT first_value(ir2.effectivity_date) over(ORDER BY ir2.effectivity_date DESC)
1693 FROM mtl_item_revisions_b ir2
1694 WHERE ir2.organization_id = ir.organization_id
1695 AND ir2.inventory_item_id = ir.inventory_item_id
1696 AND ir2.effectivity_date <= sysdate
1697 AND ir2.implementation_date IS NOT NULL)
1698 OR ir.effectivity_date > sysdate);
1699 IF l_revised_item_exists = 0 then
1700 FND_MESSAGE.set_name('INV','INV_EBI_INVALD_REV_CODE');
1701 FND_MESSAGE.set_token('ITEM_NUMBER', l_item_number);
1702 FND_MESSAGE.set_token('REVISION_CODE',l_item.main_obj_type.revision_code);
1703 FND_MESSAGE.set_token('ORG_CODE',l_item.main_obj_type.organization_code);
1704 FND_MSG_PUB.add;
1705 RAISE FND_API.g_exc_error;
1706 END IF;
1707 END IF;
1708
1709 -- Bug 9709331
1710 l_assign_def_temp_from_icc := INV_EBI_UTIL.get_config_param_value(
1711 p_config_tbl => l_item.name_value_tbl
1712 ,p_config_param_name => 'ASSIGN_DEFAULT_TEMPLATE_FROM_ICC'
1713 );
1714
1715 IF(l_assign_def_temp_from_icc = fnd_api.g_true) THEN
1716
1717 IF(l_item.main_obj_type.template_id IS NULL
1718 OR l_item.main_obj_type.template_id = fnd_api.g_miss_num
1719 AND l_item.main_obj_type.item_catalog_group_id IS NOT NULL
1720 AND l_item.main_obj_type.item_catalog_group_id <> fnd_api.g_miss_num)THEN
1721
1722 SELECT default_template_id ,default_template_name INTO l_item.main_obj_type.template_id,l_item.main_obj_type.template_name
1723 FROM ego_catalog_groups_v
1724 WHERE catalog_group_id = l_item.main_obj_type.item_catalog_group_id;
1725
1726 END IF;
1727
1728 END IF;
1729
1730 IF ((l_item.main_obj_type.apply_template IS NULL OR
1731 l_item.main_obj_type.apply_template = fnd_api.g_miss_char) AND
1732 (l_item.main_obj_type.template_id IS NOT NULL OR
1733 l_item.main_obj_type.template_name IS NOT NULL)) THEN
1734
1735 l_item.main_obj_type.apply_template :='ALL';
1736
1737 END IF;
1738
1739 IF(l_transaction_type = INV_EBI_ITEM_PUB.g_otype_create ) THEN
1740
1741 IF(l_item.main_obj_type.description IS NULL OR l_item.main_obj_type.description = fnd_api.g_miss_char) THEN
1742
1743 IF(l_item.main_obj_type.item_catalog_group_id IS NOT NULL AND l_item.main_obj_type.item_catalog_group_id <> fnd_api.g_miss_num) THEN
1744 l_item_desc_gen_method := get_desc_gen_method(l_item.main_obj_type.item_catalog_group_id);
1745 END IF;
1746
1747 IF(l_item_desc_gen_method = 'U' OR l_item_desc_gen_method IS NULL OR l_item.main_obj_type.item_catalog_group_id IS NULL OR l_item.main_obj_type.item_catalog_group_id = fnd_api.g_miss_num) THEN
1748 l_is_master_org := INV_EBI_UTIL.is_master_org(l_item.main_obj_type.organization_id);
1749
1750 IF(l_is_master_org = fnd_api.g_true) THEN
1751 l_item.main_obj_type.description := l_item_number;
1752 ELSE
1753 l_master_org := INV_EBI_UTIL.get_master_organization(
1754 p_organization_id => l_item.main_obj_type.organization_id
1755 );
1756 OPEN c_item_description(
1757 p_item_number => l_item_number
1758 ,p_organization_id => l_master_org
1759 );
1760 FETCH c_item_description INTO l_description;
1761
1762 IF(c_item_description%NOTFOUND) THEN
1763 FND_MESSAGE.set_name('INV','INV_EBI_ITEM_NO_MASTER_ORG');
1764 FND_MESSAGE.set_token('ITEM_NUMBER', l_item_number);
1765 FND_MSG_PUB.add;
1766 RAISE FND_API.g_exc_error;
1767 END IF;
1768
1769 l_item.main_obj_type.description := l_description;
1770 CLOSE c_item_description;
1771
1772 END IF;
1773
1774 END IF;
1775
1776 END IF;
1777
1778 /* Start of Bug 8299853 FDD says if NIR is required item should be created as eng_item and
1779 approval status as unapproved. If NIR is not required item gets created with approval status as NULL by default,which is considered
1780 as approved ,and we take care of creating it with eng_item_flag='N' if eng_item_flag is NULL.*/
1781
1782
1783 IF(is_new_item_request_reqd(
1784 p_item_catalog_group_id => l_item.main_obj_type.item_catalog_group_id
1785 ) = fnd_api.g_true ) THEN
1786
1787 IF(l_item.bom_obj_type.eng_item_flag ='N' ) THEN
1788
1789 FND_MESSAGE.set_name('INV','INV_EBI_ICC_CONFG_FOR_NIR');
1790 FND_MESSAGE.set_token('ITEM',l_item.main_obj_type.item_number);
1791 FND_MESSAGE.set_token('ITEM_CATALOG', l_item.main_obj_type.item_catalog_group_code);
1792 FND_MSG_PUB.add;
1793 RAISE FND_API.g_exc_error;
1794
1795 ELSIF(l_item.bom_obj_type.eng_item_flag = fnd_api.g_miss_char OR l_item.bom_obj_type.eng_item_flag IS NULL ) THEN
1796
1797 l_item.bom_obj_type.eng_item_flag := 'Y';
1798 l_item.deprecated_obj_type.approval_status := 'N';
1799
1800 ELSE
1801
1802 l_item.deprecated_obj_type.approval_status := 'N';
1803
1804 END IF;
1805 ELSE
1806
1807 IF(l_item.bom_obj_type.eng_item_flag = fnd_api.g_miss_char OR l_item.bom_obj_type.eng_item_flag IS NULL ) THEN
1808 l_item.bom_obj_type.eng_item_flag := 'N';
1809 END IF;
1810 END IF;--End of Bug 8299853
1811
1812 --Start of Bug 10416391
1813 IF(l_item.main_obj_type.lifecycle_id IS NOT NULL AND
1814 l_item.main_obj_type.lifecycle_id <> fnd_api.g_miss_num
1815 AND (l_item.main_obj_type.current_phase_id IS NULL OR
1816 l_item.main_obj_type.current_phase_id = fnd_api.g_miss_num)
1817 ) THEN
1818
1819 l_item.main_obj_type.current_phase_id := Get_Default_Lifecycle_Phase(
1820 p_lifecycle_id => l_item.main_obj_type.lifecycle_id
1821 );
1822
1823 END IF;
1824 -- End of Bug 10416391
1825
1826 --Start of Bug 9688120
1827 --If incoming item status code is null get default item status code for the incoming phase
1828 IF((l_item.main_obj_type.inventory_item_status_code IS NULL OR
1829 l_item.main_obj_type.inventory_item_status_code = fnd_api.g_miss_char)
1830 AND l_item.main_obj_type.current_phase_id IS NOT NULL
1831 AND l_item.main_obj_type.current_phase_id <> fnd_api.g_miss_num
1832 ) THEN
1833
1834 l_item.main_obj_type.inventory_item_status_code := Get_Default_Item_Status_Code(
1835 p_phase_id => l_item.main_obj_type.current_phase_id
1836 );
1837 END IF;
1838 --End of Bug 9688120
1839
1840 END IF;
1841
1842
1843 IF(l_transaction_type = INV_EBI_ITEM_PUB.g_otype_update ) THEN
1844 l_apply_template_update := INV_EBI_UTIL.get_config_param_value(
1845 p_config_tbl => l_item.name_value_tbl
1846 ,p_config_param_name => 'TEMPLATE_FOR_ITEM_UPDATE_ALLOWED'
1847 );
1848 IF( UPPER(l_apply_template_update ) = fnd_api.g_false ) THEN
1849 l_item.main_obj_type.template_id := fnd_api.g_miss_num;
1850 l_item.main_obj_type.template_name := fnd_api.g_miss_char;
1851 END IF;
1852
1853
1854
1855 --Bug 7601514 : To create new revision coming in while updating item only if incoming revision is not null
1856 IF(l_item.main_obj_type.revision_code IS NOT NULL AND l_item.main_obj_type.revision_code <> fnd_api.g_miss_char) THEN
1857 --Bug 7412466 : To create new revision coming in while updating item
1858 IF( is_revision_exists (p_organization_id => l_item.main_obj_type.organization_id
1859 ,p_item_number => l_item.main_obj_type.item_number
1860 ,p_revision => l_item.main_obj_type.revision_code
1861 ) = FND_API.g_false ) THEN
1862 IF( l_item.main_obj_type.effectivity_date IS NULL OR
1863 l_item.main_obj_type.effectivity_date = fnd_api.g_miss_date ) THEN
1864 l_effectivity_date := SYSDATE;
1865 ELSE
1866 l_effectivity_date := l_item.main_obj_type.effectivity_date;
1867 END IF;
1868 INV_EBI_UTIL.debug_line('STEP 20: BEFORE CALLING EGO_ITEM_PUB.Process_Item_Revision ');
1869 INV_EBI_UTIL.debug_line('STEP 30: ITEM NUMBER '|| l_item.main_obj_type.item_number || 'ORG CODE: '|| l_item.main_obj_type.organization_code);
1870 EGO_ITEM_PUB.Process_Item_Revision(
1871 p_api_version => 1.0
1872 ,p_init_msg_list => FND_API.g_false
1873 ,p_commit => FND_API.g_false
1874 ,p_transaction_type => INV_EBI_ITEM_PUB.g_otype_create
1875 ,p_inventory_item_id => l_item.main_obj_type.inventory_item_id
1876 ,p_item_number => l_item.main_obj_type.item_number
1877 ,p_organization_id => l_item.main_obj_type.organization_id
1878 ,p_organization_code => l_item.main_obj_type.organization_code
1879 ,p_revision => l_item.main_obj_type.revision_code
1880 ,p_description => l_item.main_obj_type.revision_description
1881 ,p_effectivity_date => l_effectivity_date
1882 ,p_revision_label => l_item.main_obj_type.revision_label
1883 ,p_revision_reason => l_item.main_obj_type.revision_reason --This parameter is added in inv_ebi_item_main_obj
1884 ,p_lifecycle_id => l_item.main_obj_type.rev_lifecycle_id
1885 ,p_current_phase_id => l_item.main_obj_type.rev_current_phase_id
1886 ,p_template_id => l_item.main_obj_type.template_id
1887 ,p_template_name => l_item.main_obj_type.template_name
1888 ,p_attribute_category => l_item.custom_obj_type.rev_attribute_category
1889 ,p_attribute1 => l_item.custom_obj_type.rev_attribute1
1890 ,p_attribute2 => l_item.custom_obj_type.rev_attribute2
1891 ,p_attribute3 => l_item.custom_obj_type.rev_attribute3
1892 ,p_attribute4 => l_item.custom_obj_type.rev_attribute4
1893 ,p_attribute5 => l_item.custom_obj_type.rev_attribute5
1894 ,p_attribute6 => l_item.custom_obj_type.rev_attribute6
1895 ,p_attribute7 => l_item.custom_obj_type.rev_attribute7
1896 ,p_attribute8 => l_item.custom_obj_type.rev_attribute8
1897 ,p_attribute9 => l_item.custom_obj_type.rev_attribute9
1898 ,p_attribute10 => l_item.custom_obj_type.rev_attribute10
1899 ,p_attribute11 => l_item.custom_obj_type.rev_attribute11
1900 ,p_attribute12 => l_item.custom_obj_type.rev_attribute12
1901 ,p_attribute13 => l_item.custom_obj_type.rev_attribute13
1902 ,p_attribute14 => l_item.custom_obj_type.rev_attribute14
1903 ,p_attribute15 => l_item.custom_obj_type.rev_attribute15
1904 ,x_return_status => x_out.output_status.return_status
1905 ,x_msg_count => x_out.output_status.msg_count
1906 ,x_msg_data => x_out.output_status.msg_data
1907 );
1908 INV_EBI_UTIL.debug_line('STEP 40: AFTER CALLING EGO_ITEM_PUB.Process_Item_Revision STATUS: '|| x_out.output_status.return_status);
1909 IF (x_out.output_status.return_status NOT IN (FND_API.g_ret_sts_success,'0')) THEN
1910 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || l_item.main_obj_type.item_number || ' -> Org Code: ' || l_item.main_obj_type.organization_code;
1911 RAISE FND_API.g_exc_unexpected_error;
1912 END IF;
1913 END IF; -- Bug 7412466
1914 END IF; -- End of Bug 7601514
1915
1916 -- Start of Bug 10416391
1917 -- In update case if incoming lifecycle id is not null and lifecycle phase id null
1918 -- then if current life cycle id from data base is null,default lifecycle phase to
1919 -- default phase of the lifecycle.
1920 IF(l_item.main_obj_type.lifecycle_id IS NOT NULL AND
1921 l_item.main_obj_type.lifecycle_id <> fnd_api.g_miss_num
1922 AND (l_item.main_obj_type.current_phase_id IS NULL OR
1923 l_item.main_obj_type.current_phase_id = fnd_api.g_miss_num)
1924 ) THEN
1925
1926 IF(c_get_item_curr_data % ISOPEN ) THEN
1927 CLOSE c_get_item_curr_data;
1928 END IF;
1929
1930 OPEN c_get_item_curr_data(
1931 cp_item_id => l_item.main_obj_type.inventory_item_id
1932 ,cp_org_id => l_item.main_obj_type.organization_id
1933 );
1934
1935 FETCH c_get_item_curr_data INTO l_curr_lifecycle_id,l_curr_phase_id,l_curr_item_status_code;
1936
1937 CLOSE c_get_item_curr_data;
1938 IF(nvl(l_curr_lifecycle_id,fnd_api.g_miss_num) <> l_item.main_obj_type.lifecycle_id) THEN
1939
1940 l_item.main_obj_type.current_phase_id := Get_Default_Lifecycle_Phase(
1941 p_lifecycle_id => l_item.main_obj_type.lifecycle_id
1942 );
1943 ELSIF(l_curr_phase_id IS NOT NULL) THEN
1944 --If curr lifecycle id and incmong lifecycle id are same
1945 --then if current phase id is not null and if incoming phase is null populate curr phase id to
1946 --incoming value.
1947 l_item.main_obj_type.current_phase_id := l_curr_phase_id;
1948
1949 END IF;
1950 END IF;
1951 -- End of Bug 10416391
1952
1953 --Start of Bug 9688120
1954 IF((l_item.main_obj_type.inventory_item_status_code IS NULL OR
1955 l_item.main_obj_type.inventory_item_status_code = fnd_api.g_miss_char)
1956 AND l_item.main_obj_type.current_phase_id IS NOT NULL
1957 AND l_item.main_obj_type.current_phase_id <> fnd_api.g_miss_num
1958 ) THEN
1959
1960 IF(c_get_item_curr_data % ISOPEN ) THEN
1961 CLOSE c_get_item_curr_data;
1962 END IF;
1963
1964 OPEN c_get_item_curr_data(
1965 cp_item_id => l_item.main_obj_type.inventory_item_id
1966 ,cp_org_id => l_item.main_obj_type.organization_id
1967 );
1968
1969 FETCH c_get_item_curr_data INTO l_curr_lifecycle_id,l_curr_phase_id,l_curr_item_status_code;
1970
1971 CLOSE c_get_item_curr_data;
1972
1973 IF(nvl(l_curr_phase_id,fnd_api.g_miss_num) <> l_item.main_obj_type.current_phase_id ) THEN
1974
1975 l_item.main_obj_type.inventory_item_status_code := Get_Default_Item_Status_Code(
1976 p_phase_id => l_item.main_obj_type.current_phase_id
1977 );
1978 ELSE
1979 IF(l_curr_item_status_code IS NOT NULL) THEN
1980
1981 l_item.main_obj_type.inventory_item_status_code := l_curr_item_status_code;
1982 END IF;
1983 END IF;
1984 END IF;
1985 --End of Bug 9688120
1986
1987 END IF;
1988
1989 INV_EBI_UTIL.debug_line('STEP 50: BEFORE CALLING EGO_ITEM_PUB.process_item');
1990
1991 -- Following code is commented out for Bug 13618550 ,it may cause issue to PLM4P PIP
1992 /*
1993 IF( (l_item.main_obj_type.tracking_quantity_ind = 'P' OR l_item.main_obj_type.tracking_quantity_ind IS NULL OR l_item.main_obj_type.tracking_quantity_ind = fnd_api.g_miss_char) AND
1994 (l_item.main_obj_type.secondary_default_ind IS NULL OR l_item.main_obj_type.secondary_default_ind = fnd_api.g_miss_char)) THEN
1995 l_item.main_obj_type.secondary_default_ind := fnd_api.g_miss_char;
1996 END IF;
1997 */
1998
1999 INV_EBI_UTIL.debug_line('STEP 60:In INV_EBI_ITEM_HELPER.process_item_pvt,before calling EGO_ITEM_PUB.process_item');
2000 INV_EBI_UTIL.debug_line('STEP 70: Engineering_date before defaulting to fnd_api.g_miss_date ' || to_char(l_item.deprecated_obj_type.engineering_date,'YYYY/MM/DD HH24:MI:SS'));
2001 --OAAdapter is not setting engineering_date to fnd_api.g_miss_date on Cummins soa env.
2002 --as a temporary fix we are hardcoding the value.
2003 l_item.deprecated_obj_type.engineering_date := fnd_api.g_miss_date; -- added for bug 11884886
2004 INV_EBI_UTIL.debug_line('STEP 80:Before calling EGO_ITEM_PUB.process_item after defaulting to fnd_api.g_miss_date ' || to_char(l_item.deprecated_obj_type.engineering_date,'YYYY/MM/DD HH24:MI:SS'));
2005 EGO_ITEM_PUB.process_item(
2006 p_api_version => 1.0
2007 ,p_init_msg_list => l_item.main_obj_type.init_msg_list
2008 ,p_commit => FND_API.g_false
2009 ,p_transaction_type => l_transaction_type
2010 ,p_language_code => l_item.main_obj_type.language_code
2011 ,p_template_id => l_item.main_obj_type.template_id
2012 ,p_template_name => l_item.main_obj_type.template_name
2013 ,p_copy_inventory_item_id => l_item.main_obj_type.copy_inventory_item_id
2014 ,p_inventory_item_id => l_item.main_obj_type.inventory_item_id
2015 ,p_organization_id => l_item.main_obj_type.organization_id
2016 ,p_master_organization_id => l_item.main_obj_type.master_organization_id
2017 ,p_description => l_item.main_obj_type.description
2018 ,p_long_description => l_item.main_obj_type.long_description
2019 ,p_primary_uom_code => l_item.main_obj_type.primary_uom_code
2020 ,p_primary_unit_of_measure => l_item.main_obj_type.primary_unit_of_measure
2021 ,p_item_type => l_item.main_obj_type.item_type
2022 ,p_inventory_item_status_code => l_item.main_obj_type.inventory_item_status_code
2023 ,p_allowed_units_lookup_code => l_item.main_obj_type.allowed_units_lookup_code
2024 ,p_item_catalog_group_id => l_item.main_obj_type.item_catalog_group_id
2025 ,p_catalog_status_flag => l_item.deprecated_obj_type.catalog_status_flag
2026 ,p_inventory_item_flag => l_item.inventory_obj_type.inventory_item_flag
2027 ,p_stock_enabled_flag => l_item.inventory_obj_type.stock_enabled_flag
2028 ,p_mtl_transactions_enabled_fl => l_item.inventory_obj_type.mtl_transactions_enabled_fl
2029 ,p_check_shortages_flag => l_item.inventory_obj_type.check_shortages_flag
2030 ,p_revision_qty_control_code => l_item.inventory_obj_type.revision_qty_control_code
2031 ,p_reservable_type => l_item.inventory_obj_type.reservable_type
2032 ,p_shelf_life_code => l_item.inventory_obj_type.shelf_life_code
2033 ,p_shelf_life_days => l_item.inventory_obj_type.shelf_life_days
2034 ,p_cycle_count_enabled_flag => l_item.inventory_obj_type.cycle_count_enabled_flag
2035 ,p_negative_measurement_error => l_item.inventory_obj_type.negative_measurement_error
2036 ,p_positive_measurement_error => l_item.inventory_obj_type.positive_measurement_error
2037 ,p_lot_control_code => l_item.inventory_obj_type.lot_control_code
2038 ,p_auto_lot_alpha_prefix => l_item.inventory_obj_type.auto_lot_alpha_prefix
2039 ,p_start_auto_lot_number => l_item.inventory_obj_type.start_auto_lot_number
2040 ,p_serial_number_control_code => l_item.inventory_obj_type.serial_number_control_code
2041 ,p_auto_serial_alpha_prefix => l_item.inventory_obj_type.auto_serial_alpha_prefix
2042 ,p_start_auto_serial_number => l_item.inventory_obj_type.start_auto_serial_number
2043 ,p_location_control_code => l_item.inventory_obj_type.location_control_code
2044 ,p_restrict_subinventories_cod => l_item.inventory_obj_type.restrict_subinventories_cod
2045 ,p_restrict_locators_code => l_item.inventory_obj_type.restrict_locators_code
2046 ,p_bom_enabled_flag => l_item.bom_obj_type.bom_enabled_flag
2047 ,p_bom_item_type => l_item.bom_obj_type.bom_item_type
2048 ,p_base_item_id => l_item.bom_obj_type.base_item_id
2049 ,p_effectivity_control => l_item.bom_obj_type.effectivity_control
2050 ,p_eng_item_flag => l_item.bom_obj_type.eng_item_flag
2051 ,p_engineering_ecn_code => l_item.deprecated_obj_type.engineering_ecn_code
2052 ,p_engineering_item_id => l_item.deprecated_obj_type.engineering_item_id
2053 ,p_engineering_date => l_item.deprecated_obj_type.engineering_date
2054 ,p_product_family_item_id => l_item.deprecated_obj_type.product_family_item_id
2055 ,p_auto_created_config_flag => l_item.bom_obj_type.auto_created_config_flag
2056 ,p_model_config_clause_name => l_item.deprecated_obj_type.model_config_clause_name
2057 ,p_new_revision_code => l_item.deprecated_obj_type.new_revision_code
2058 ,p_costing_enabled_flag => l_item.costing_obj_type.costing_enabled_flag
2059 ,p_inventory_asset_flag => l_item.costing_obj_type.inventory_asset_flag
2060 ,p_default_include_in_rollup_f => l_item.costing_obj_type.default_include_in_rollup_f
2061 ,p_cost_of_sales_account => l_item.costing_obj_type.cost_of_sales_account
2062 ,p_std_lot_size => l_item.costing_obj_type.std_lot_size
2063 ,p_purchasing_item_flag => l_item.purchasing_obj_type.purchasing_item_flag
2064 ,p_purchasing_enabled_flag => l_item.purchasing_obj_type.purchasing_enabled_flag
2065 ,p_must_use_approved_vendor_fl => l_item.purchasing_obj_type.must_use_approved_vendor_fl
2066 ,p_allow_item_desc_update_flag => l_item.purchasing_obj_type.allow_item_desc_update_flag
2067 ,p_rfq_required_flag => l_item.purchasing_obj_type.rfq_required_flag
2068 ,p_outside_operation_flag => l_item.purchasing_obj_type.outside_operation_flag
2069 ,p_outside_operation_uom_type => l_item.purchasing_obj_type.outside_operation_uom_type
2070 ,p_taxable_flag => l_item.purchasing_obj_type.taxable_flag
2071 ,p_purchasing_tax_code => l_item.purchasing_obj_type.purchasing_tax_code
2072 ,p_receipt_required_flag => l_item.purchasing_obj_type.receipt_required_flag
2073 ,p_inspection_required_flag => l_item.purchasing_obj_type.inspection_required_flag
2074 ,p_buyer_id => l_item.purchasing_obj_type.buyer_id
2075 ,p_unit_of_issue => l_item.purchasing_obj_type.unit_of_issue
2076 ,p_receive_close_tolerance => l_item.purchasing_obj_type.receive_close_tolerance
2077 ,p_invoice_close_tolerance => l_item.purchasing_obj_type.invoice_close_tolerance
2078 ,p_un_number_id => l_item.purchasing_obj_type.un_number_id
2079 ,p_hazard_class_id => l_item.purchasing_obj_type.hazard_class_id
2080 ,p_list_price_per_unit => l_item.purchasing_obj_type.list_price_per_unit
2081 ,p_market_price => l_item.purchasing_obj_type.market_price
2082 ,p_price_tolerance_percent => l_item.purchasing_obj_type.price_tolerance_percent
2083 ,p_rounding_factor => l_item.purchasing_obj_type.rounding_factor
2084 ,p_encumbrance_account => l_item.purchasing_obj_type.encumbrance_account
2085 ,p_expense_account => l_item.purchasing_obj_type.expense_account
2086 ,p_expense_billable_flag => l_item.deprecated_obj_type.expense_billable_flag
2087 ,p_asset_category_id => l_item.purchasing_obj_type.asset_category_id
2088 ,p_receipt_days_exception_code => l_item.receiving_obj_type.receipt_days_exception_code
2089 ,p_days_early_receipt_allowed => l_item.receiving_obj_type.days_early_receipt_allowed
2090 ,p_days_late_receipt_allowed => l_item.receiving_obj_type.days_late_receipt_allowed
2091 ,p_allow_substitute_receipts_f => l_item.receiving_obj_type.allow_substitute_receipts_f
2092 ,p_allow_unordered_receipts_fl => l_item.receiving_obj_type.allow_unordered_receipts_fl
2093 ,p_allow_express_delivery_flag => l_item.receiving_obj_type.allow_express_delivery_flag
2094 ,p_qty_rcv_exception_code => l_item.receiving_obj_type.qty_rcv_exception_code
2095 ,p_qty_rcv_tolerance => l_item.receiving_obj_type.qty_rcv_tolerance
2096 ,p_receiving_routing_id => l_item.receiving_obj_type.receiving_routing_id
2097 ,p_enforce_ship_to_location_c => l_item.receiving_obj_type.enforce_ship_to_location_c
2098 ,p_weight_uom_code => l_item.physical_obj_type.weight_uom_code
2099 ,p_unit_weight => l_item.physical_obj_type.unit_weight
2100 ,p_volume_uom_code => l_item.physical_obj_type.volume_uom_code
2101 ,p_unit_volume => l_item.physical_obj_type.unit_volume
2102 ,p_container_item_flag => l_item.physical_obj_type.container_item_flag
2103 ,p_vehicle_item_flag => l_item.physical_obj_type.vehicle_item_flag
2104 ,p_container_type_code => l_item.physical_obj_type.container_type_code
2105 ,p_internal_volume => l_item.physical_obj_type.internal_volume
2106 ,p_maximum_load_weight => l_item.physical_obj_type.maximum_load_weight
2107 ,p_minimum_fill_percent => l_item.physical_obj_type.minimum_fill_percent
2108 ,p_inventory_planning_code => l_item.gplanning_obj_type.inventory_planning_code
2109 ,p_planner_code => l_item.gplanning_obj_type.planner_code
2110 ,p_planning_make_buy_code => l_item.gplanning_obj_type.planning_make_buy_code
2111 ,p_min_minmax_quantity => l_item.gplanning_obj_type.min_minmax_quantity
2112 ,p_max_minmax_quantity => l_item.gplanning_obj_type.max_minmax_quantity
2113 ,p_minimum_order_quantity => l_item.gplanning_obj_type.minimum_order_quantity
2114 ,p_maximum_order_quantity => l_item.gplanning_obj_type.maximum_order_quantity
2115 ,p_order_cost => l_item.gplanning_obj_type.order_cost
2116 ,p_carrying_cost => l_item.gplanning_obj_type.carrying_cost
2117 ,p_source_type => l_item.gplanning_obj_type.source_type
2118 ,p_source_organization_id => l_item.gplanning_obj_type.source_organization_id
2119 ,p_source_subinventory => l_item.gplanning_obj_type.source_subinventory
2120 ,p_mrp_safety_stock_code => l_item.gplanning_obj_type.mrp_safety_stock_code
2121 ,p_safety_stock_bucket_days => l_item.gplanning_obj_type.safety_stock_bucket_days
2122 ,p_mrp_safety_stock_percent => l_item.gplanning_obj_type.mrp_safety_stock_percent
2123 ,p_fixed_order_quantity => l_item.gplanning_obj_type.fixed_order_quantity
2124 ,p_fixed_days_supply => l_item.gplanning_obj_type.fixed_days_supply
2125 ,p_fixed_lot_multiplier => l_item.gplanning_obj_type.fixed_lot_multiplier
2126 ,p_mrp_planning_code => l_item.mrp_obj_type.mrp_planning_code
2127 ,p_ato_forecast_control => l_item.mrp_obj_type.ato_forecast_control
2128 ,p_planning_exception_set => l_item.mrp_obj_type.planning_exception_set
2129 ,p_end_assembly_pegging_flag => l_item.mrp_obj_type.end_assembly_pegging_flag
2130 ,p_shrinkage_rate => l_item.mrp_obj_type.shrinkage_rate
2131 ,p_rounding_control_type => l_item.mrp_obj_type.rounding_control_type
2132 ,p_acceptable_early_days => l_item.mrp_obj_type.acceptable_early_days
2133 ,p_repetitive_planning_flag => l_item.mrp_obj_type.repetitive_planning_flag
2134 ,p_overrun_percentage => l_item.mrp_obj_type.overrun_percentage
2135 ,p_acceptable_rate_increase => l_item.mrp_obj_type.acceptable_rate_increase
2136 ,p_acceptable_rate_decrease => l_item.mrp_obj_type.acceptable_rate_decrease
2137 ,p_mrp_calculate_atp_flag => l_item.mrp_obj_type.mrp_calculate_atp_flag
2138 ,p_auto_reduce_mps => l_item.mrp_obj_type.auto_reduce_mps
2139 ,p_planning_time_fence_code => l_item.mrp_obj_type.planning_time_fence_code
2140 ,p_planning_time_fence_days => l_item.mrp_obj_type.planning_time_fence_days
2141 ,p_demand_time_fence_code => l_item.mrp_obj_type.demand_time_fence_code
2142 ,p_demand_time_fence_days => l_item.mrp_obj_type.demand_time_fence_days
2143 ,p_release_time_fence_code => l_item.mrp_obj_type.release_time_fence_code
2144 ,p_release_time_fence_days => l_item.mrp_obj_type.release_time_fence_days
2145 ,p_preprocessing_lead_time => l_item.lead_time_obj_type.preprocessing_lead_time
2146 ,p_full_lead_time => l_item.lead_time_obj_type.full_lead_time
2147 ,p_postprocessing_lead_time => l_item.lead_time_obj_type.postprocessing_lead_time
2148 ,p_fixed_lead_time => l_item.lead_time_obj_type.fixed_lead_time
2149 ,p_variable_lead_time => l_item.lead_time_obj_type.variable_lead_time
2150 ,p_cum_manufacturing_lead_time => l_item.lead_time_obj_type.cum_manufacturing_lead_time
2151 ,p_cumulative_total_lead_time => l_item.lead_time_obj_type.cumulative_total_lead_time
2152 ,p_lead_time_lot_size => l_item.lead_time_obj_type.lead_time_lot_size
2153 ,p_build_in_wip_flag => l_item.wip_obj_type.build_in_wip_flag
2154 ,p_wip_supply_type => l_item.wip_obj_type.wip_supply_type
2155 ,p_wip_supply_subinventory => l_item.wip_obj_type.wip_supply_subinventory
2156 ,p_wip_supply_locator_id => l_item.wip_obj_type.wip_supply_locator_id
2157 ,p_overcompletion_tolerance_ty => l_item.wip_obj_type.overcompletion_tolerance_ty
2158 ,p_overcompletion_tolerance_va => l_item.wip_obj_type.overcompletion_tolerance_va
2159 ,p_customer_order_flag => l_item.order_obj_type.customer_order_flag
2160 ,p_customer_order_enabled_flag => l_item.order_obj_type.customer_order_enabled_flag
2161 ,p_shippable_item_flag => l_item.order_obj_type.shippable_item_flag
2162 ,p_internal_order_flag => l_item.order_obj_type.internal_order_flag
2163 ,p_internal_order_enabled_flag => l_item.order_obj_type.internal_order_enabled_flag
2164 ,p_so_transactions_flag => l_item.order_obj_type.so_transactions_flag
2165 ,p_pick_components_flag => l_item.order_obj_type.pick_components_flag
2166 ,p_atp_flag => l_item.order_obj_type.atp_flag
2167 ,p_replenish_to_order_flag => l_item.order_obj_type.replenish_to_order_flag
2168 ,p_atp_rule_id => l_item.order_obj_type.atp_rule_id
2169 ,p_atp_components_flag => l_item.order_obj_type.atp_components_flag
2170 ,p_ship_model_complete_flag => l_item.order_obj_type.ship_model_complete_flag
2171 ,p_picking_rule_id => l_item.order_obj_type.picking_rule_id
2172 ,p_collateral_flag => l_item.order_obj_type.collateral_flag
2173 ,p_default_shipping_org => l_item.order_obj_type.default_shipping_org
2174 ,p_returnable_flag => l_item.order_obj_type.returnable_flag
2175 ,p_return_inspection_requireme => l_item.order_obj_type.return_inspection_requireme
2176 ,p_over_shipment_tolerance => l_item.order_obj_type.over_shipment_tolerance
2177 ,p_under_shipment_tolerance => l_item.order_obj_type.under_shipment_tolerance
2178 ,p_over_return_tolerance => l_item.order_obj_type.over_return_tolerance
2179 ,p_under_return_tolerance => l_item.order_obj_type.under_return_tolerance
2180 ,p_invoiceable_item_flag => l_item.invoice_obj_type.invoiceable_item_flag
2181 ,p_invoice_enabled_flag => l_item.invoice_obj_type.invoice_enabled_flag
2182 ,p_accounting_rule_id => l_item.invoice_obj_type.accounting_rule_id
2183 ,p_invoicing_rule_id => l_item.invoice_obj_type.invoicing_rule_id
2184 ,p_tax_code => l_item.invoice_obj_type.tax_code
2185 ,p_sales_account => l_item.invoice_obj_type.sales_account
2186 ,p_payment_terms_id => l_item.invoice_obj_type.payment_terms_id
2187 ,p_coverage_schedule_id => l_item.service_obj_type.coverage_schedule_id
2188 ,p_service_duration => l_item.service_obj_type.service_duration
2189 ,p_service_duration_period_cod => l_item.service_obj_type.service_duration_period_cod
2190 ,p_serviceable_product_flag => l_item.service_obj_type.serviceable_product_flag
2191 ,p_service_starting_delay => l_item.service_obj_type.service_starting_delay
2192 ,p_material_billable_flag => l_item.service_obj_type.material_billable_flag
2193 ,p_serviceable_component_flag => l_item.deprecated_obj_type.serviceable_component_flag
2194 ,p_preventive_maintenance_flag => l_item.deprecated_obj_type.preventive_maintenance_flag
2195 ,p_prorate_service_flag => l_item.deprecated_obj_type.prorate_service_flag
2196 ,p_serviceable_item_class_id => l_item.deprecated_obj_type.serviceable_item_class_id
2197 ,p_base_warranty_service_id => l_item.deprecated_obj_type.base_warranty_service_id
2198 ,p_warranty_vendor_id => l_item.deprecated_obj_type.warranty_vendor_id
2199 ,p_max_warranty_amount => l_item.deprecated_obj_type.max_warranty_amount
2200 ,p_response_time_period_code => l_item.deprecated_obj_type.response_time_period_code
2201 ,p_response_time_value => l_item.deprecated_obj_type.response_time_value
2202 ,p_primary_specialist_id => l_item.deprecated_obj_type.primary_specialist_id
2203 ,p_secondary_specialist_id => l_item.deprecated_obj_type.secondary_specialist_id
2204 ,p_wh_update_date => l_item.deprecated_obj_type.wh_update_date
2205 ,p_equipment_type => l_item.physical_obj_type.equipment_type
2206 ,p_recovered_part_disp_code => l_item.service_obj_type.recovered_part_disp_code
2207 ,p_defect_tracking_on_flag => l_item.service_obj_type.defect_tracking_on_flag
2208 ,p_event_flag => l_item.physical_obj_type.event_flag
2209 ,p_electronic_flag => l_item.physical_obj_type.electronic_flag
2210 ,p_downloadable_flag => l_item.physical_obj_type.downloadable_flag
2211 ,p_vol_discount_exempt_flag => l_item.deprecated_obj_type.vol_discount_exempt_flag
2212 ,p_coupon_exempt_flag => l_item.deprecated_obj_type.coupon_exempt_flag
2213 ,p_comms_nl_trackable_flag => l_item.service_obj_type.comms_nl_trackable_flag
2214 ,p_asset_creation_code => l_item.service_obj_type.asset_creation_code
2215 ,p_comms_activation_reqd_flag => l_item.deprecated_obj_type.comms_activation_reqd_flag
2216 ,p_orderable_on_web_flag => l_item.web_option_obj_type.orderable_on_web_flag
2217 ,p_back_orderable_flag => l_item.web_option_obj_type.back_orderable_flag
2218 ,p_web_status => l_item.web_option_obj_type.web_status
2219 ,p_indivisible_flag => l_item.physical_obj_type.indivisible_flag
2220 ,p_dimension_uom_code => l_item.physical_obj_type.dimension_uom_code
2221 ,p_unit_length => l_item.physical_obj_type.unit_length
2222 ,p_unit_width => l_item.physical_obj_type.unit_width
2223 ,p_unit_height => l_item.physical_obj_type.unit_height
2224 ,p_bulk_picked_flag => l_item.inventory_obj_type.bulk_picked_flag
2225 ,p_lot_status_enabled => l_item.inventory_obj_type.lot_status_enabled
2226 ,p_default_lot_status_id => l_item.deprecated_obj_type.default_lot_status_id
2227 ,p_serial_status_enabled => l_item.inventory_obj_type.serial_status_enabled
2228 ,p_default_serial_status_id => l_item.deprecated_obj_type.default_serial_status_id
2229 ,p_lot_split_enabled => l_item.inventory_obj_type.lot_split_enabled
2230 ,p_lot_merge_enabled => l_item.inventory_obj_type.lot_merge_enabled
2231 ,p_inventory_carry_penalty => l_item.wip_obj_type.inventory_carry_penalty
2232 ,p_operation_slack_penalty => l_item.wip_obj_type.operation_slack_penalty
2233 ,p_financing_allowed_flag => l_item.order_obj_type.financing_allowed_flag
2234 ,p_eam_item_type => l_item.asset_obj_type.eam_item_type
2235 ,p_eam_activity_type_code => l_item.asset_obj_type.eam_activity_type_code
2236 ,p_eam_activity_cause_code => l_item.asset_obj_type.eam_activity_cause_code
2237 ,p_eam_act_notification_flag => l_item.asset_obj_type.eam_act_notification_flag
2238 ,p_eam_act_shutdown_status => l_item.asset_obj_type.eam_act_shutdown_status
2239 ,p_dual_uom_control => l_item.deprecated_obj_type.dual_uom_control
2240 ,p_secondary_uom_code => l_item.main_obj_type.secondary_uom_code
2241 ,p_dual_uom_deviation_high => l_item.main_obj_type.dual_uom_deviation_high
2242 ,p_dual_uom_deviation_low => l_item.main_obj_type.dual_uom_deviation_low
2243 ,p_contract_item_type_code => l_item.asset_obj_type.contract_item_type_code
2244 ,p_subscription_depend_flag => l_item.deprecated_obj_type.subscription_depend_flag
2245 ,p_serv_req_enabled_code => l_item.asset_obj_type.serv_req_enabled_code
2246 ,p_serv_billing_enabled_flag => l_item.asset_obj_type.serv_billing_enabled_flag
2247 ,p_serv_importance_level => l_item.deprecated_obj_type.serv_importance_level
2248 ,p_planned_inv_point_flag => l_item.mrp_obj_type.planned_inv_point_flag
2249 ,p_lot_translate_enabled => l_item.inventory_obj_type.lot_translate_enabled
2250 ,p_default_so_source_type => l_item.order_obj_type.default_so_source_type
2251 ,p_create_supply_flag => l_item.mrp_obj_type.create_supply_flag
2252 ,p_substitution_window_code => l_item.mrp_obj_type.substitution_window_code
2253 ,p_substitution_window_days => l_item.mrp_obj_type.substitution_window_days
2254 ,p_ib_item_instance_class => l_item.service_obj_type.ib_item_instance_class
2255 ,p_config_model_type => l_item.bom_obj_type.config_model_type
2256 ,p_lot_substitution_enabled => l_item.inventory_obj_type.lot_substitution_enabled
2257 ,p_minimum_license_quantity => l_item.web_option_obj_type.minimum_license_quantity
2258 ,p_eam_activity_source_code => l_item.asset_obj_type.eam_activity_source_code
2259 ,p_approval_status => l_item.deprecated_obj_type.approval_status
2260 ,p_tracking_quantity_ind => l_item.main_obj_type.tracking_quantity_ind
2261 ,p_ont_pricing_qty_source => l_item.main_obj_type.ont_pricing_qty_source
2262 ,p_secondary_default_ind => l_item.main_obj_type.secondary_default_ind
2263 ,p_option_specific_sourced => l_item.deprecated_obj_type.option_specific_sourced
2264 ,p_vmi_minimum_units => l_item.gplanning_obj_type.vmi_minimum_units
2265 ,p_vmi_minimum_days => l_item.gplanning_obj_type.vmi_minimum_days
2266 ,p_vmi_maximum_units => l_item.gplanning_obj_type.vmi_maximum_units
2267 ,p_vmi_maximum_days => l_item.gplanning_obj_type.vmi_maximum_days
2268 ,p_vmi_fixed_order_quantity => l_item.gplanning_obj_type.vmi_fixed_order_quantity
2269 ,p_so_authorization_flag => l_item.gplanning_obj_type.so_authorization_flag
2270 ,p_consigned_flag => l_item.gplanning_obj_type.consigned_flag
2271 ,p_asn_autoexpire_flag => l_item.gplanning_obj_type.asn_autoexpire_flag
2272 ,p_vmi_forecast_type => l_item.gplanning_obj_type.vmi_forecast_type
2273 ,p_forecast_horizon => l_item.gplanning_obj_type.forecast_horizon
2274 ,p_exclude_from_budget_flag => l_item.mrp_obj_type.exclude_from_budget_flag
2275 ,p_days_tgt_inv_supply => l_item.mrp_obj_type.days_tgt_inv_supply
2276 ,p_days_tgt_inv_window => l_item.mrp_obj_type.days_tgt_inv_window
2277 ,p_days_max_inv_supply => l_item.mrp_obj_type.days_max_inv_supply
2278 ,p_days_max_inv_window => l_item.mrp_obj_type.days_max_inv_window
2279 ,p_drp_planned_flag => l_item.mrp_obj_type.drp_planned_flag
2280 ,p_critical_component_flag => l_item.mrp_obj_type.critical_component_flag
2281 ,p_continous_transfer => l_item.mrp_obj_type.continous_transfer
2282 ,p_convergence => l_item.mrp_obj_type.convergence
2283 ,p_divergence => l_item.mrp_obj_type.divergence
2284 ,p_config_orgs => l_item.bom_obj_type.config_orgs
2285 ,p_config_match => l_item.bom_obj_type.config_match
2286 ,p_item_number => l_item.main_obj_type.item_number
2287 ,p_segment1 => l_item.main_obj_type.segment1
2288 ,p_segment2 => l_item.main_obj_type.segment2
2289 ,p_segment3 => l_item.main_obj_type.segment3
2290 ,p_segment4 => l_item.main_obj_type.segment4
2291 ,p_segment5 => l_item.main_obj_type.segment5
2292 ,p_segment6 => l_item.main_obj_type.segment6
2293 ,p_segment7 => l_item.main_obj_type.segment7
2294 ,p_segment8 => l_item.main_obj_type.segment8
2295 ,p_segment9 => l_item.main_obj_type.segment9
2296 ,p_segment10 => l_item.main_obj_type.segment10
2297 ,p_segment11 => l_item.main_obj_type.segment11
2298 ,p_segment12 => l_item.main_obj_type.segment12
2299 ,p_segment13 => l_item.main_obj_type.segment13
2300 ,p_segment14 => l_item.main_obj_type.segment14
2301 ,p_segment15 => l_item.main_obj_type.segment15
2302 ,p_segment16 => l_item.main_obj_type.segment16
2303 ,p_segment17 => l_item.main_obj_type.segment17
2304 ,p_segment18 => l_item.main_obj_type.segment18
2305 ,p_segment19 => l_item.main_obj_type.segment19
2306 ,p_segment20 => l_item.main_obj_type.segment20
2307 ,p_summary_flag => l_item.main_obj_type.summary_flag
2308 ,p_enabled_flag => l_item.main_obj_type.enabled_flag
2309 ,p_start_date_active => l_item.main_obj_type.start_date_active
2310 ,p_end_date_active => l_item.main_obj_type.end_date_active
2311 ,p_attribute_category => l_item.custom_obj_type.attribute_category
2312 ,p_attribute1 => l_item.custom_obj_type.attribute1
2313 ,p_attribute2 => l_item.custom_obj_type.attribute2
2314 ,p_attribute3 => l_item.custom_obj_type.attribute3
2315 ,p_attribute4 => l_item.custom_obj_type.attribute4
2316 ,p_attribute5 => l_item.custom_obj_type.attribute5
2317 ,p_attribute6 => l_item.custom_obj_type.attribute6
2318 ,p_attribute7 => l_item.custom_obj_type.attribute7
2319 ,p_attribute8 => l_item.custom_obj_type.attribute8
2320 ,p_attribute9 => l_item.custom_obj_type.attribute9
2321 ,p_attribute10 => l_item.custom_obj_type.attribute10
2322 ,p_attribute11 => l_item.custom_obj_type.attribute11
2323 ,p_attribute12 => l_item.custom_obj_type.attribute12
2324 ,p_attribute13 => l_item.custom_obj_type.attribute13
2325 ,p_attribute14 => l_item.custom_obj_type.attribute14
2326 ,p_attribute15 => l_item.custom_obj_type.attribute15
2327 ,p_attribute16 => l_item.custom_obj_type.attribute16
2328 ,p_attribute17 => l_item.custom_obj_type.attribute17
2329 ,p_attribute18 => l_item.custom_obj_type.attribute18
2330 ,p_attribute19 => l_item.custom_obj_type.attribute19
2331 ,p_attribute20 => l_item.custom_obj_type.attribute20
2332 ,p_attribute21 => l_item.custom_obj_type.attribute21
2333 ,p_attribute22 => l_item.custom_obj_type.attribute22
2334 ,p_attribute23 => l_item.custom_obj_type.attribute23
2335 ,p_attribute24 => l_item.custom_obj_type.attribute24
2336 ,p_attribute25 => l_item.custom_obj_type.attribute25
2337 ,p_attribute26 => l_item.custom_obj_type.attribute26
2338 ,p_attribute27 => l_item.custom_obj_type.attribute27
2339 ,p_attribute28 => l_item.custom_obj_type.attribute28
2340 ,p_attribute29 => l_item.custom_obj_type.attribute29
2341 ,p_attribute30 => l_item.custom_obj_type.attribute30
2342 ,p_global_attribute_category => l_item.custom_obj_type.global_attribute_category
2343 ,p_global_attribute1 => l_item.custom_obj_type.global_attribute1
2344 ,p_global_attribute2 => l_item.custom_obj_type.global_attribute2
2345 ,p_global_attribute3 => l_item.custom_obj_type.global_attribute3
2346 ,p_global_attribute4 => l_item.custom_obj_type.global_attribute4
2347 ,p_global_attribute5 => l_item.custom_obj_type.global_attribute5
2348 ,p_global_attribute6 => l_item.custom_obj_type.global_attribute6
2349 ,p_global_attribute7 => l_item.custom_obj_type.global_attribute7
2350 ,p_global_attribute8 => l_item.custom_obj_type.global_attribute8
2351 ,p_global_attribute9 => l_item.custom_obj_type.global_attribute9
2352 ,p_global_attribute10 => l_item.custom_obj_type.global_attribute10
2353 ,p_creation_date => l_item.main_obj_type.creation_date
2354 ,p_created_by => l_item.main_obj_type.created_by
2355 ,p_last_update_date => l_item.main_obj_type.last_update_date
2356 ,p_last_updated_by => l_item.main_obj_type.last_updated_by
2357 ,p_last_update_login => l_item.main_obj_type.last_update_login
2358 ,p_request_id => l_item.main_obj_type.request_id
2359 ,p_program_application_id => l_item.main_obj_type.program_application_id
2360 ,p_program_id => l_item.main_obj_type.program_id
2361 ,p_program_update_date => l_item.main_obj_type.program_update_date
2362 ,p_lifecycle_id => l_item.main_obj_type.lifecycle_id
2363 ,p_current_phase_id => l_item.main_obj_type.current_phase_id
2364 ,p_revision_id => l_item.main_obj_type.revision_id
2365 ,p_revision_code => l_item.main_obj_type.revision_code
2366 ,p_revision_label => l_item.main_obj_type.revision_label
2367 ,p_revision_description => l_item.main_obj_type.revision_description
2368 ,p_effectivity_date => l_item.main_obj_type.effectivity_date
2369 ,p_rev_lifecycle_id => l_item.main_obj_type.rev_lifecycle_id
2370 ,p_rev_current_phase_id => l_item.main_obj_type.rev_current_phase_id
2371 ,p_rev_attribute_category => l_item.custom_obj_type.rev_attribute_category
2372 ,p_rev_attribute1 => l_item.custom_obj_type.rev_attribute1
2373 ,p_rev_attribute2 => l_item.custom_obj_type.rev_attribute2
2374 ,p_rev_attribute3 => l_item.custom_obj_type.rev_attribute3
2375 ,p_rev_attribute4 => l_item.custom_obj_type.rev_attribute4
2376 ,p_rev_attribute5 => l_item.custom_obj_type.rev_attribute5
2377 ,p_rev_attribute6 => l_item.custom_obj_type.rev_attribute6
2378 ,p_rev_attribute7 => l_item.custom_obj_type.rev_attribute7
2379 ,p_rev_attribute8 => l_item.custom_obj_type.rev_attribute8
2380 ,p_rev_attribute9 => l_item.custom_obj_type.rev_attribute9
2381 ,p_rev_attribute10 => l_item.custom_obj_type.rev_attribute10
2382 ,p_rev_attribute11 => l_item.custom_obj_type.rev_attribute11
2383 ,p_rev_attribute12 => l_item.custom_obj_type.rev_attribute12
2384 ,p_rev_attribute13 => l_item.custom_obj_type.rev_attribute13
2385 ,p_rev_attribute14 => l_item.custom_obj_type.rev_attribute14
2386 ,p_rev_attribute15 => l_item.custom_obj_type.rev_attribute15
2387 ,p_apply_template => l_item.main_obj_type.apply_template
2388 ,p_object_version_number => l_item.deprecated_obj_type.object_version_number
2389 ,p_process_control => 'PLM_UI:N'
2390 ,x_inventory_item_id => x_out.inventory_item_id
2391 ,x_organization_id => x_out.organization_id
2392 ,x_return_status => x_out.output_status.return_status
2393 ,x_msg_count => x_out.output_status.msg_count
2394 ,x_msg_data => x_out.output_status.msg_data
2395 ,p_cas_number => l_item.process_manufacturing_obj.cas_number
2396 ,p_child_lot_flag => l_item.inventory_obj_type.child_lot_flag
2397 ,p_child_lot_prefix => l_item.inventory_obj_type.child_lot_prefix
2398 ,p_child_lot_starting_number => l_item.inventory_obj_type.child_lot_starting_number
2399 ,p_child_lot_validation_flag => l_item.inventory_obj_type.child_lot_validation_flag
2400 ,p_copy_lot_attribute_flag => l_item.inventory_obj_type.copy_lot_attribute_flag
2401 ,p_default_grade => l_item.inventory_obj_type.default_grade
2402 ,p_expiration_action_code => l_item.inventory_obj_type.expiration_action_code
2403 ,p_expiration_action_interval => l_item.inventory_obj_type.expiration_action_interval
2404 ,p_grade_control_flag => l_item.inventory_obj_type.grade_control_flag
2405 ,p_hazardous_material_flag => l_item.process_manufacturing_obj.hazardous_material_flag
2406 ,p_hold_days => l_item.inventory_obj_type.hold_days
2407 ,p_lot_divisible_flag => l_item.inventory_obj_type.lot_divisible_flag
2408 ,p_maturity_days => l_item.inventory_obj_type.maturity_days
2409 ,p_parent_child_generation_flag => l_item.inventory_obj_type.parent_child_generation_flag
2410 ,p_process_costing_enabled_flag => l_item.process_manufacturing_obj.process_costing_enabled_flag
2411 ,p_process_execution_enabled_fl => l_item.process_manufacturing_obj.process_execution_enabled_flag
2412 ,p_process_quality_enabled_flag => l_item.process_manufacturing_obj.process_quality_enabled_flag
2413 ,p_process_supply_locator_id => l_item.process_manufacturing_obj.process_supply_locator_id
2414 ,p_process_supply_subinventory => l_item.process_manufacturing_obj.process_supply_subinventory
2415 ,p_process_yield_locator_id => l_item.process_manufacturing_obj.process_yield_locator_id
2416 ,p_process_yield_subinventory => l_item.process_manufacturing_obj.process_yield_subinventory
2417 ,p_recipe_enabled_flag => l_item.process_manufacturing_obj.recipe_enabled_flag
2418 ,p_retest_interval => l_item.inventory_obj_type.retest_interval
2419 ,p_charge_periodicity_code => l_item.order_obj_type.charge_periodicity_code
2420 ,p_repair_leadtime => l_item.mrp_obj_type.repair_leadtime
2421 ,p_repair_yield => l_item.mrp_obj_type.repair_yield
2422 ,p_preposition_point => l_item.mrp_obj_type.preposition_point
2423 ,p_repair_program => l_item.mrp_obj_type.repair_program
2424 ,p_subcontracting_component => l_item.gplanning_obj_type.subcontracting_component
2425 ,p_outsourced_assembly => l_item.purchasing_obj_type.outsourced_assembly
2426 );
2427 INV_EBI_UTIL.debug_line('STEP 90: AFTER CALLING EGO_ITEM_PUB.process_item STATUS: '|| x_out.output_status.return_status);
2428 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
2429 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || l_item.main_obj_type.item_number || ' -> Org Code: ' || l_item.main_obj_type.organization_code;
2430 RAISE FND_API.g_exc_unexpected_error;
2431 END IF;
2432
2433 /*Start of Bug 13370136 */ -- ramukher
2434 IF l_item.main_obj_type.item_desc_lang_obj_tbl_type IS NOT NULL
2435 THEN
2436 /*Condition where the flow for Multi Language Support will be triggered*/
2437 IF (l_item.main_obj_type.item_desc_lang_obj_tbl_type.COUNT > 0)
2438 THEN
2439 /*Call the Process_item API for the same item in update mode for the different languages*/
2440
2441 l_transaction_type := INV_EBI_ITEM_PUB.g_otype_update;
2442
2443 l_item.main_obj_type.inventory_item_id := x_out.inventory_item_id;
2444
2445 l_orig_nls_lang := FND_GLOBAL.nls_language();
2446
2447 FOR i IN 1 .. l_item.main_obj_type.item_desc_lang_obj_tbl_type.COUNT
2448 LOOP
2449
2450 FOR r_get_nls_language IN c_get_nls_language(l_item.main_obj_type.item_desc_lang_obj_tbl_type(i).lang_code)
2451 LOOP
2452
2453 l_nls_language := r_get_nls_language.nls_language;
2454 --FND_GLOBAL.SET_NLS_CONTEXT(p_nls_language => l_nls_language);Commented for bug14210113
2455
2456 -- Added for bug 14210113
2457 INV_EBI_UTIL.debug_line('STEP 100: BEFORE CALLING set_nls for language ' || l_nls_language);
2458 set_nls(l_nls_language);
2459
2460 INV_EBI_UTIL.debug_line('STEP 110: BEFORE CALLING EGO_ITEM_PUB.process_item IN UPDATE MODE');
2461 EGO_ITEM_PUB.process_item(
2462 p_api_version => 1.0
2463 ,p_init_msg_list => l_item.main_obj_type.init_msg_list
2464 ,p_commit => FND_API.g_false
2465 ,p_transaction_type => l_transaction_type
2466 ,p_item_number => l_item.main_obj_type.item_number
2467 ,p_organization_id => l_item.main_obj_type.organization_id
2468 ,p_description => l_item.main_obj_type.item_desc_lang_obj_tbl_type(i).description
2469 ,p_long_description => l_item.main_obj_type.item_desc_lang_obj_tbl_type(i).long_desc
2470 ,p_inventory_item_id => l_item.main_obj_type.inventory_item_id
2471 ,x_inventory_item_id => x_out.inventory_item_id
2472 ,x_organization_id => x_out.organization_id
2473 ,x_return_status => x_out.output_status.return_status
2474 ,x_msg_count => x_out.output_status.msg_count
2475 ,x_msg_data => x_out.output_status.msg_data
2476 );
2477
2478 INV_EBI_UTIL.debug_line('STEP 110: AFTER CALLING EGO_ITEM_PUB.process_item IN UPDATE MODE: STATUS: '|| x_out.output_status.return_status);
2479
2480 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
2481
2482 INV_EBI_UTIL.debug_line('Error while updating Item ' || l_item.main_obj_type.item_number || ' description using language code :' || l_item.main_obj_type.item_desc_lang_obj_tbl_type(i).lang_code);
2483 x_out.output_status.msg_data := x_out.output_status.msg_data || ' ->Item Number:' || l_item.main_obj_type.item_number || '-> Language code:' || l_item.main_obj_type.item_desc_lang_obj_tbl_type(i).lang_code;
2484
2485 -- To set back the language to base language
2486
2487 --FND_GLOBAL.SET_NLS_CONTEXT(p_nls_language => l_orig_nls_lang); Commented for bug14210113
2488
2489 -- Added for bug 14210113
2490 INV_EBI_UTIL.debug_line('STEP 120: BEFORE CALLING set_nls for setting to original language in case of exception' || l_orig_nls_lang);
2491 set_nls(l_orig_nls_lang);
2492
2493 RAISE FND_API.g_exc_unexpected_error;
2494
2495 END IF;
2496
2497 END LOOP;
2498 END LOOP;
2499 END IF;
2500 END IF;
2501
2502 -- To set back the language to base language
2503
2504 --FND_GLOBAL.SET_NLS_CONTEXT(p_nls_language => l_orig_nls_lang); --Commented for bug 14210113
2505
2506 -- Added for bug 14210113
2507 INV_EBI_UTIL.debug_line('STEP 130: BEFORE CALLING set_nls for setting to original language in case of success' || l_orig_nls_lang);
2508 set_nls(l_orig_nls_lang);
2509
2510 /*End of Bug 13370136 */ -- ramukher
2511
2512 --Added for Bug 12902341
2513 EGO_ITEM_PUB.SYNC_IM_INDEX ;
2514
2515 l_pk_col_name_val_pairs.EXTEND(1);
2516 l_pk_col_name_val_pairs(1).name := 'organization_id';
2517 l_pk_col_name_val_pairs(1).value := l_item.main_obj_type.organization_id;
2518 x_out.organization_code := id_to_value(
2519 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
2520 ,p_entity_name => G_ORGANIZATION
2521 );
2522 SELECT concatenated_segments,description
2523 INTO x_out.item_number,x_out.description
2524 FROM mtl_system_items_kfv
2525 WHERE organization_id = x_out.organization_id
2526 AND inventory_item_id = x_out.inventory_item_id;
2527 INV_EBI_UTIL.debug_line('STEP 140: BEFORE CALLING INV_EBI_ITEM_HELPER.get_Operating_unit ORG ID: '|| x_out.organization_id);
2528 get_Operating_unit
2529 (p_oranization_id => x_out.organization_id
2530 ,x_operating_unit => x_out.operating_unit
2531 ,x_ouid => x_out.operating_unit_id
2532 );
2533 INV_EBI_UTIL.debug_line('STEP 150: AFTER CALLING INV_EBI_ITEM_HELPER.get_Operating_unit OPERATING UNIT: '|| x_out.operating_unit);
2534 BEGIN
2535 SELECT orig_system_id
2536 INTO l_source_system_id
2537 FROM HZ_ORIG_SYSTEMS_B
2538 WHERE orig_system = l_item.main_obj_type.cross_reference_type;
2539 INV_EBI_UTIL.debug_line('STEP 160: SOURCE SYSTEM ID: '|| l_source_system_id);
2540 EXCEPTION
2541 WHEN NO_DATA_FOUND THEN
2542 NULL;
2543 END;
2544
2545 BEGIN
2546 SELECT COUNT(*)
2547 INTO l_count
2548 FROM MTL_CROSS_REFERENCES_B MCR
2549 WHERE MCR.CROSS_REFERENCE_TYPE = 'SS_ITEM_XREF'
2550 AND nvl(MCR.SOURCE_SYSTEM_ID,-99999) = nvl(l_source_system_id,-99999) --Bug 8704166
2551 AND MCR.CROSS_REFERENCE = l_item.main_obj_type.item_number
2552 AND MCR.INVENTORY_ITEM_ID = x_out.inventory_item_id
2553 AND MCR.END_DATE_ACTIVE IS NULL
2554 OR MCR.END_DATE_ACTIVE>SYSDATE;
2555 EXCEPTION
2556 WHEN NO_DATA_FOUND THEN
2557 l_count:=0;
2558 END;
2559
2560 IF(l_transaction_type = INV_EBI_ITEM_PUB.g_otype_create) AND l_count=0 THEN
2561 INV_EBI_UTIL.debug_line('STEP 170: BEFORE CALLING MTL_CROSS_REFERENCES_PKG.insert_row');
2562
2563 MTL_CROSS_REFERENCES_PKG.insert_row(
2564 p_source_system_id => l_source_system_id,
2565 p_start_date_active => SYSDATE,
2566 p_end_date_active => NULL,
2567 p_object_version_number => NULL,
2568 p_uom_code => NULL,
2569 p_revision_id => NULL,
2570 p_epc_gtin_serial => NULL,
2571 p_inventory_item_id => x_out.inventory_item_id,
2572 p_organization_id => NULL,
2573 p_cross_reference_type => 'SS_ITEM_XREF',
2574 p_cross_reference => l_item.main_obj_type.item_number, -- p_source_system_reference,
2575 p_org_independent_flag => 'Y',
2576 p_request_id => NULL,
2577 p_attribute1 => NULL,
2578 p_attribute2 => NULL,
2579 p_attribute3 => NULL,
2580 p_attribute4 => NULL,
2581 p_attribute5 => NULL,
2582 p_attribute6 => NULL,
2583 p_attribute7 => NULL,
2584 p_attribute8 => NULL,
2585 p_attribute9 => NULL,
2586 p_attribute10 => NULL,
2587 p_attribute11 => NULL,
2588 p_attribute12 => NULL,
2589 p_attribute13 => NULL,
2590 p_attribute14 => NULL,
2591 p_attribute15 => NULL,
2592 p_attribute_category => NULL,
2593 p_description => l_item.main_obj_type.description,
2594 p_creation_date => SYSDATE,
2595 p_created_by => FND_GLOBAL.user_id,
2596 p_last_update_date => SYSDATE,
2597 p_last_updated_by => FND_GLOBAL.user_id,
2598 p_last_update_login => FND_GLOBAL.login_id,
2599 p_program_application_id => NULL,
2600 p_program_id => NULL,
2601 p_program_update_date => SYSDATE,
2602 x_cross_reference_id => l_xref_id);
2603 INV_EBI_UTIL.debug_line('STEP 180: AFTER CALLING MTL_CROSS_REFERENCES_PKG.insert_row');
2604 END IF;
2605 IF FND_API.to_boolean( p_commit ) THEN
2606 COMMIT;
2607 END IF;
2608 INV_EBI_UTIL.debug_line('STEP 190: END INSIDE INV_EBI_ITEM_HELPER.process_item_pvt STATUS: '|| x_out.output_status.return_status);
2609 EXCEPTION
2610 WHEN FND_API.g_exc_error THEN
2611 ROLLBACK TO inv_ebi_pvt_item_save_pnt;
2612 x_out.output_status.return_status := FND_API.g_ret_sts_error;
2613 IF(c_get_item_curr_data % ISOPEN) THEN
2614 CLOSE c_get_item_curr_data;
2615 END IF;
2616
2617 IF(x_out.output_status.msg_data IS NULL) THEN
2618 fnd_msg_pub.count_and_get(
2619 p_encoded => fnd_api.g_false
2620 ,p_count => x_out.output_status.msg_count
2621 ,p_data => x_out.output_status.msg_data
2622 );
2623 END IF;
2624 WHEN FND_API.g_exc_unexpected_error THEN
2625 ROLLBACK TO inv_ebi_pvt_item_save_pnt;
2626 IF(c_get_item_curr_data % ISOPEN) THEN
2627 CLOSE c_get_item_curr_data;
2628 END IF;
2629
2630 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
2631 IF(x_out.output_status.msg_data IS NULL) THEN
2632 fnd_msg_pub.count_and_get(
2633 p_encoded => fnd_api.g_false
2634 ,p_count => x_out.output_status.msg_count
2635 ,p_data => x_out.output_status.msg_data
2636 );
2637 END IF;
2638 WHEN OTHERS THEN
2639 ROLLBACK TO inv_ebi_pvt_item_save_pnt;
2640 IF(c_get_item_curr_data % ISOPEN) THEN
2641 CLOSE c_get_item_curr_data;
2642 END IF;
2643
2644 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
2645 IF (x_out.output_status.msg_data IS NOT NULL) THEN
2646 x_out.output_status.msg_data := x_out.output_status.msg_data ||' -> INV_EBI_ITEM_HELPER.process_item_pvt ';
2647 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || l_item.main_obj_type.item_number || ' -> Org Code: ' || l_item.main_obj_type.organization_code;
2648 ELSE
2649 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.process_item_pvt ';
2650 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || l_item.main_obj_type.item_number || ' -> Org Code: ' || l_item.main_obj_type.organization_code;
2651 END IF;
2652 END process_item_pvt;
2653 /************************************************************************************
2654 -- API name : process_item_uda
2655 -- Type : Public
2656 -- Function :
2657 --
2658 ************************************************************************************/
2659 PROCEDURE process_item_uda (
2660 p_api_version IN NUMBER DEFAULT 1.0
2661 ,p_inventory_item_id IN NUMBER
2662 ,p_organization_id IN NUMBER
2663 ,p_item_catalog_group_id IN NUMBER DEFAULT NULL
2664 ,p_revision_id IN NUMBER DEFAULT NULL
2665 ,p_revision_code IN VARCHAR2 DEFAULT NULL
2666 ,p_uda_input_obj IN inv_ebi_uda_input_obj
2667 ,p_commit IN VARCHAR2 := fnd_api.g_false
2668 ,x_uda_output_obj OUT NOCOPY inv_ebi_item_output_obj
2669 )
2670 IS
2671 l_uda_out inv_ebi_uda_output_obj;
2672 l_attributes_row_table ego_user_attr_row_table;
2673 l_attributes_data_table ego_user_attr_data_table;
2674 l_attributes_row_obj ego_user_attr_row_obj;
2675 l_transaction_type VARCHAR2(20);
2676 l_data_level VARCHAR2(25);
2677 l_revision_id NUMBER;
2678 l_output_status inv_ebi_output_status;
2679 l_is_item_level VARCHAR2(1) := fnd_api.g_false;
2680 l_is_item_revision_level VARCHAR2(1) := fnd_api.g_false;
2681 l_data_lvl VARCHAR2(25);
2682
2683 --Start of Bug 10378371
2684 CURSOR c_data_level(
2685 p_item_catalog_group_id NUMBER,
2686 p_attr_grp_id NUMBER) IS
2687
2688 SELECT data_level_int_name
2689 FROM ego_obj_attr_grp_assocs_v
2690 WHERE attr_group_id = p_attr_grp_id
2691 AND classification_code IN( SELECT item_catalog_group_id
2692 FROM mtl_item_catalog_groups_kfv
2693 CONNECT BY PRIOR parent_catalog_group_id = item_catalog_group_id
2694 START WITH item_catalog_group_id = p_item_catalog_group_id
2695 );
2696 -- End of Bug 10378371
2697
2698 BEGIN
2699 SAVEPOINT inv_ebi_item_uda_save_pnt;
2700 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.process_item_uda');
2701 INV_EBI_UTIL.debug_line('STEP 20: INVENTORY ITEM ID: '|| p_inventory_item_id || 'ORG ID: '||p_organization_id);
2702 l_uda_out := inv_ebi_uda_output_obj(NULL,NULL);
2703 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
2704 x_uda_output_obj := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,l_uda_out,NULL,NULL,NULL,NULL,NULL);
2705 INV_EBI_UTIL.debug_line('STEP 30: BEFORE CALLING INV_EBI_ITEM_HELPER.transform_uda');
2706 INV_EBI_UTIL.transform_uda (
2707 p_uda_input_obj => p_uda_input_obj
2708 ,x_attributes_row_table => l_attributes_row_table
2709 ,x_attributes_data_table => l_attributes_data_table
2710 ,x_return_status => x_uda_output_obj.output_status.return_status
2711 ,x_msg_count => x_uda_output_obj.output_status.msg_count
2712 ,x_msg_data => x_uda_output_obj.output_status.msg_data
2713 );
2714 INV_EBI_UTIL.debug_line('STEP 40: AFTER CALLING INV_EBI_ITEM_HELPER.transform_uda STATUS: '|| x_uda_output_obj.output_status.return_status);
2715 IF (x_uda_output_obj.output_status.return_status <> FND_API.g_ret_sts_success) THEN
2716 RAISE FND_API.g_exc_unexpected_error;
2717 END IF;
2718
2719 FOR i in 1..l_attributes_row_table.COUNT
2720 LOOP
2721 l_attributes_row_obj := l_attributes_row_table(i);
2722 IF(l_attributes_row_table(i).attr_group_id IS NOT NULL AND p_item_catalog_group_id IS NOT NULL ) THEN
2723
2724 -- Start of Bug 10378371
2725 l_is_item_level := fnd_api.g_false;
2726 l_is_item_revision_level := fnd_api.g_false;
2727 l_data_lvl := NULL;
2728
2729 FOR cur_data_level IN c_data_level(
2730 p_item_catalog_group_id,
2731 l_attributes_row_table(i).attr_group_id
2732 )
2733 LOOP
2734 INV_EBI_UTIL.debug_line('STEP 50: INSIDE Cursor Loop');
2735 l_data_level := cur_data_level.data_level_int_name;
2736 INV_EBI_UTIL.debug_line('STEP 60: l_data_level'|| l_data_level);
2737
2738 IF(l_data_level = INV_EBI_ITEM_PUB.G_DATA_LEVEL_ITEM) THEN
2739
2740 l_is_item_level := fnd_api.g_true;
2741 l_data_lvl := l_data_level;
2742 ELSIF
2743 -- Item Rev level is mutually exclusive with all other levels
2744 (l_data_level = INV_EBI_ITEM_PUB.G_DATA_LEVEL_ITEM_REV) THEN
2745 l_is_item_revision_level := fnd_api.g_true;
2746 l_data_lvl := l_data_level;
2747 END IF;
2748
2749 END LOOP;
2750 -- End of Bug 10378371
2751 END IF;
2752
2753 IF (l_data_lvl = INV_EBI_ITEM_PUB.g_data_level_item_rev ) THEN
2754
2755 IF p_revision_code IS NOT NULL AND p_revision_code <> fnd_api.g_miss_char THEN
2756 SELECT revision_id INTO l_revision_id
2757 FROM mtl_item_revisions
2758 WHERE inventory_item_id = p_inventory_item_id
2759 AND organization_id = p_organization_id
2760 AND revision = p_revision_code;
2761 ELSE
2762 FND_MESSAGE.set_name('INV','INV_EBI_ITEM_REVISION_CODE_NULL');
2763 FND_MSG_PUB.add;
2764 RAISE FND_API.g_exc_error;
2765 END IF;
2766 ELSE
2767 l_revision_id := l_attributes_row_obj.data_level_1;
2768 END IF;
2769 IF(l_attributes_row_table(i).transaction_type IS NULL) THEN
2770 l_transaction_type := ego_user_attrs_data_pvt.g_sync_mode;
2771 ELSE
2772 l_transaction_type := l_attributes_row_table(i).transaction_type;
2773 END IF;
2774 INV_EBI_UTIL.debug_line('STEP 70: BEFORE CALLING EGO_USER_ATTRS_DATA_PUB.build_attr_group_row_object');
2775
2776 -- Start of Bug 10378371
2777 -- Only Item Rev level and Item level UDAs are supported by the PIP
2778 IF(l_is_item_level = fnd_api.g_true OR l_is_item_revision_level = fnd_api.g_true ) THEN
2779 -- End of Bug 10378371
2780 l_attributes_row_obj := EGO_USER_ATTRS_DATA_PUB.build_attr_group_row_object(
2781 p_row_identifier => i
2782 ,p_attr_group_id => l_attributes_row_obj.attr_group_id
2783 ,p_attr_group_app_id => l_attributes_row_obj.attr_group_app_id
2784 ,p_attr_group_type => l_attributes_row_obj.attr_group_type
2785 ,p_attr_group_name => l_attributes_row_obj.attr_group_name
2786 ,p_data_level => l_data_lvl
2787 ,p_data_level_1 => l_revision_id
2788 ,p_data_level_2 => l_attributes_row_obj.data_level_2
2789 ,p_data_level_3 => l_attributes_row_obj.data_level_3
2790 ,p_data_level_4 => l_attributes_row_obj.data_level_4
2791 ,p_data_level_5 => l_attributes_row_obj.data_level_5
2792 ,p_transaction_type => l_transaction_type
2793 );
2794 l_attributes_row_table(i) := l_attributes_row_obj;
2795 END IF;
2796
2797 END LOOP;
2798 INV_EBI_UTIL.debug_line('STEP 80: BEFORE CALLING EGO_ITEM_PUB.process_user_attrs_for_item ');
2799 EGO_ITEM_PUB.process_user_attrs_for_item(
2800 p_api_version => p_api_version
2801 ,p_inventory_item_id => p_inventory_item_id
2802 ,p_organization_id => p_organization_id
2803 ,p_attributes_row_table => l_attributes_row_table
2804 ,p_attributes_data_table => l_attributes_data_table
2805 ,p_entity_id => p_uda_input_obj.entity_id
2806 ,p_entity_index => p_uda_input_obj.entity_index
2807 ,p_entity_code => p_uda_input_obj.entity_code
2808 ,p_debug_level => p_uda_input_obj.debug_level
2809 ,p_init_error_handler => p_uda_input_obj.init_error_handler
2810 ,p_write_to_concurrent_log => p_uda_input_obj.write_to_concurrent_log
2811 ,p_init_fnd_msg_list => p_uda_input_obj.init_fnd_msg_list
2812 ,p_log_errors => p_uda_input_obj.log_errors
2813 ,p_add_errors_to_fnd_stack => p_uda_input_obj.add_errors_to_fnd_stack
2814 ,p_commit => FND_API.g_false
2815 ,x_failed_row_id_list => x_uda_output_obj.uda_output.failed_row_id_list
2816 ,x_return_status => x_uda_output_obj.output_status.return_status
2817 ,x_errorcode => x_uda_output_obj.uda_output.errorcode
2818 ,x_msg_count => x_uda_output_obj.output_status.msg_count
2819 ,x_msg_data => x_uda_output_obj.output_status.msg_data
2820 );
2821 INV_EBI_UTIL.debug_line('STEP 90: AFETR CALLING EGO_ITEM_PUB.process_user_attrs_for_item STATUS: '||x_uda_output_obj.output_status.return_status);
2822 IF (x_uda_output_obj.output_status.return_status <> FND_API.g_ret_sts_success) THEN
2823 x_uda_output_obj.output_status.msg_data := x_uda_output_obj.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
2824 RAISE FND_API.g_exc_unexpected_error;
2825 END IF;
2826 IF FND_API.to_boolean(p_commit) THEN
2827 COMMIT;
2828 END IF;
2829 INV_EBI_UTIL.debug_line('STEP 100: END INSIDE INV_EBI_ITEM_HELPER.process_item_uda');
2830 EXCEPTION
2831 WHEN FND_API.g_exc_error THEN
2832 ROLLBACK TO inv_ebi_item_uda_save_pnt;
2833 IF c_data_level%ISOPEN THEN
2834 CLOSE c_data_level;
2835 END IF;
2836 x_uda_output_obj.output_status.return_status := FND_API.g_ret_sts_error;
2837 IF(x_uda_output_obj.output_status.msg_data IS NULL) THEN
2838 FND_MSG_PUB.count_and_get(
2839 p_encoded => FND_API.g_false
2840 ,p_count => x_uda_output_obj.output_status.msg_count
2841 ,p_data => x_uda_output_obj.output_status.msg_data
2842 );
2843 END IF;
2844 WHEN FND_API.g_exc_unexpected_error THEN
2845 ROLLBACK TO inv_ebi_item_uda_save_pnt;
2846 IF c_data_level%ISOPEN THEN
2847 CLOSE c_data_level;
2848 END IF;
2849 x_uda_output_obj.output_status.return_status := FND_API.g_ret_sts_unexp_error;
2850 IF(x_uda_output_obj.output_status.msg_data IS NULL) THEN
2851 FND_MSG_PUB.count_and_get(
2852 p_encoded => FND_API.g_false
2853 ,p_count => x_uda_output_obj.output_status.msg_count
2854 ,p_data => x_uda_output_obj.output_status.msg_data
2855 );
2856 END IF;
2857 WHEN OTHERS THEN
2858 ROLLBACK TO inv_ebi_item_uda_save_pnt;
2859 IF c_data_level%ISOPEN THEN
2860 CLOSE c_data_level;
2861 END IF;
2862 x_uda_output_obj.output_status.return_status := FND_API.g_ret_sts_unexp_error;
2863 IF (x_uda_output_obj.output_status.msg_data IS NOT NULL) THEN
2864 x_uda_output_obj.output_status.msg_data := x_uda_output_obj.output_status.msg_data ||' -> INV_EBI_ITEM_HELPER.process_item_uda ';
2865 ELSE
2866 x_uda_output_obj.output_status.msg_data := SQLERRM||' at INV_EBI_ITEM_HELPER.process_item_uda ';
2867 END IF;
2868 END process_item_uda;
2869 /************************************************************************************
2870 -- API name : process_org_id_assignments
2871 -- Type : Public
2872 -- Function :
2873 -- ************************************************************************************/
2874 PROCEDURE process_org_id_assignments(
2875 p_init_msg_list IN VARCHAR2
2876 ,p_commit IN VARCHAR2 := fnd_api.g_false
2877 ,p_inventory_item_id IN NUMBER
2878 ,p_item_number IN VARCHAR2
2879 ,p_org_id_tbl IN inv_ebi_org_tbl
2880 ,x_out OUT NOCOPY inv_ebi_item_output_obj
2881 )
2882 IS
2883 l_item_org_assignment_rec ego_item_pub.item_org_assignment_rec_type;
2884 l_item_org_assignment_tbl ego_item_pub.item_org_assignment_tbl_type;
2885 l_output_status inv_ebi_output_status;
2886 l_api_version NUMBER:=1.0;
2887 l_item_org_tbl_count NUMBER := 1;
2888 BEGIN
2889 SAVEPOINT inv_ebi_org_id_save_pnt;
2890 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.process_org_id_assignments ');
2891 INV_EBI_UTIL.debug_line('STEP 20: ITEM ID: '|| p_inventory_item_id || 'ITEM NUMBER: ' || p_item_number);
2892 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
2893 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL,NULL);
2894 IF p_org_id_tbl.COUNT > 0 THEN
2895 FOR i IN 1..p_org_id_tbl.COUNT LOOP
2896 l_item_org_assignment_rec.inventory_item_id := p_inventory_item_id;
2897 l_item_org_assignment_rec.item_number := p_item_number;
2898 l_item_org_assignment_rec.organization_id := p_org_id_tbl(i).org_id;
2899 l_item_org_assignment_tbl(i) := l_item_org_assignment_rec;
2900 INV_EBI_UTIL.debug_line('STEP 30: ORGANIZATION ID: '||p_org_id_tbl(i).org_id);
2901 END LOOP;
2902 INV_EBI_UTIL.debug_line('STEP 40: BEFORE CALLING EGO_ITEM_PUB.process_item_org_assignments ');
2903 EGO_ITEM_PUB.process_item_org_assignments(
2904 p_api_version => l_api_version --don't pass as of now
2905 ,p_init_msg_list => p_init_msg_list
2906 ,p_commit => FND_API.g_false
2907 ,p_item_org_assignment_tbl => l_item_org_assignment_tbl
2908 ,x_return_status => x_out.output_status.return_status
2909 ,x_msg_count => x_out.output_status.msg_count
2910 );
2911 INV_EBI_UTIL.debug_line('STEP 50: AFTER CALLING EGO_ITEM_PUB.process_item_org_assignments STATUS: '|| x_out.output_status.return_status);
2912 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
2913 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Name:' || p_item_number;
2914 RAISE FND_API.g_exc_unexpected_error;
2915 END IF;
2916 END IF;
2917 IF FND_API.to_boolean( p_commit ) THEN
2918 COMMIT;
2919 END IF;
2920 INV_EBI_UTIL.debug_line('STEP 60: END INSIDE INV_EBI_ITEM_HELPER.process_org_id_assignments ');
2921 EXCEPTION
2922 WHEN FND_API.g_exc_unexpected_error THEN
2923 ROLLBACK TO inv_ebi_org_id_save_pnt;
2924 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
2925 IF(x_out.output_status.msg_data IS NULL) THEN
2926 FND_MSG_PUB.count_and_get(
2927 p_encoded => FND_API.g_false
2928 ,p_count => x_out.output_status.msg_count
2929 ,p_data => x_out.output_status.msg_data
2930 );
2931 END IF;
2932 WHEN OTHERS THEN
2933 ROLLBACK TO inv_ebi_org_id_save_pnt;
2934 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
2935 IF (x_out.output_status.msg_data IS NOT NULL) THEN
2936 x_out.output_status.msg_data := x_out.output_status.msg_data||' -> INV_EBI_ITEM_HELPER.process_org_id_assignments ';
2937 ELSE
2938 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.process_org_id_assignments ';
2939 END IF;
2940 END process_org_id_assignments;
2941 /* Bug 9755814 - Added the below Functions for the Update Category issue */
2942 FUNCTION is_category_set_multi_assign (
2943 p_category_set_id IN NUMBER
2944 ) RETURN BOOLEAN
2945 IS
2946 l_multi_cat_assign_flag VARCHAR2(1);
2947 BEGIN
2948 l_multi_cat_assign_flag := 'N';
2949 SELECT mult_item_cat_assign_flag
2950 INTO l_multi_cat_assign_flag
2951 FROM mtl_category_sets_b
2952 WHERE category_set_id = p_category_set_id;
2953 IF (l_multi_cat_assign_flag = 'Y') THEN
2954 RETURN TRUE;
2955 ELSE
2956 RETURN FALSE;
2957 END IF;
2958 EXCEPTION
2959 WHEN OTHERS THEN
2960 RETURN FALSE;
2961 END is_category_set_multi_assign;
2962 /* API to be used only when multi assign is disabled for the category set */
2963 FUNCTION get_item_category (
2964 p_inventory_item_id IN NUMBER
2965 , p_organization_id IN NUMBER
2966 , p_category_set_id IN NUMBER
2967 ) RETURN NUMBER
2968 IS
2969 l_item_category NUMBER;
2970 BEGIN
2971 l_item_category := 0;
2972 SELECT NVL(category_id, 0)
2973 INTO l_item_category
2974 FROM mtl_item_categories
2975 WHERE inventory_item_id = p_inventory_item_id
2976 AND organization_id = p_organization_id
2977 AND category_set_id = p_category_set_id;
2978 RETURN l_item_category;
2979 EXCEPTION
2980 WHEN OTHERS THEN
2981 RETURN 0;
2982 END get_item_category;
2983
2984
2985 FUNCTION table_of_number_contains (
2986 p_table IN FND_TABLE_OF_NUMBER
2987 , p_value IN NUMBER
2988 ) RETURN BOOLEAN
2989 IS
2990 BEGIN
2991
2992 IF p_table IS NOT NULL THEN
2993 FOR i IN 1..p_table.COUNT LOOP
2994 IF p_table(i) = p_value THEN
2995 RETURN TRUE;
2996 END IF;
2997 END LOOP;
2998 END IF;
2999 RETURN FALSE;
3000 EXCEPTION
3001 WHEN OTHERS THEN
3002 RETURN FALSE;
3003 END table_of_number_contains;
3004
3005
3006
3007 /* Bug 9755814 - Added the below API to update the category of an item when a default category set is already been assigned through the Functional area (Inventory, Purchasing etc.,) */
3008 /* From 12.1.3 onwards (and 12.2), please call the EGO_ITEM_PUB.Process_Item_Cat_Assignment() API with UPDATE transaction.*/
3009
3010 /************************************************************************************
3011 -- API name : update_category_assignments
3012 -- Type : Public
3013 -- Function :
3014 -- ************************************************************************************/
3015
3016 PROCEDURE update_category_assignments(
3017 p_api_version IN NUMBER,
3018 p_init_msg_list IN VARCHAR2 ,
3019 p_commit IN VARCHAR2 ,
3020 p_category_id IN NUMBER,
3021 p_old_category_id IN NUMBER,
3022 p_category_set_id IN NUMBER,
3023 p_inventory_item_id IN NUMBER,
3024 p_organization_id IN NUMBER,
3025 x_return_status OUT NOCOPY VARCHAR2,
3026 x_errorcode OUT NOCOPY NUMBER,
3027 x_msg_count OUT NOCOPY NUMBER,
3028 x_msg_data OUT NOCOPY VARCHAR2
3029 )
3030
3031 IS
3032
3033 BEGIN
3034
3035 IF INV_EGO_REVISION_VALIDATE.check_data_security(
3036 p_function => 'EGO_EDIT_ITEM'
3037 ,p_object_name => 'EGO_ITEM'
3038 ,p_instance_pk1_value => p_inventory_item_id
3039 ,p_instance_pk2_value => p_organization_id
3040 ,P_User_Id => FND_GLOBAL.user_id) <> 'T'
3041 THEN
3042 FND_MESSAGE.set_name('INV','INV_IOI_ITEM_UPDATE_PRIV');
3043 FND_MSG_PUB.add;
3044 RAISE FND_API.g_EXC_ERROR;
3045 ELSE
3046 INV_ITEM_CATEGORY_PUB.Update_Category_Assignment(
3047 p_api_version => p_api_version
3048 ,p_init_msg_list => p_init_msg_list
3049 ,p_commit => p_commit
3050 ,p_category_id => p_category_id
3051 ,p_old_category_id => p_old_category_id
3052 ,p_category_set_id => p_category_set_id
3053 ,p_inventory_item_id => p_inventory_item_id
3054 ,p_organization_id => p_organization_id
3055 ,x_return_status =>x_return_status
3056 ,x_errorcode => x_errorcode
3057 ,x_msg_count => x_msg_count
3058 ,x_msg_data => x_msg_data
3059 );
3060 IF (x_return_status <> FND_API.g_ret_sts_success) THEN
3061 x_msg_data := x_msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3062 RAISE FND_API.g_exc_unexpected_error;
3063 END IF;
3064 END IF;
3065
3066 EXCEPTION
3067 WHEN FND_API.g_exc_error THEN
3068 x_return_status := FND_API.g_ret_sts_error;
3069 IF(x_msg_data IS NULL) THEN
3070 FND_MSG_PUB.count_and_get(
3071 p_encoded => FND_API.g_false
3072 ,p_count => x_msg_count
3073 ,p_data => x_msg_data
3074 );
3075 END IF;
3076 WHEN FND_API.g_exc_unexpected_error THEN
3077 x_return_status := FND_API.g_ret_sts_unexp_error;
3078 IF(x_msg_data IS NULL) THEN
3079 FND_MSG_PUB.count_and_get(
3080 p_encoded => FND_API.g_false
3081 ,p_count => x_msg_count
3082 ,p_data => x_msg_data
3083 );
3084 END IF;
3085 WHEN OTHERS THEN
3086 x_return_status := FND_API.g_ret_sts_unexp_error;
3087 IF (x_msg_data IS NOT NULL) THEN
3088 x_msg_data := x_msg_data ||' -> INV_EBI_ITEM_HELPER.update_category_assignments ';
3089 ELSE
3090 x_msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.update_category_assignments ';
3091 END IF;
3092 END update_category_assignments;
3093
3094
3095 /************************************************************************************
3096 -- API name : process_category_assignments
3097 -- Type : Public
3098 -- Function :
3099 --
3100 ************************************************************************************/
3101 /* Bug 9755814 - changes are done to this API for these scenarios when ever multi assign is enabled the category is added, */
3102 /* when multi asisgn is disabled updates the category and when multiple category assignments are coming in for the category set it fails */
3103 PROCEDURE process_category_assignments(
3104 p_api_version IN NUMBER DEFAULT 1.0
3105 ,p_init_msg_list IN VARCHAR2
3106 ,p_commit IN VARCHAR2 := fnd_api.g_false
3107 ,p_inventory_item_id IN NUMBER
3108 ,p_organization_id IN NUMBER
3109 ,p_category_id_tbl IN inv_ebi_category_obj_tbl_type
3110 ,x_out OUT NOCOPY inv_ebi_item_output_obj
3111 )
3112 IS
3113
3114 l_category_output inv_ebi_category_output_obj;
3115 l_output_status inv_ebi_output_status;
3116 l_category_id NUMBER;
3117 l_old_item_category NUMBER;
3118 l_no_multi_assign_cat_set_tbl FND_TABLE_OF_NUMBER;
3119 BEGIN
3120 SAVEPOINT inv_ebi_cat_id_save_pnt;
3121 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.process_category_assignments ');
3122 INV_EBI_UTIL.debug_line('STEP 20: ITEM ID: '|| p_inventory_item_id || 'ORG ID: '|| p_organization_id);
3123 l_category_output := inv_ebi_category_output_obj(NULL);
3124 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
3125 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,l_category_output,NULL,NULL,NULL,NULL);
3126 INV_EBI_UTIL.debug_line('STEP 30: BEFORE CALLING EGO_ITEM_PUB.process_item_cat_assignment');
3127 l_no_multi_assign_cat_set_tbl :=FND_TABLE_OF_NUMBER();
3128 FOR i IN 1..p_category_id_tbl.COUNT LOOP
3129 l_category_id := p_category_id_tbl(i).cat_id;
3130
3131 IF is_category_set_multi_assign(p_category_id_tbl(i).cat_set_id) THEN
3132 -- multi assign enabled - just add the category
3133 -- TODO - check what happens if same category comes again in CREATE mode
3134 EGO_ITEM_PUB.process_item_cat_assignment(
3135 p_api_version => p_api_version
3136 ,p_init_msg_list => p_init_msg_list
3137 ,p_commit => FND_API.g_false
3138 ,p_category_id => l_category_id
3139 ,p_category_set_id => p_category_id_tbl(i).cat_set_id
3140 ,p_inventory_item_id => p_inventory_item_id
3141 ,p_organization_id => p_organization_id
3142 ,p_transaction_type => EGO_ITEM_PUB.G_TTYPE_CREATE
3143 ,x_return_status => x_out.output_status.return_status
3144 ,x_errorcode => x_out.category_output.error_code
3145 ,x_msg_count => x_out.output_status.msg_count
3146 ,x_msg_data => x_out.output_status.msg_data
3147 );
3148 INV_EBI_UTIL.debug_line('STEP 50: AFTER CALLING EGO_ITEM_PUB.process_item_cat_assignment STATUS: '|| x_out.output_status.return_status);
3149 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
3150 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3151 RAISE FND_API.g_exc_unexpected_error;
3152 END IF;
3153 ELSE
3154 -- multi assign disabled
3155 l_old_item_category := get_item_category(p_inventory_item_id, p_organization_id, p_category_id_tbl(i).cat_set_id);
3156 IF l_old_item_category = 0 THEN
3157 -- no category exists for the category set for the item
3158 EGO_ITEM_PUB.process_item_cat_assignment(
3159 p_api_version => p_api_version
3160 ,p_init_msg_list => p_init_msg_list
3161 ,p_commit => FND_API.g_false
3162 ,p_category_id => l_category_id
3163 ,p_category_set_id => p_category_id_tbl(i).cat_set_id
3164 ,p_inventory_item_id => p_inventory_item_id
3165 ,p_organization_id => p_organization_id
3166 ,p_transaction_type => EGO_ITEM_PUB.G_TTYPE_CREATE
3167 ,x_return_status => x_out.output_status.return_status
3168 ,x_errorcode => x_out.category_output.error_code
3169 ,x_msg_count => x_out.output_status.msg_count
3170 ,x_msg_data => x_out.output_status.msg_data
3171 );
3172
3173 INV_EBI_UTIL.debug_line('STEP 50: AFTER CALLING EGO_ITEM_PUB.process_item_cat_assignment STATUS: '|| x_out.output_status.return_status);
3174 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
3175 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3176 RAISE FND_API.g_exc_unexpected_error;
3177 END IF;
3178 l_no_multi_assign_cat_set_tbl.EXTEND() ;
3179 l_no_multi_assign_cat_set_tbl(l_no_multi_assign_cat_set_tbl.COUNT) :=p_category_id_tbl(i).cat_set_id;
3180 ELSE
3181 -- one category exists for the category set for the item
3182 IF (l_no_multi_assign_cat_set_tbl IS NULL OR l_no_multi_assign_cat_set_tbl.COUNT =0)
3183 OR (NOT table_of_number_contains(l_no_multi_assign_cat_set_tbl, p_category_id_tbl(i).cat_set_id)) THEN
3184 -- Update the category
3185
3186 update_category_assignments(
3187 p_api_version => p_api_version
3188 ,p_init_msg_list => p_init_msg_list
3189 ,p_commit => FND_API.g_false
3190 ,p_category_id => l_category_id
3191 ,p_old_category_id => l_old_item_category
3192 ,p_category_set_id => p_category_id_tbl(i).cat_set_id
3193 ,p_inventory_item_id => p_inventory_item_id
3194 ,p_organization_id => p_organization_id
3195 ,x_return_status => x_out.output_status.return_status
3196 ,x_errorcode => x_out.category_output.error_code
3197 ,x_msg_count => x_out.output_status.msg_count
3198 ,x_msg_data => x_out.output_status.msg_data
3199 );
3200
3201 INV_EBI_UTIL.debug_line('STEP 50: AFTER CALLING EGO_ITEM_PUB.process_item_cat_assignment STATUS: '|| x_out.output_status.return_status);
3202 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
3203 RAISE FND_API.g_exc_unexpected_error;
3204 END IF;
3205 l_no_multi_assign_cat_set_tbl.EXTEND() ;
3206 l_no_multi_assign_cat_set_tbl(l_no_multi_assign_cat_set_tbl.COUNT) :=p_category_id_tbl(i).cat_set_id;
3207 ELSIF l_no_multi_assign_cat_set_tbl IS NOT NULL AND l_no_multi_assign_cat_set_tbl.COUNT > 0
3208 AND table_of_number_contains(l_no_multi_assign_cat_set_tbl, p_category_id_tbl(i).cat_set_id) THEN
3209 -- fail if multiple category assignments are coming in for the category set
3210 -- with multi assign disabled
3211 FND_MESSAGE.set_name('INV',' INV_ITEM_CAT_ASSIGN_NO_MULT');
3212 FND_MSG_PUB.add;
3213 RAISE FND_API.g_exc_unexpected_error;
3214 END IF;
3215 END IF;
3216 END IF;
3217 END LOOP;
3218 IF FND_API.to_boolean( p_commit ) THEN
3219 COMMIT;
3220 END IF;
3221 INV_EBI_UTIL.debug_line('STEP 60: END INSIDE INV_EBI_ITEM_HELPER.process_category_assignments ');
3222 EXCEPTION
3223 WHEN FND_API.g_exc_unexpected_error THEN
3224 ROLLBACK TO inv_ebi_cat_id_save_pnt;
3225 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
3226 IF(x_out.output_status.msg_data IS NULL) THEN
3227 FND_MSG_PUB.count_and_get(
3228 p_encoded => FND_API.g_false
3229 ,p_count => x_out.output_status.msg_count
3230 ,p_data => x_out.output_status.msg_data
3231 );
3232 END IF;
3233 WHEN OTHERS THEN
3234 ROLLBACK TO inv_ebi_cat_id_save_pnt;
3235 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
3236 IF (x_out.output_status.msg_data IS NOT NULL) THEN
3237 x_out.output_status.msg_data := x_out.output_status.msg_data ||' -> INV_EBI_ITEM_HELPER.process_category_assignments ';
3238 ELSE
3239 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.process_category_assignments ';
3240 END IF;
3241 END process_category_assignments;
3242 /************************************************************************************
3243 -- API name : process_part_num_association
3244 -- Type : Public
3245 -- Function :
3246 -- This API is used to
3247 --
3248 ************************************************************************************/
3249 PROCEDURE process_part_num_association(
3250 p_commit IN VARCHAR2 := fnd_api.g_false
3251 ,p_organization_id IN NUMBER
3252 ,p_inventory_item_id IN NUMBER
3253 ,p_mfg_part_obj IN inv_ebi_manufacturer_part_obj
3254 ,x_out OUT NOCOPY inv_ebi_item_output_obj
3255 )
3256 IS
3257 l_count NUMBER := 0;
3258 l_rowid VARCHAR2(100);
3259 l_manufacturer_id mtl_mfg_part_numbers.manufacturer_id%TYPE;
3260 l_mfg_part_num mtl_mfg_part_numbers.mfg_part_num%TYPE;
3261 l_inventory_item_id mtl_mfg_part_numbers.inventory_item_id%TYPE;
3262 l_organization_id mtl_mfg_part_numbers.organization_id%TYPE;
3263 l_description mtl_mfg_part_numbers.description%TYPE;
3264 l_attribute_category mtl_mfg_part_numbers.attribute_category%TYPE;
3265 l_attribute1 mtl_mfg_part_numbers.attribute1%TYPE;
3266 l_attribute2 mtl_mfg_part_numbers.attribute2%TYPE;
3267 l_attribute3 mtl_mfg_part_numbers.attribute3%TYPE;
3268 l_attribute4 mtl_mfg_part_numbers.attribute4%TYPE;
3269 l_attribute5 mtl_mfg_part_numbers.attribute5%TYPE;
3270 l_attribute6 mtl_mfg_part_numbers.attribute6%TYPE;
3271 l_attribute7 mtl_mfg_part_numbers.attribute7%TYPE;
3272 l_attribute8 mtl_mfg_part_numbers.attribute8%TYPE;
3273 l_attribute9 mtl_mfg_part_numbers.attribute9%TYPE;
3274 l_attribute10 mtl_mfg_part_numbers.attribute10%TYPE;
3275 l_attribute11 mtl_mfg_part_numbers.attribute11%TYPE;
3276 l_attribute12 mtl_mfg_part_numbers.attribute12%TYPE;
3277 l_attribute13 mtl_mfg_part_numbers.attribute13%TYPE;
3278 l_attribute14 mtl_mfg_part_numbers.attribute14%TYPE;
3279 l_attribute15 mtl_mfg_part_numbers.attribute15%TYPE;
3280 l_output_status inv_ebi_output_status;
3281 CURSOR c_mfg_part_num(
3282 p_manufacturer_id IN NUMBER
3283 ,p_mfg_part_num IN VARCHAR2
3284 ,P_organization_id IN NUMBER
3285 ,p_inventory_item_id IN NUMBER
3286 ) IS
3287 SELECT
3288 rowid
3289 ,manufacturer_id
3290 ,mfg_part_num
3291 ,inventory_item_id
3292 ,organization_id
3293 ,description
3294 ,attribute_category
3295 ,attribute1
3296 ,attribute2
3297 ,attribute3
3298 ,attribute4
3299 ,attribute5
3300 ,attribute6
3301 ,attribute7
3302 ,attribute8
3303 ,attribute9
3304 ,attribute10
3305 ,attribute11
3306 ,attribute12
3307 ,attribute13
3308 ,attribute14
3309 ,attribute15
3310 FROM mtl_mfg_part_numbers
3311 WHERE manufacturer_id = p_manufacturer_id
3312 AND mfg_part_num = p_mfg_part_num
3313 AND organization_id = p_organization_id
3314 AND inventory_item_id = p_inventory_item_id;
3315 BEGIN
3316 SAVEPOINT inv_ebi_part_num_save_pnt;
3317 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.process_part_num_association ');
3318 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
3319 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL,NULL);
3320 IF p_mfg_part_obj.mfg_part_num IS NOT NULL THEN
3321 INV_EBI_UTIL.debug_line('STEP 20: ORGANIZATION ID: '|| p_organization_id || 'MFG PART NUMBER: '|| p_mfg_part_obj.mfg_part_num ||
3322 ' MANUFACTURER ID : '|| p_mfg_part_obj.manufacturer_id);
3323 OPEN c_mfg_part_num(
3324 p_manufacturer_id => p_mfg_part_obj.manufacturer_id
3325 ,p_mfg_part_num => p_mfg_part_obj.mfg_part_num
3326 ,P_organization_id => p_organization_id
3327 ,p_inventory_item_id => p_inventory_item_id
3328 );
3329 FETCH c_mfg_part_num INTO
3330 l_rowid
3331 ,l_manufacturer_id
3332 ,l_mfg_part_num
3333 ,l_inventory_item_id
3334 ,l_organization_id
3335 ,l_description
3336 ,l_attribute_category
3337 ,l_attribute1
3338 ,l_attribute2
3339 ,l_attribute3
3340 ,l_attribute4
3341 ,l_attribute5
3342 ,l_attribute6
3343 ,l_attribute7
3344 ,l_attribute8
3345 ,l_attribute9
3346 ,l_attribute10
3347 ,l_attribute11
3348 ,l_attribute12
3349 ,l_attribute13
3350 ,l_attribute14
3351 ,l_attribute15 ;
3352 IF (p_inventory_item_id <> FND_API.G_MISS_NUM ) THEN
3353 l_inventory_item_id := p_inventory_item_id;
3354 END IF;
3355 IF (p_organization_id <> FND_API.G_MISS_NUM ) THEN
3356 l_organization_id := p_organization_id;
3357 END IF;
3358 IF (p_mfg_part_obj.description <> FND_API.G_MISS_CHAR) THEN
3359 l_description := p_mfg_part_obj.description;
3360 END IF;
3361 IF (p_mfg_part_obj.attribute_category <> FND_API.G_MISS_CHAR) THEN
3362 l_attribute_category := p_mfg_part_obj.attribute_category;
3363 END IF;
3364 IF (p_mfg_part_obj.attribute1 <> FND_API.G_MISS_CHAR) THEN
3365 l_attribute1 := p_mfg_part_obj.attribute1;
3366 END IF;
3367 IF (p_mfg_part_obj.attribute2 <> FND_API.G_MISS_CHAR) THEN
3368 l_attribute2 := p_mfg_part_obj.attribute2;
3369 END IF;
3370 IF (p_mfg_part_obj.attribute3 <> FND_API.G_MISS_CHAR ) THEN
3371 l_attribute3 := p_mfg_part_obj.attribute3;
3372 END IF;
3373 IF (p_mfg_part_obj.attribute4 <> FND_API.G_MISS_CHAR) THEN
3374 l_attribute4 := p_mfg_part_obj.attribute4;
3375 END IF;
3376 IF (p_mfg_part_obj.attribute5 <> FND_API.G_MISS_CHAR) THEN
3377 l_attribute5 := p_mfg_part_obj.attribute5;
3378 END IF;
3379 IF (p_mfg_part_obj.attribute6 <> FND_API.G_MISS_CHAR) THEN
3380 l_attribute6 := p_mfg_part_obj.attribute6;
3381 END IF;
3382 IF (p_mfg_part_obj.attribute7 <> FND_API.G_MISS_CHAR) THEN
3383 l_attribute7 := p_mfg_part_obj.attribute7;
3384 END IF;
3385 IF (p_mfg_part_obj.attribute8 <> FND_API.G_MISS_CHAR) THEN
3386 l_attribute8 := p_mfg_part_obj.attribute8;
3387 END IF;
3388 IF (p_mfg_part_obj.attribute9 <> FND_API.G_MISS_CHAR) THEN
3389 l_attribute9 := p_mfg_part_obj.attribute9;
3390 END IF;
3391 IF (p_mfg_part_obj.attribute10 <> FND_API.G_MISS_CHAR) THEN
3392 l_attribute10 := p_mfg_part_obj.attribute10;
3393 END IF;
3394 IF (p_mfg_part_obj.attribute11 <> FND_API.G_MISS_CHAR) THEN
3395 l_attribute11 := p_mfg_part_obj.attribute11;
3396 END IF;
3397 IF (p_mfg_part_obj.attribute12 <> FND_API.G_MISS_CHAR ) THEN
3398 l_attribute12 := p_mfg_part_obj.attribute12;
3399 END IF;
3400 IF (p_mfg_part_obj.attribute13 <> FND_API.G_MISS_CHAR) THEN
3401 l_attribute13 := p_mfg_part_obj.attribute13;
3402 END IF;
3403 IF (p_mfg_part_obj.attribute14 <> FND_API.G_MISS_CHAR) THEN
3404 l_attribute14 := p_mfg_part_obj.attribute14;
3405 END IF;
3406 IF (p_mfg_part_obj.attribute15 <> FND_API.G_MISS_CHAR) THEN
3407 l_attribute15 := p_mfg_part_obj.attribute15;
3408 END IF;
3409
3410 IF UPPER(p_mfg_part_obj.transaction_type) = ENG_GLOBALS.G_OPR_CREATE THEN
3411 INV_EBI_UTIL.debug_line('STEP 30: BEFORE CALLING MTL_MFG_PART_NUMBERS_PKG.insert_row ');
3412 MTL_MFG_PART_NUMBERS_PKG.insert_row(
3413 x_rowid => l_rowid
3414 ,x_manufacturer_id => p_mfg_part_obj.manufacturer_id
3415 ,x_mfg_part_num => p_mfg_part_obj.mfg_part_num
3416 ,x_inventory_item_id => p_inventory_item_id
3417 ,x_last_update_date => SYSDATE
3418 ,x_last_updated_by => fnd_global.user_id
3419 ,x_creation_date => SYSDATE
3420 ,x_created_by => fnd_global.user_id
3421 ,x_last_update_login => fnd_global.login_id
3422 ,x_organization_id => p_organization_id
3423 ,x_description => p_mfg_part_obj.description
3424 ,x_attribute_category => p_mfg_part_obj.attribute_category
3425 ,x_attribute1 => p_mfg_part_obj.attribute1
3426 ,x_attribute2 => p_mfg_part_obj.attribute2
3427 ,x_attribute3 => p_mfg_part_obj.attribute3
3428 ,x_attribute4 => p_mfg_part_obj.attribute4
3429 ,x_attribute5 => p_mfg_part_obj.attribute5
3430 ,x_attribute6 => p_mfg_part_obj.attribute6
3431 ,x_attribute7 => p_mfg_part_obj.attribute7
3432 ,x_attribute8 => p_mfg_part_obj.attribute8
3433 ,x_attribute9 => p_mfg_part_obj.attribute9
3434 ,x_attribute10 => p_mfg_part_obj.attribute10
3435 ,x_attribute11 => p_mfg_part_obj.attribute11
3436 ,x_attribute12 => p_mfg_part_obj.attribute12
3437 ,x_attribute13 => p_mfg_part_obj.attribute13
3438 ,x_attribute14 => p_mfg_part_obj.attribute14
3439 ,x_attribute15 => p_mfg_part_obj.attribute15
3440 );
3441 INV_EBI_UTIL.debug_line('STEP 40: AFTER CALLING MTL_MFG_PART_NUMBERS_PKG.insert_row ');
3442 ELSIF UPPER(p_mfg_part_obj.transaction_type) = ENG_GLOBALS.G_OPR_UPDATE THEN
3443 INV_EBI_UTIL.debug_line('STEP 50: BEFORE CALLING MTL_MFG_PART_NUMBERS_PKG.update_row ');
3444 MTL_MFG_PART_NUMBERS_PKG.update_row(
3445 x_rowid => l_rowid
3446 ,x_manufacturer_id => l_manufacturer_id
3447 ,x_mfg_part_num => l_mfg_part_num
3448 ,x_inventory_item_id => l_inventory_item_id
3449 ,x_last_update_date => SYSDATE
3450 ,x_last_updated_by => fnd_global.user_id
3451 ,x_last_update_login => fnd_global.login_id
3452 ,x_organization_id => l_organization_id
3453 ,x_description => l_description
3454 ,x_attribute_category => l_attribute_category
3455 ,x_attribute1 => l_attribute1
3456 ,x_attribute2 => l_attribute2
3457 ,x_attribute3 => l_attribute3
3458 ,x_attribute4 => l_attribute4
3459 ,x_attribute5 => l_attribute5
3460 ,x_attribute6 => l_attribute6
3461 ,x_attribute7 => l_attribute7
3462 ,x_attribute8 => l_attribute8
3463 ,x_attribute9 => l_attribute9
3464 ,x_attribute10 => l_attribute10
3465 ,x_attribute11 => l_attribute11
3466 ,x_attribute12 => l_attribute12
3467 ,x_attribute13 => l_attribute13
3468 ,x_attribute14 => l_attribute14
3469 ,x_attribute15 => l_attribute15
3470 );
3471 INV_EBI_UTIL.debug_line('STEP 60: AFTER CALLING MTL_MFG_PART_NUMBERS_PKG.update_row ');
3472 ELSIF UPPER(p_mfg_part_obj.transaction_type) = ENG_GLOBALS.G_OPR_DELETE THEN
3473 INV_EBI_UTIL.debug_line('STEP 70: BEFORE CALLING MTL_MFG_PART_NUMBERS_PKG.delete_row ');
3474 MTL_MFG_PART_NUMBERS_PKG.Delete_Row(l_Rowid);
3475 INV_EBI_UTIL.debug_line('STEP 80: AFTER CALLING MTL_MFG_PART_NUMBERS_PKG.delete_row ');
3476 ELSIF (p_mfg_part_obj.transaction_type IS NULL) THEN
3477 IF (c_mfg_part_num%NOTFOUND) THEN
3478 INV_EBI_UTIL.debug_line('STEP 90: BEFORE CALLING Sync Mode MTL_MFG_PART_NUMBERS_PKG.insert_row ');
3479 MTL_MFG_PART_NUMBERS_PKG.insert_row(
3480 x_rowid => l_rowid
3481 ,x_manufacturer_id => p_mfg_part_obj.manufacturer_id
3482 ,x_mfg_part_num => p_mfg_part_obj.mfg_part_num
3483 ,x_inventory_item_id => p_inventory_item_id
3484 ,x_last_update_date => SYSDATE
3485 ,x_last_updated_by => fnd_global.user_id
3486 ,x_creation_date => SYSDATE
3487 ,x_created_by => fnd_global.user_id
3488 ,x_last_update_login => fnd_global.login_id
3489 ,x_organization_id => p_organization_id
3490 ,x_description => p_mfg_part_obj.description
3491 ,x_attribute_category => p_mfg_part_obj.attribute_category
3492 ,x_attribute1 => p_mfg_part_obj.attribute1
3493 ,x_attribute2 => p_mfg_part_obj.attribute2
3494 ,x_attribute3 => p_mfg_part_obj.attribute3
3495 ,x_attribute4 => p_mfg_part_obj.attribute4
3496 ,x_attribute5 => p_mfg_part_obj.attribute5
3497 ,x_attribute6 => p_mfg_part_obj.attribute6
3498 ,x_attribute7 => p_mfg_part_obj.attribute7
3499 ,x_attribute8 => p_mfg_part_obj.attribute8
3500 ,x_attribute9 => p_mfg_part_obj.attribute9
3501 ,x_attribute10 => p_mfg_part_obj.attribute10
3502 ,x_attribute11 => p_mfg_part_obj.attribute11
3503 ,x_attribute12 => p_mfg_part_obj.attribute12
3504 ,x_attribute13 => p_mfg_part_obj.attribute13
3505 ,x_attribute14 => p_mfg_part_obj.attribute14
3506 ,x_attribute15 => p_mfg_part_obj.attribute15
3507 );
3508 INV_EBI_UTIL.debug_line('STEP 100: AFTER CALLING Sync Mode MTL_MFG_PART_NUMBERS_PKG.insert_row ');
3509 ELSE
3510 INV_EBI_UTIL.debug_line('STEP 110: BEFORE CALLING Sync Mode MTL_MFG_PART_NUMBERS_PKG.update_row ');
3511 MTL_MFG_PART_NUMBERS_PKG.update_row(
3512 x_rowid => l_rowid
3513 ,x_manufacturer_id => l_manufacturer_id
3514 ,x_mfg_part_num => l_mfg_part_num
3515 ,x_inventory_item_id => l_inventory_item_id
3516 ,x_last_update_date => SYSDATE
3517 ,x_last_updated_by => fnd_global.user_id
3518 ,x_last_update_login => fnd_global.login_id
3519 ,x_organization_id => l_organization_id
3520 ,x_description => l_description
3521 ,x_attribute_category => l_attribute_category
3522 ,x_attribute1 => l_attribute1
3523 ,x_attribute2 => l_attribute2
3524 ,x_attribute3 => l_attribute3
3525 ,x_attribute4 => l_attribute4
3526 ,x_attribute5 => l_attribute5
3527 ,x_attribute6 => l_attribute6
3528 ,x_attribute7 => l_attribute7
3529 ,x_attribute8 => l_attribute8
3530 ,x_attribute9 => l_attribute9
3531 ,x_attribute10 => l_attribute10
3532 ,x_attribute11 => l_attribute11
3533 ,x_attribute12 => l_attribute12
3534 ,x_attribute13 => l_attribute13
3535 ,x_attribute14 => l_attribute14
3536 ,x_attribute15 => l_attribute15
3537 );
3538 INV_EBI_UTIL.debug_line('STEP 120: AFTER CALLING Sync Mode MTL_MFG_PART_NUMBERS_PKG.update_row ');
3539 END IF;
3540 END IF;
3541 CLOSE c_mfg_part_num;
3542 ELSE
3543 FND_MESSAGE.set_name('INV_EBI','INV_EBI_PART_NUM_NULL');
3544 FND_MESSAGE.set_token('PART_NUM', p_mfg_part_obj.mfg_part_num);
3545 FND_MSG_PUB.add;
3546 RAISE FND_API.g_exc_error;
3547 END IF;
3548 IF FND_API.to_boolean( p_commit ) THEN
3549 COMMIT;
3550 END IF;
3551 INV_EBI_UTIL.debug_line('STEP 130: END INSIDE INV_EBI_ITEM_HELPER.process_part_num_association STATUS: '|| x_out.output_status.return_status);
3552 EXCEPTION
3553 WHEN FND_API.g_exc_error THEN
3554 ROLLBACK TO inv_ebi_part_num_save_pnt;
3555 x_out.output_status.return_status := FND_API.g_ret_sts_error;
3556 IF(x_out.output_status.msg_data IS NULL) THEN
3557 FND_MSG_PUB.count_and_get(
3558 p_encoded => FND_API.g_false
3559 ,p_count => x_out.output_status.msg_count
3560 ,p_data => x_out.output_status.msg_data
3561 );
3562 END IF;
3563 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3564 WHEN FND_API.g_exc_unexpected_error THEN
3565 ROLLBACK TO inv_ebi_part_num_save_pnt;
3566 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
3567 IF(x_out.output_status.msg_data IS NULL) THEN
3568 FND_MSG_PUB.count_and_get(
3569 p_encoded => FND_API.g_false
3570 ,p_count => x_out.output_status.msg_count
3571 ,p_data => x_out.output_status.msg_data
3572 );
3573 END IF;
3574 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3575 WHEN OTHERS THEN
3576 ROLLBACK TO inv_ebi_part_num_save_pnt;
3577 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
3578 IF (x_out.output_status.msg_data IS NOT NULL) THEN
3579 x_out.output_status.msg_data := x_out.output_status.msg_data||' -> INV_EBI_ITEM_HELPER.process_part_num_association ';
3580 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3581 ELSE
3582 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.process_part_num_association ';
3583 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Inventory Item Id:' || p_inventory_item_id || ' -> Org Id: ' || p_organization_id;
3584 END IF;
3585 END process_part_num_association;
3586
3587 /************************************************************************************
3588 -- API name : process_update_item_lifecycle
3589 -- Type : Public
3590 -- PROCEDURE : This API updates item lifecycle/phase/status .
3591 -- This is invoked in Create ECO flow when Revised item is sent in update mode.
3592 -- Normally in Create ECO flow item updation will be done after Change Order creation,
3593 -- but PIM does not allow updation of lifecycle when there are pending
3594 -- Change orders on the item,and if the item has BOM,lifecycle phase and status
3595 -- cannot be updated,so we use this api to update lifecycle/phase/status by invoking this api
3596 -- before change order creation.
3597 Bug:10416391
3598 ************************************************************************************/
3599
3600 PROCEDURE process_update_item_lifecycle(
3601 p_commit IN VARCHAR2 := FND_API.g_false
3602 ,p_update_item_tbl IN inv_ebi_item_attr_tbl
3603 ,x_out OUT NOCOPY inv_ebi_item_output_obj
3604 ) IS
3605
3606 l_output_status inv_ebi_output_status;
3607 l_inventory_item_id NUMBER;
3608 l_organization_id NUMBER;
3609 l_item_tbl EGO_ITEM_PUB.ITEM_TBL_TYPE;
3610 x_item_tbl EGO_ITEM_PUB.ITEM_TBL_TYPE;
3611 l_role_grant_tbl EGO_ITEM_PUB.ROLE_GRANT_TBL_TYPE := EGO_ITEM_PUB.G_MISS_ROLE_GRANT_TBL;
3612 x_return_status VARCHAR2(3) := fnd_api.g_ret_sts_success;
3613 x_msg_count number;
3614
3615 CURSOR c_get_item_curr_data(
3616 cp_item_id IN NUMBER,
3617 cp_org_id IN NUMBER
3618 ) IS
3619
3620 SELECT lifecycle_id,
3621 current_phase_id,
3622 inventory_item_status_code,
3623 item_catalog_group_id
3624 FROM mtl_system_items_b
3625 WHERE inventory_item_id = cp_item_id
3626 AND organization_id = cp_org_id;
3627
3628 CURSOR c_get_phase_seq (cp_phase_id IN NUMBER ) IS
3629 SELECT display_sequence
3630 FROM pa_proj_element_versions
3631 WHERE proj_element_id = cp_phase_id;
3632
3633 CURSOR c_get_next_phase (cp_lifecycle_id IN NUMBER
3634 ,cp_phase_id IN NUMBER ) IS
3635 SELECT p1.proj_element_id, p1.display_sequence
3636 FROM PA_PROJ_ELEMENT_VERSIONS P1, PA_PROJ_ELEMENT_VERSIONS P2
3637 WHERE P1.PARENT_STRUCTURE_VERSION_ID = P2.ELEMENT_VERSION_ID
3638 AND P2.PROJ_ELEMENT_ID = cp_lifecycle_id
3639 AND P1.display_sequence >
3640 (SELECT P3.display_sequence
3641 FROM PA_PROJ_ELEMENT_VERSIONS P3
3642 WHERE P3.PROJ_ELEMENT_ID = cp_phase_id
3643 AND P3.PARENT_STRUCTURE_VERSION_ID = P1.parent_structure_version_id
3644 )
3645 ORDER BY p1.DISPLAY_SEQUENCE ASC;
3646
3647 CURSOR c_get_priv_phase (cp_lifecycle_id IN NUMBER
3648 ,cp_phase_id IN NUMBER ) IS
3649 SELECT p1.proj_element_id, p1.display_sequence
3650 FROM PA_PROJ_ELEMENT_VERSIONS P1, PA_PROJ_ELEMENT_VERSIONS P2
3651 WHERE P1.PARENT_STRUCTURE_VERSION_ID = P2.ELEMENT_VERSION_ID
3652 AND P2.PROJ_ELEMENT_ID = cp_lifecycle_id
3653 AND P1.display_sequence <
3654 (SELECT P3.display_sequence
3655 FROM PA_PROJ_ELEMENT_VERSIONS P3
3656 WHERE P3.PROJ_ELEMENT_ID = cp_phase_id
3657 AND P3.PARENT_STRUCTURE_VERSION_ID = P1.parent_structure_version_id
3658 )
3659 ORDER BY p1.DISPLAY_SEQUENCE DESC;
3660
3661 l_curr_cc_id NUMBER;
3662 l_curr_lifecycle_id NUMBER;
3663 l_curr_phase_id NUMBER;
3664 l_curr_status_code MTL_SYSTEM_ITEMS_B.inventory_item_status_code%TYPE;
3665 l_new_lifecycle_id NUMBER;
3666 l_new_phase_id NUMBER;
3667 l_new_cc_id NUMBER;
3668 l_new_status_code MTL_SYSTEM_ITEMS_B.inventory_item_status_code%TYPE;
3669 l_count NUMBER := 0;
3670 l_new_phase_seq NUMBER;
3671 l_curr_phase_seq NUMBER;
3672 l_allow_lcp_skip VARCHAR2(1) := NULL;
3673
3674 BEGIN
3675
3676 SAVEPOINT inv_ebi_proc_upd_item_lc_pnt;
3677
3678 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.process_update_item_lifecycle');
3679 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
3680 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL,NULL);
3681
3682 IF(p_update_item_tbl IS NOT NULL AND p_update_item_tbl.COUNT > 0) THEN
3683
3684 FOR i IN 1..p_update_item_tbl.COUNT LOOP
3685
3686 IF(c_get_item_curr_data % ISOPEN) THEN
3687 CLOSE c_get_item_curr_data;
3688 END IF;
3689
3690 OPEN c_get_item_curr_data(
3691 cp_item_id => p_update_item_tbl(i).item_obj.main_obj_type.inventory_item_id
3692 ,cp_org_id => p_update_item_tbl(i).item_obj.main_obj_type.organization_id
3693 );
3694 FETCH c_get_item_curr_data INTO
3695 l_curr_lifecycle_id,
3696 l_curr_phase_id,
3697 l_curr_status_code,
3698 l_curr_cc_id;
3699
3700 CLOSE c_get_item_curr_data;
3701
3702 l_new_lifecycle_id := p_update_item_tbl(i).item_obj.main_obj_type.lifecycle_id ;
3703 l_new_phase_id := p_update_item_tbl(i).item_obj.main_obj_type.current_phase_id;
3704 l_new_status_code := p_update_item_tbl(i).item_obj.main_obj_type.inventory_item_status_code;
3705
3706
3707 INV_EBI_UTIL.debug_line('STEP 20: l_new_lifecycle_id ' || l_new_lifecycle_id);
3708 INV_EBI_UTIL.debug_line('STEP 30: l_new_phase_id ' || l_new_phase_id);
3709 INV_EBI_UTIL.debug_line('STEP 40: l_new_status_code ' || l_new_status_code);
3710 INV_EBI_UTIL.debug_line('STEP 50: l_curr_lifecycle_id ' || l_curr_lifecycle_id);
3711 INV_EBI_UTIL.debug_line('STEP 60: l_curr_phase_id ' || l_curr_phase_id);
3712 INV_EBI_UTIL.debug_line('STEP 70: l_curr_status_code ' || l_curr_status_code);
3713
3714 IF(l_new_lifecycle_id IS NOT NULL AND
3715 l_new_lifecycle_id <> fnd_api.g_miss_num AND
3716 (l_new_phase_id IS NULL OR l_new_phase_id = fnd_api.g_miss_num)) THEN
3717
3718 IF(nvl(l_curr_lifecycle_id,fnd_api.g_miss_num) <> l_new_lifecycle_id) THEN
3719 l_new_phase_id := Get_Default_Lifecycle_Phase(
3720 p_lifecycle_id => l_new_lifecycle_id
3721 );
3722 ELSIF(l_curr_phase_id IS NOT NULL) THEN
3723 --If curr lifecycle id and incmong lifecycle id are same
3724 --then if current phase id is not null and if incoming phase is null populate curr phase id to
3725 --incoming value.
3726 l_new_phase_id := l_curr_phase_id;
3727 END IF;
3728 END IF;
3729
3730 IF(l_new_lifecycle_id = l_curr_lifecycle_id)
3731 THEN
3732 l_new_lifecycle_id := fnd_api.g_miss_num;
3733
3734 --Start of bug 11066016
3735 /*To skip lifecycle phases we need to invoke EGO_ITEM_PUB.Process_item_phase_and_status
3736 in loop till desired phase is reached.This api promotes or demotes lifecycle phases as per the
3737 Transaction type being passed*/
3738
3739 l_allow_lcp_skip := INV_EBI_UTIL.get_config_param_value(
3740 p_config_tbl => p_update_item_tbl(i).item_obj.name_value_tbl
3741 ,p_config_param_name => G_ALLOW_LIFECYCLE_PHASE_SKIP
3742 );
3743
3744 IF (l_allow_lcp_skip IS NULL OR l_allow_lcp_skip = fnd_api.g_miss_char) THEN
3745
3746 l_allow_lcp_skip := INV_EBI_FLAGS.G_ALLOW_LIFECYCLE_PHASE_SKIP;
3747
3748 END IF;
3749 IF(l_allow_lcp_skip = FND_API.G_TRUE) THEN
3750
3751 IF(l_new_phase_id <> l_curr_phase_id) THEN
3752
3753 INV_EBI_UTIL.debug_line('STEP 80: Current Phase and Incoming Phase is different');
3754 OPEN c_get_phase_seq(cp_phase_id => l_curr_phase_id);
3755 FETCH c_get_phase_seq INTO l_curr_phase_seq;
3756
3757 IF c_get_phase_seq%NOTFOUND THEN
3758 l_curr_phase_seq := -1;
3759 END IF;
3760
3761 CLOSE c_get_phase_seq;
3762 INV_EBI_UTIL.debug_line('STEP 90: CURRENT PHASE SEQUENCE IS ' || l_curr_phase_seq);
3763 OPEN c_get_phase_seq(cp_phase_id => l_new_phase_id);
3764 FETCH c_get_phase_seq INTO l_new_phase_seq;
3765
3766 IF c_get_phase_seq%NOTFOUND THEN
3767 l_new_phase_seq := -1;
3768 END IF;
3769
3770 CLOSE c_get_phase_seq;
3771 INV_EBI_UTIL.debug_line('STEP 100: INCOMING PHASE SEQUENCE IS ' || l_new_phase_seq);
3772
3773 IF l_curr_phase_seq < l_new_phase_seq THEN
3774 INV_EBI_UTIL.debug_line('STEP 110: CURRENT PHASE SEQUENCE IS LESS THAN INCOMING PHASE SEQUENCE');
3775 FOR cur_next_phase IN c_get_next_phase(
3776 cp_lifecycle_id => l_curr_lifecycle_id,
3777 cp_phase_id => l_curr_phase_id
3778 )
3779 LOOP
3780 IF(cur_next_phase.display_sequence < l_new_phase_seq) THEN
3781 INV_EBI_UTIL.debug_line('STEP 120: START CALLING EGO_ITEM_PUB.PROCESS_ITEM_PHASE_AND_STATUS FOR PROMOTING PHASE ');
3782 EGO_ITEM_PUB.Process_item_phase_and_status(
3783 p_api_version => 1.0
3784 ,p_commit => fnd_api.g_false
3785 ,p_init_msg_list => fnd_api.g_true
3786 ,p_transaction_type => EGO_ITEM_PUB.G_TTYPE_PROMOTE
3787 ,p_inventory_item_id => p_update_item_tbl(i).item_obj.main_obj_type.inventory_item_id
3788 ,p_item_number => p_update_item_tbl(i).item_obj.main_obj_type.item_number
3789 ,p_organization_id => p_update_item_tbl(i).item_obj.main_obj_type.organization_id
3790 ,p_organization_code => p_update_item_tbl(i).item_obj.main_obj_type.organization_code
3791 ,p_revision_id => NULL
3792 ,p_revision => NULL
3793 ,p_implement_changes => fnd_api.g_true
3794 ,p_status => NULL
3795 ,p_effective_date => sysdate
3796 ,p_lifecycle_id => l_curr_lifecycle_id
3797 ,p_phase_id => cur_next_phase.proj_element_id
3798 ,p_new_effective_date => NULL
3799 ,x_return_status => x_out.output_status.return_status
3800 ,x_msg_count => x_out.output_status.msg_count
3801 ,x_msg_data => x_out.output_status.msg_data
3802 ) ;
3803 INV_EBI_UTIL.debug_line('STEP 130: END CALLING EGO_ITEM_PUB.PROCESS_ITEM_PHASE_AND_STATUS status is '|| x_out.output_status.return_status );
3804 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
3805 x_out.item_number := p_update_item_tbl(i).item_obj.main_obj_type.item_number;
3806 x_out.organization_code := p_update_item_tbl(i).item_obj.main_obj_type.organization_code;
3807 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || p_update_item_tbl(i).item_obj.main_obj_type.item_number || ' -> Org Code: ' || p_update_item_tbl(i).item_obj.main_obj_type.organization_code;
3808 RAISE FND_API.g_exc_unexpected_error;
3809 END IF;
3810
3811 END IF;
3812 END LOOP;
3813
3814 ELSIF l_curr_phase_seq > l_new_phase_seq THEN
3815 INV_EBI_UTIL.debug_line('STEP 140: INCOMING PHASE SEQUENCE IS LESS THAN CURRENT PHASE SEQUENCE');
3816 FOR cur_priv_phase IN c_get_priv_phase(
3817 cp_lifecycle_id => l_curr_lifecycle_id,
3818 cp_phase_id => l_curr_phase_id
3819 )
3820 LOOP
3821
3822 IF(cur_priv_phase.display_sequence > l_new_phase_seq) THEN
3823 INV_EBI_UTIL.debug_line('STEP 150: START CALLING EGO_ITEM_PUB.PROCESS_ITEM_PHASE_AND_STATUS FOR DEMOTING PHASE ');
3824 EGO_ITEM_PUB.Process_item_phase_and_status(
3825 p_api_version => 1.0
3826 ,p_commit => fnd_api.g_false
3827 ,p_init_msg_list => fnd_api.g_true
3828 ,p_transaction_type => EGO_ITEM_PUB.G_TTYPE_DEMOTE
3829 ,p_inventory_item_id => p_update_item_tbl(i).item_obj.main_obj_type.inventory_item_id
3830 ,p_item_number => p_update_item_tbl(i).item_obj.main_obj_type.item_number
3831 ,p_organization_id => p_update_item_tbl(i).item_obj.main_obj_type.organization_id
3832 ,p_organization_code => p_update_item_tbl(i).item_obj.main_obj_type.organization_code
3833 ,p_revision_id => NULL
3834 ,p_revision => NULL
3835 ,p_implement_changes => fnd_api.g_true
3836 ,p_status => NULL
3837 ,p_effective_date => sysdate
3838 ,p_lifecycle_id => l_curr_lifecycle_id
3839 ,p_phase_id => cur_priv_phase.proj_element_id
3840 ,p_new_effective_date => NULL
3841 ,x_return_status => x_out.output_status.return_status
3842 ,x_msg_count => x_out.output_status.msg_count
3843 ,x_msg_data => x_out.output_status.msg_data
3844 ) ;
3845 INV_EBI_UTIL.debug_line('STEP 160: END CALLING EGO_ITEM_PUB.PROCESS_ITEM_PHASE_AND_STATUS status is '|| x_out.output_status.return_status );
3846 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
3847 x_out.item_number := p_update_item_tbl(i).item_obj.main_obj_type.item_number;
3848 x_out.organization_code := p_update_item_tbl(i).item_obj.main_obj_type.organization_code;
3849 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || p_update_item_tbl(i).item_obj.main_obj_type.item_number || ' -> Org Code: ' || p_update_item_tbl(i).item_obj.main_obj_type.organization_code;
3850 RAISE FND_API.g_exc_unexpected_error;
3851 END IF;
3852
3853 END IF;
3854 END LOOP;
3855
3856 END IF;
3857 END IF;
3858 END IF;--End of bug 11066016
3859 END IF;
3860
3861 IF(l_new_phase_id = l_curr_phase_id)
3862 THEN
3863 l_new_phase_id := fnd_api.g_miss_num;
3864 END IF;
3865
3866 IF (l_new_status_code = l_curr_status_code)
3867 THEN
3868
3869 l_new_status_code := fnd_api.g_miss_char;
3870 -- If incoming item status is Obsolete or Inactive,item should be deactivated after CO creation is
3871 -- Succesfull,because Inactive or Obsolete item cannot be used as Revised item on CO.
3872 ELSIF(l_new_status_code IN ('Obsolete', 'Inactive')) THEN
3873 l_new_status_code := fnd_api.g_miss_char;
3874 l_new_phase_id := fnd_api.g_miss_num;
3875 l_new_lifecycle_id := fnd_api.g_miss_num;
3876 -- If incoming status is inactive or obsolete as this updation will
3877 -- be successfull only after co creation ,and if we just try to update phase ,updation will fail because
3878 -- earlier status and incoming new phase may not be a valid combination.so if status is inactive or obsolete
3879 -- do not update phase and status prior to co creation ,and user should not send bom data when item status
3880 -- is being deactivated.
3881 END IF;
3882
3883 IF( l_new_lifecycle_id <> fnd_api.g_miss_num OR
3884 l_new_phase_id <> fnd_api.g_miss_num OR
3885 l_new_status_code <> fnd_api.g_miss_char) THEN
3886
3887 l_item_tbl.DELETE;
3888 l_item_tbl(1).transaction_type := INV_EBI_ITEM_PUB.g_otype_update;
3889 l_item_tbl(1).inventory_item_id := p_update_item_tbl(i).item_obj.main_obj_type.inventory_item_id;
3890 l_item_tbl(1).organization_id := p_update_item_tbl(i).item_obj.main_obj_type.organization_id;
3891 l_item_tbl(1).lifecycle_id := l_new_lifecycle_id;
3892 l_item_tbl(1).current_phase_id := l_new_phase_id;
3893 l_item_tbl(1).inventory_item_status_code := l_new_status_code;
3894 l_item_tbl(1).item_catalog_group_id := p_update_item_tbl(i).item_obj.main_obj_type.item_catalog_group_id;
3895
3896 INV_EBI_UTIL.debug_line('STEP 170 : l_item_tbl(1).transaction_type ' || l_item_tbl(1).transaction_type);
3897 INV_EBI_UTIL.debug_line('STEP 180 : l_item_tbl(1).inventory_item_id ' || l_item_tbl(1).inventory_item_id );
3898 INV_EBI_UTIL.debug_line('STEP 190: l_item_tbl(1).organization_id ' || l_item_tbl(1).organization_id);
3899 INV_EBI_UTIL.debug_line('STEP 200: l_item_tbl(1).lifecycle_id ' || l_item_tbl(1).lifecycle_id);
3900 INV_EBI_UTIL.debug_line('STEP 210: l_item_tbl(1).current_phase_id ' || l_item_tbl(1).current_phase_id );
3901 INV_EBI_UTIL.debug_line('STEP 220: l_item_tbl(1).inventory_item_status_code ' || l_item_tbl(1).inventory_item_status_code);
3902 INV_EBI_UTIL.debug_line('STEP 230: l_item_tbl(1).item_catalog_group_id ' || l_item_tbl(1).item_catalog_group_id);
3903 EGO_ITEM_PUB.PROCESS_ITEMS(
3904 p_api_version => 1.0
3905 ,p_init_msg_list => fnd_api.g_true
3906 ,p_commit => fnd_api.g_false
3907 ,p_item_tbl => l_item_tbl
3908 ,p_role_grant_tbl => l_role_grant_tbl
3909 ,x_item_tbl => x_item_tbl
3910 ,x_return_status => x_out.output_status.return_status
3911 ,x_msg_count => x_out.output_status.msg_count
3912 );
3913 INV_EBI_UTIL.debug_line('STEP 240: END CALLING EGO_ITEM_PUB.PROCESS_ITEMS STATUS: '|| x_out.output_status.return_status);
3914 IF (x_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
3915 x_out.item_number := p_update_item_tbl(i).item_obj.main_obj_type.item_number;
3916 x_out.organization_code := p_update_item_tbl(i).item_obj.main_obj_type.organization_code;
3917 x_out.output_status.msg_data := x_out.output_status.msg_data || ' -> Item Number:' || p_update_item_tbl(i).item_obj.main_obj_type.item_number || ' -> Org Code: ' || p_update_item_tbl(i).item_obj.main_obj_type.organization_code;
3918 RAISE FND_API.g_exc_unexpected_error;
3919 END IF;
3920 END IF;
3921 END LOOP;
3922 END IF;
3923
3924 IF FND_API.to_boolean( p_commit ) THEN
3925 COMMIT;
3926 END IF;
3927
3928 EXCEPTION
3929
3930 WHEN FND_API.g_exc_unexpected_error THEN
3931 ROLLBACK TO inv_ebi_proc_upd_item_lc_pnt;
3932 IF(c_get_item_curr_data % ISOPEN) THEN
3933 CLOSE c_get_item_curr_data;
3934 END IF;
3935
3936 IF c_get_phase_seq%ISOPEN THEN
3937 CLOSE c_get_phase_seq;
3938 END IF;
3939
3940 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
3941 IF(x_out.output_status.msg_data IS NULL) THEN
3942 x_out.output_status.error_table := INV_EBI_UTIL.get_error_table();
3943
3944 IF (x_out.output_status.error_table IS NOT NULL AND x_out.output_status.error_table.COUNT > 0) THEN
3945
3946 x_out.output_status.msg_data := INV_EBI_UTIL.get_error_table_msgtxt(x_out.output_status.error_table);
3947 IF(x_out.output_status.msg_data IS NULL) THEN
3948
3949 fnd_msg_pub.count_and_get(
3950 p_encoded => fnd_api.g_false
3951 ,p_count => x_out.output_status.msg_count
3952 ,p_data => x_out.output_status.msg_data
3953 );
3954 END IF;
3955 END IF;
3956 END IF;
3957 WHEN OTHERS THEN
3958 ROLLBACK TO inv_ebi_proc_upd_item_lc_pnt;
3959 IF(c_get_item_curr_data % ISOPEN) THEN
3960 CLOSE c_get_item_curr_data;
3961 END IF;
3962
3963 IF c_get_phase_seq%ISOPEN THEN
3964 CLOSE c_get_phase_seq;
3965 END IF;
3966
3967 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
3968 x_out.output_status.error_table := INV_EBI_UTIL.get_error_table();
3969
3970 IF (x_out.output_status.error_table IS NOT NULL AND x_out.output_status.error_table.COUNT > 0) THEN
3971 x_out.output_status.msg_data := INV_EBI_UTIL.get_error_table_msgtxt(x_out.output_status.error_table);
3972 END IF;
3973
3974 IF (x_out.output_status.msg_data IS NOT NULL) THEN
3975 x_out.output_status.msg_data := x_out.output_status.msg_data ||' -> INV_EBI_ITEM_HELPER.process_update_item_lifecycle ';
3976 ELSE
3977 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.process_update_item_lifecycle ';
3978 END IF;
3979 END process_update_item_lifecycle;
3980
3981
3982 /************************************************************************************
3983 -- API name : sync_item
3984 -- Type : Public
3985 -- Function :
3986 --
3987 --Should include API calls for Item alternative Catalog ,create Manufacture,Manufacture part
3988 --Template Ids??
3989 --Check if Organization Ids are there and how assignments to multiple orgs have to be handled
3990 ************************************************************************************/
3991 Procedure sync_item (
3992 p_commit IN VARCHAR2 := FND_API.g_false
3993 ,p_operation IN VARCHAR2
3994 ,p_item IN inv_ebi_item_obj
3995 ,x_out OUT NOCOPY inv_ebi_item_output_obj
3996 ) IS
3997 l_out inv_ebi_item_output_obj;
3998 l_api_version NUMBER:=1.0;
3999 l_inventory_item_id NUMBER;
4000 l_organization_id NUMBER;
4001 l_organization_code VARCHAR2(3);
4002 l_item_number VARCHAR2(2000);
4003 l_output_status inv_ebi_output_status;
4004 l_category_output inv_ebi_category_output_obj;
4005
4006 l_mfg_part_num_obj inv_ebi_manufacturer_part_obj;
4007 l_master_org_id NUMBER;
4008 l_manufacturer_count NUMBER := 0;
4009 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl;
4010 l_operating_unit VARCHAR2(240);
4011 l_operating_unit_id NUMBER;
4012 l_description VARCHAR2(240);
4013 l_ret VARCHAR2(1);
4014 BEGIN
4015 SAVEPOINT inv_ebi_sync_item_save_pnt;
4016 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
4017 x_out := inv_ebi_item_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL,NULL,NULL,NULL,NULL);
4018 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
4019
4020 --Create or update item
4021 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.sync_item ');
4022 INV_EBI_UTIL.debug_line('STEP 20: ORGANIZATION CODE: '|| p_item.main_obj_type.organization_code ||' Item Number: '|| p_item.main_obj_type.item_number);
4023 INV_EBI_UTIL.debug_line('STEP 30: BEFORE CALLING INV_EBI_ITEM_HELPER.process_item_pvt ');
4024 process_item_pvt (
4025 p_item => p_item
4026 ,p_operation => p_operation
4027 ,p_commit => FND_API.g_false
4028 ,x_out => l_out
4029 );
4030 INV_EBI_UTIL.debug_line('STEP 40: AFTER CALLING INV_EBI_ITEM_HELPER.process_item_pvt STATUS: '|| l_out.output_status.return_status);
4031 IF (l_out.output_status.return_status <> fnd_api.g_ret_sts_success) THEN
4032 x_out.output_status.msg_data := l_out.output_status.msg_data;
4033 RAISE fnd_api.g_exc_unexpected_error;
4034 END IF;
4035 l_inventory_item_id := l_out.inventory_item_id;
4036 l_organization_id := l_out.organization_id;
4037 l_organization_code := l_out.organization_code;
4038 l_item_number := l_out.item_number;
4039 l_operating_unit := l_out.operating_unit;
4040 l_operating_unit_id := l_out.operating_unit_id;
4041 l_description := l_out.description;
4042
4043 --Assign item to all the orgs sent in the list.
4044 IF (p_item.org_id_obj_type IS NOT NULL AND p_item.org_id_obj_type.COUNT > 0) THEN
4045 INV_EBI_UTIL.debug_line('STEP 50: BEFORE CALLING INV_EBI_ITEM_HELPER.process_org_id_assignments' );
4046 INV_EBI_UTIL.debug_line('STEP 60: INVENTORY ITEM ID: '|| l_inventory_item_id );
4047 process_org_id_assignments(
4048 p_init_msg_list => p_item.main_obj_type.init_msg_list
4049 ,p_commit => fnd_api.g_false
4050 ,p_inventory_item_id => l_inventory_item_id
4051 ,p_item_number => p_item.main_obj_type.item_number
4052 ,p_org_id_tbl => p_item.org_id_obj_type
4053 ,x_out => l_out
4054 );
4055 INV_EBI_UTIL.debug_line('STEP 70: AFTER CALLING INV_EBI_ITEM_HELPER.process_org_id_assignments STATUS: '|| l_out.output_status.return_status);
4056 END IF;
4057 IF (l_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
4058 x_out.output_status.msg_data := l_out.output_status.msg_data;
4059 RAISE fnd_api.g_exc_unexpected_error;
4060 END IF;
4061 --Catalog Category assignment
4062 IF (p_item.category_id_obj_tbl_type IS NOT NULL AND p_item.category_id_obj_tbl_type.COUNT > 0) THEN
4063 INV_EBI_UTIL.debug_line('STEP 80: BEFORE CALLING INV_EBI_ITEM_HELPER.process_category_assignments ');
4064 process_category_assignments(
4065 p_api_version => l_api_version
4066 ,p_init_msg_list => p_item.main_obj_type.init_msg_list
4067 ,p_commit => fnd_api.g_false
4068 ,p_inventory_item_id => l_inventory_item_id
4069 ,p_organization_id => p_item.main_obj_type.organization_id
4070 ,p_category_id_tbl => p_item.category_id_obj_tbl_type
4071 ,x_out => l_out
4072 );
4073 INV_EBI_UTIL.debug_line('STEP 90: AFTER CALLING INV_EBI_ITEM_HELPER.process_category_assignments STATUS: '|| l_out.output_status.return_status);
4074 END IF;
4075 IF (l_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
4076 x_out.output_status.msg_data := l_out.output_status.msg_data;
4077 RAISE fnd_api.g_exc_unexpected_error;
4078 END IF;
4079 l_category_output := inv_ebi_category_output_obj(l_out.category_output.error_code);
4080 l_master_org_id := INV_EBI_UTIL.get_master_organization(
4081 p_organization_id => p_item.main_obj_type.organization_id
4082 );
4083
4084 --Manufacturer Part Num association needs to be done for master org only.
4085 IF(l_master_org_id = p_item.main_obj_type.organization_id) THEN
4086 IF (p_item.part_num_obj_tbl_type IS NOT NULL AND p_item.part_num_obj_tbl_type.COUNT > 0) THEN
4087 FOR i IN p_item.part_num_obj_tbl_type.FIRST..p_item.part_num_obj_tbl_type.LAST
4088 LOOP
4089 l_mfg_part_num_obj := p_item.part_num_obj_tbl_type(i);
4090 IF(l_mfg_part_num_obj.manufacturer_id IS NOT NULL AND l_mfg_part_num_obj.manufacturer_id <> fnd_api.g_miss_num) THEN
4091 SELECT COUNT(1) INTO l_manufacturer_count
4092 FROM mtl_manufacturers
4093 WHERE manufacturer_id = l_mfg_part_num_obj.manufacturer_id;
4094 END IF;
4095 IF(l_manufacturer_count > 0 ) THEN
4096 INV_EBI_UTIL.debug_line('STEP 100: BEFORE CALLING INV_EBI_ITEM_HELPER.process_part_num_association');
4097 process_part_num_association(
4098 p_commit => FND_API.g_false
4099 ,p_organization_id => p_item.main_obj_type.organization_id
4100 ,p_inventory_item_id => l_inventory_item_id
4101 ,p_mfg_part_obj => l_mfg_part_num_obj
4102 ,x_out => l_out
4103 );
4104 INV_EBI_UTIL.debug_line('STEP 110: AFTER CALLING INV_EBI_ITEM_HELPER.process_part_num_association STATUS: '|| l_out.output_status.return_status);
4105 ELSE
4106
4107 --If manufcaturer does not exist raise exception
4108 FND_MESSAGE.set_name('INV','INV_EBI_MFG_NOT_EXIST');
4109 IF l_mfg_part_num_obj.manufacturer_name IS NULL THEN
4110 l_pk_col_name_val_pairs.EXTEND(1);
4111 l_pk_col_name_val_pairs(1).name := 'manufacturer_id';
4112 l_pk_col_name_val_pairs(1).value := l_mfg_part_num_obj.manufacturer_id;
4113 l_mfg_part_num_obj.manufacturer_name := id_to_value(
4114 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
4115 ,p_entity_name => G_MANUFACTURER
4116 );
4117 l_pk_col_name_val_pairs.TRIM(1);
4118 END IF;
4119 FND_MESSAGE.set_token('MFG_NAME', l_mfg_part_num_obj.manufacturer_name);
4120 FND_MSG_PUB.add;
4121 RAISE FND_API.g_exc_error;
4122 END IF;
4123 IF (l_out.output_status.return_status <> FND_API.g_ret_sts_success) THEN
4124 x_out.output_status.msg_data := l_out.output_status.msg_data ;
4125 RAISE FND_API.g_exc_unexpected_error;
4126 END IF;
4127 END LOOP;
4128 INV_EBI_UTIL.debug_line('STEP 120: END CALLING INV_EBI_ITEM_HELPER.process_part_num_association');
4129 END IF;
4130 END IF;
4131
4132 IF ( p_item.uom_conversion_obj_tbl_type IS NOT NULL AND p_item.uom_conversion_obj_tbl_type.Count>0) THEN
4133 UOMConversion(p_uom_input => p_item.uom_conversion_obj_tbl_type
4134 ,p_item_id => l_inventory_item_id
4135 ,x_msg_data => x_out.output_status.msg_data
4136 ,x_return_status => l_ret
4137 );
4138 IF (l_ret <> FND_API.g_ret_sts_success) THEN
4139 RAISE FND_API.g_exc_unexpected_error;
4140 END IF;
4141 END IF;
4142 x_out := inv_ebi_item_output_obj(l_inventory_item_id,l_organization_id,l_organization_code,l_item_number,l_out.output_status,NULL,l_category_output,NULL,l_operating_unit,l_operating_unit_id,l_description);
4143
4144 IF fnd_api.to_boolean(p_commit) THEN
4145 COMMIT;
4146 END IF;
4147 INV_EBI_UTIL.debug_line('STEP 130: END INSIDE INV_EBI_ITEM_HELPER.sync_item STATUS: '|| x_out.output_status.return_status);
4148 EXCEPTION
4149 WHEN FND_API.g_exc_error THEN
4150 ROLLBACK TO inv_ebi_sync_item_save_pnt;
4151 x_out.output_status.return_status := FND_API.g_ret_sts_error;
4152 IF(x_out.output_status.msg_data IS NULL) THEN
4153 FND_MSG_PUB.count_and_get(
4154 p_encoded => FND_API.g_false
4155 ,p_count => x_out.output_status.msg_count
4156 ,p_data => x_out.output_status.msg_data
4157 );
4158 END IF;
4159 WHEN FND_API.g_exc_unexpected_error THEN
4160 ROLLBACK TO inv_ebi_sync_item_save_pnt;
4161 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
4162 IF(x_out.output_status.msg_data IS NULL) THEN
4163 FND_MSG_PUB.count_and_get(
4164 p_encoded => FND_API.g_false
4165 ,p_count => x_out.output_status.msg_count
4166 ,p_data => x_out.output_status.msg_data
4167 );
4168 END IF;
4169 WHEN OTHERS THEN
4170 ROLLBACK TO inv_ebi_sync_item_save_pnt;
4171 x_out.output_status.return_status := FND_API.g_ret_sts_unexp_error;
4172 IF (x_out.output_status.msg_data IS NOT NULL) THEN
4173 x_out.output_status.msg_data := l_out.output_status.msg_data ||' -> INV_EBI_ITEM_HELPER.sync_item ';
4174 ELSE
4175 x_out.output_status.msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.sync_item ';
4176 END IF;
4177 END sync_item;
4178 /************************************************************************************
4179 -- API name : get_item_balance
4180 -- Type : Public
4181 -- Function :
4182 ************************************************************************************/
4183 PROCEDURE get_item_balance(
4184 p_item_balance_input IN inv_ebi_item_bal_input_list
4185 ,x_item_balance_output OUT NOCOPY inv_ebi_item_bal_output_list
4186 ,x_return_status OUT NOCOPY VARCHAR2
4187 ,x_msg_count OUT NOCOPY NUMBER
4188 ,x_msg_data OUT NOCOPY VARCHAR2
4189 )
4190 IS
4191 l_locator_id NUMBER;
4192 l_cur_index NUMBER;
4193 l_item_bal_output inv_ebi_item_balance_obj;
4194 l_item_balance_loc_tbl inv_ebi_item_bal_loc_tbl;
4195 l_item_balance_output_tbl inv_ebi_item_bal_output_tbl;
4196 l_item_balance_loc_obj inv_ebi_item_bal_loc_obj;
4197 l_item_balance_output_obj inv_ebi_item_bal_output_obj;
4198 l_is_revision_control BOOLEAN;
4199 l_is_lot_control BOOLEAN;
4200 l_is_serial_control BOOLEAN;
4201 l_return_status VARCHAR2(1);
4202 l_msg_count NUMBER;
4203 l_msg_data VARCHAR2(1000);
4204 l_qty_on_hand NUMBER;
4205 l_res_qty_on_hand NUMBER;
4206 l_qty_reserved NUMBER;
4207 l_qty_suggested NUMBER;
4208 l_avail_to_transact NUMBER;
4209 l_avail_to_reserve NUMBER;
4210 l_sec_qty_on_hand NUMBER;
4211 l_sec_res_qty_on_hand NUMBER;
4212 l_sec_qty_reserved NUMBER;
4213 l_sec_qty_suggested NUMBER;
4214 l_sec_avail_to_transact NUMBER;
4215 l_sec_avail_to_reserve NUMBER;
4216 l_organization_code VARCHAR2(3000);
4217 l_item_name VARCHAR2(30);
4218 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl;
4219 CURSOR c_locator_id(p_inventory_item_id IN NUMBER, p_organization_id IN NUMBER,
4220 p_revision IN VARCHAR2, p_subinventory_code IN VARCHAR2
4221 )IS
4222 SELECT
4223 DISTINCT(locator_id)
4224 FROM
4225 mtl_onhand_locator_v
4226 WHERE
4227 locator_id IS NOT NULL AND
4228 inventory_item_id = p_inventory_item_id AND
4229 organization_id = p_organization_id AND
4230 (revision IS NOT NULL OR (revision = p_revision)) AND
4231 (subinventory_code IS NOT NULL OR (subinventory_code = p_subinventory_code));
4232 BEGIN
4233 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.get_item_balance');
4234 x_return_status := fnd_api.g_ret_sts_success;
4235 l_item_balance_output_tbl := inv_ebi_item_bal_output_tbl();
4236 Inv_Quantity_Tree_Pub.clear_quantity_cache;
4237 IF p_item_balance_input.item_input_table IS NOT NULL THEN
4238 FOR i IN p_item_balance_input.item_input_table.FIRST..p_item_balance_input.item_input_table.LAST LOOP
4239 BEGIN
4240 l_item_balance_output_tbl.EXTEND();
4241 IF p_item_balance_input.item_input_table(i).is_revision_control = FND_API.G_TRUE THEN
4242 l_is_revision_control := TRUE;
4243 ELSE
4244 l_is_revision_control := FALSE;
4245 END IF;
4246 IF p_item_balance_input.item_input_table(i).is_lot_control = FND_API.G_TRUE THEN
4247 l_is_lot_control := TRUE;
4248 ELSE
4249 l_is_lot_control := FALSE;
4250 END IF;
4251 IF p_item_balance_input.item_input_table(i).is_serial_control = FND_API.G_TRUE THEN
4252 l_is_serial_control := TRUE;
4253 ELSE
4254 l_is_serial_control := FALSE;
4255 END IF;
4256 INV_EBI_UTIL.debug_line('STEP 20: BEFORE CALLING INV_QUANTITY_TREE_PUB.query_quantities');
4257 INV_QUANTITY_TREE_PUB.query_quantities(
4258 p_api_version_number => p_item_balance_input.item_input_table(i).api_version_number
4259 ,p_init_msg_lst => p_item_balance_input.item_input_table(i).init_msg_lst
4260 ,p_organization_id => p_item_balance_input.item_input_table(i).organization_id
4261 ,p_inventory_item_id => p_item_balance_input.item_input_table(i).inventory_item_id
4262 ,p_tree_mode => p_item_balance_input.item_input_table(i).tree_mode
4263 ,p_is_revision_control => l_is_revision_control
4264 ,p_is_lot_control => l_is_lot_control
4265 ,p_is_serial_control => l_is_serial_control
4266 ,p_grade_code => p_item_balance_input.item_input_table(i).grade_code
4267 ,p_demand_source_type_id => p_item_balance_input.item_input_table(i).demand_source_type_id
4268 ,p_demand_source_header_id => p_item_balance_input.item_input_table(i).demand_source_header_id
4269 ,p_demand_source_line_id => p_item_balance_input.item_input_table(i).demand_source_line_id
4270 ,p_demand_source_name => p_item_balance_input.item_input_table(i).demand_source_name
4271 ,p_lot_expiration_date => p_item_balance_input.item_input_table(i).lot_expiration_date
4272 ,p_revision => p_item_balance_input.item_input_table(i).revision
4273 ,p_lot_number => p_item_balance_input.item_input_table(i).lot_number
4274 ,p_subinventory_code => p_item_balance_input.item_input_table(i).subinventory_code
4275 ,p_locator_id => p_item_balance_input.item_input_table(i).locator_id
4276 ,p_onhand_source => p_item_balance_input.item_input_table(i).onhand_source
4277 ,p_transfer_subinventory_code => p_item_balance_input.item_input_table(i).transfer_subinventory_code
4278 ,p_cost_group_id => p_item_balance_input.item_input_table(i).cost_group_id
4279 ,p_lpn_id => p_item_balance_input.item_input_table(i).lpn_id
4280 ,p_transfer_locator_id => p_item_balance_input.item_input_table(i).transfer_locator_id
4281 ,x_qoh => l_qty_on_hand
4282 ,x_rqoh => l_res_qty_on_hand
4283 ,x_qr => l_qty_reserved
4284 ,x_qs => l_qty_suggested
4285 ,x_att => l_avail_to_transact
4286 ,x_atr => l_avail_to_reserve
4287 ,x_sqoh => l_sec_qty_on_hand
4288 ,x_srqoh => l_sec_res_qty_on_hand
4289 ,x_sqr => l_sec_qty_reserved
4290 ,x_sqs => l_sec_qty_suggested
4291 ,x_satt => l_sec_avail_to_transact
4292 ,x_satr => l_sec_avail_to_reserve
4293 ,x_return_status => l_return_status
4294 ,x_msg_count => l_msg_count
4295 ,x_msg_data => l_msg_data
4296 );
4297 INV_EBI_UTIL.debug_line('STEP 30: AFTER CALLING INV_QUANTITY_TREE_PUB.query_quantities STATUS: '||l_return_status);
4298 l_item_bal_output := inv_ebi_item_balance_obj(
4299 l_return_status
4300 ,l_msg_count
4301 ,l_msg_data
4302 ,l_qty_on_hand
4303 ,l_res_qty_on_hand
4304 ,l_qty_reserved
4305 ,l_qty_suggested
4306 ,l_avail_to_transact
4307 ,l_avail_to_reserve
4308 ,l_sec_qty_on_hand
4309 ,l_sec_res_qty_on_hand
4310 ,l_sec_qty_reserved
4311 ,l_sec_qty_suggested
4312 ,l_sec_avail_to_transact
4313 ,l_sec_avail_to_reserve
4314 );
4315 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
4316 l_pk_col_name_val_pairs.EXTEND(1);
4317 l_pk_col_name_val_pairs(1).name := 'organization_id';
4318 l_pk_col_name_val_pairs(1).value := p_item_balance_input.item_input_table(i).organization_id;
4319 l_organization_code := INV_EBI_ITEM_HELPER.id_to_value (
4320 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
4321 ,p_entity_name=> G_ORGANIZATION
4322 );
4323 INV_EBI_UTIL.debug_line('STEP 40: ORG CODE: '||l_organization_code);
4324 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
4325 l_pk_col_name_val_pairs.EXTEND(1);
4326 l_pk_col_name_val_pairs(1).name := 'organization_id';
4327 l_pk_col_name_val_pairs(1).value := p_item_balance_input.item_input_table(i).organization_id;
4328 l_pk_col_name_val_pairs.EXTEND(1);
4329 l_pk_col_name_val_pairs(2).name := 'inventory_item_id';
4330 l_pk_col_name_val_pairs(2).value := p_item_balance_input.item_input_table(i).inventory_item_id;
4331 l_item_name := INV_EBI_ITEM_HELPER.id_to_value(
4332 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
4333 ,p_entity_name=> G_INVENTORY_ITEM
4334 );
4335 INV_EBI_UTIL.debug_line('STEP 50: ITEMNAME: '||l_item_name);
4336 l_item_balance_output_obj := inv_ebi_item_bal_output_obj(
4337 p_item_balance_input.item_input_table(i).organization_id
4338 ,p_item_balance_input.item_input_table(i).inventory_item_id
4339 ,l_organization_code
4340 ,l_item_name
4341 ,p_item_balance_input.item_input_table(i).demand_source_type_id
4342 ,p_item_balance_input.item_input_table(i).demand_source_header_id
4343 ,p_item_balance_input.item_input_table(i).demand_source_line_id
4344 ,p_item_balance_input.item_input_table(i).revision
4345 ,p_item_balance_input.item_input_table(i).lot_number
4346 ,p_item_balance_input.item_input_table(i).subinventory_code
4347 ,p_item_balance_input.item_input_table(i).locator_id
4348 ,p_item_balance_input.item_input_table(i).onhand_source
4349 ,p_item_balance_input.item_input_table(i).transfer_subinventory_code
4350 ,p_item_balance_input.item_input_table(i).cost_group_id
4351 ,p_item_balance_input.item_input_table(i).lpn_id
4352 ,p_item_balance_input.item_input_table(i).transfer_locator_id
4353 ,l_item_bal_output
4354 ,NULL
4355 ,NULL
4356 ,NULL);
4357 l_item_balance_output_tbl(i) := l_item_balance_output_obj;
4358 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4359 RAISE FND_API.g_exc_unexpected_error;
4360 END IF;
4361 --If Locator Information is required then get the item balance based on location
4362 IF p_item_balance_input.item_input_table(i).is_loc_info_required = fnd_api.g_true THEN
4363 l_item_balance_loc_tbl :=inv_ebi_item_bal_loc_tbl();
4364 l_cur_index :=1;
4365 FOR cer IN c_locator_id(p_item_balance_input.item_input_table(i).inventory_item_id
4366 ,p_item_balance_input.item_input_table(i).organization_id
4367 ,p_item_balance_input.item_input_table(i).revision
4368 ,p_item_balance_input.item_input_table(i).subinventory_code)
4369 LOOP
4370 l_locator_id := cer.locator_id;
4371 l_item_balance_loc_tbl.extend();
4372 INV_EBI_UTIL.debug_line('STEP 60: BEFORE CALLING INV_QUANTITY_TREE_PUB.query_quantities');
4373 INV_Quantity_Tree_PUB.Query_Quantities(
4374 p_api_version_number => p_item_balance_input.item_input_table(i).api_version_number
4375 ,p_init_msg_lst => p_item_balance_input.item_input_table(i).init_msg_lst
4376 ,p_organization_id => p_item_balance_input.item_input_table(i).organization_id
4377 ,p_inventory_item_id => p_item_balance_input.item_input_table(i).inventory_item_id
4378 ,p_tree_mode => p_item_balance_input.item_input_table(i).tree_mode
4379 ,p_is_revision_control => l_is_revision_control
4380 ,p_is_lot_control => l_is_lot_control
4381 ,p_is_serial_control => l_is_serial_control
4382 ,p_grade_code => p_item_balance_input.item_input_table(i).grade_code
4383 ,p_demand_source_type_id => p_item_balance_input.item_input_table(i).demand_source_type_id
4384 ,p_demand_source_header_id => p_item_balance_input.item_input_table(i).demand_source_header_id
4385 ,p_demand_source_line_id => p_item_balance_input.item_input_table(i).demand_source_line_id
4386 ,p_demand_source_name => p_item_balance_input.item_input_table(i).demand_source_name
4387 ,p_lot_expiration_date => p_item_balance_input.item_input_table(i).lot_expiration_date
4388 ,p_revision => p_item_balance_input.item_input_table(i).revision
4389 ,p_lot_number => p_item_balance_input.item_input_table(i).lot_number
4390 ,p_subinventory_code => p_item_balance_input.item_input_table(i).subinventory_code
4391 ,p_locator_id => l_locator_id
4392 ,p_onhand_source => p_item_balance_input.item_input_table(i).onhand_source
4393 ,p_transfer_subinventory_code => p_item_balance_input.item_input_table(i).transfer_subinventory_code
4394 ,p_cost_group_id => p_item_balance_input.item_input_table(i).cost_group_id
4395 ,p_lpn_id => p_item_balance_input.item_input_table(i).lpn_id
4396 ,p_transfer_locator_id => p_item_balance_input.item_input_table(i).transfer_locator_id
4397 ,x_qoh => l_qty_on_hand
4398 ,x_rqoh => l_res_qty_on_hand
4399 ,x_qr => l_qty_reserved
4400 ,x_qs => l_qty_suggested
4401 ,x_att => l_avail_to_transact
4402 ,x_atr => l_avail_to_reserve
4403 ,x_sqoh => l_sec_qty_on_hand
4404 ,x_srqoh => l_sec_res_qty_on_hand
4405 ,x_sqr => l_sec_qty_reserved
4406 ,x_sqs => l_sec_qty_suggested
4407 ,x_satt => l_sec_avail_to_transact
4408 ,x_satr => l_sec_avail_to_reserve
4409 ,x_return_status => l_return_status
4410 ,x_msg_count => l_msg_count
4411 ,x_msg_data => l_msg_data
4412 );
4413 INV_EBI_UTIL.debug_line('STEP 70: AFTER CALLING INV_QUANTITY_TREE_PUB.query_quantities STATUS: '||l_return_status);
4414 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4415 l_msg_data := l_msg_data || ' -> Inventory Item Id:' || p_item_balance_input.item_input_table(i).inventory_item_id || ' -> Org Id: ' || p_item_balance_input.item_input_table(i).organization_id;
4416 RAISE FND_API.g_exc_unexpected_error;
4417 END IF;
4418 l_item_bal_output := inv_ebi_item_balance_obj(
4419 l_return_status
4420 ,l_msg_count
4421 ,l_msg_data
4422 ,l_qty_on_hand
4423 ,l_res_qty_on_hand
4424 ,l_qty_reserved
4425 ,l_qty_suggested
4426 ,l_avail_to_transact
4427 ,l_avail_to_reserve
4428 ,l_sec_qty_on_hand
4429 ,l_sec_res_qty_on_hand
4430 ,l_sec_qty_reserved
4431 ,l_sec_qty_suggested
4432 ,l_sec_avail_to_transact
4433 ,l_sec_avail_to_reserve
4434 );
4435 l_item_balance_loc_obj := inv_ebi_item_bal_loc_obj(l_locator_id,l_item_bal_output);
4436 l_item_balance_loc_tbl(l_cur_index) := l_item_balance_loc_obj;
4437 l_cur_index := l_cur_index + 1;
4438 END LOOP;
4439 END IF; -- IF p_item_balance_input.item_input_table(i).is_loc_info_required is true
4440 l_item_balance_output_tbl(i).item_balance_loc_tbl := l_item_balance_loc_tbl;
4441 INV_EBI_UTIL.debug_line('STEP 80: BEFORE CALLING INV_EBI_ITEM_HELPER.get_operating_unit');
4442 get_Operating_unit
4443 (p_oranization_id => p_item_balance_input.item_input_table(i).organization_id
4444 ,x_operating_unit => l_item_balance_output_tbl(i).operating_unit
4445 ,x_ouid => l_item_balance_output_tbl(i).operating_unit_id
4446 );
4447 INV_EBI_UTIL.debug_line('STEP 90: AFTER CALLING INV_EBI_ITEM_HELPER.get_operating_unit');
4448 EXCEPTION
4449 WHEN FND_API.g_exc_unexpected_error THEN
4450 x_return_status := FND_API.g_ret_sts_error;
4451 IF l_msg_data IS NULL THEN
4452 FND_MSG_PUB.count_and_get(
4453 p_encoded => FND_API.g_false
4454 ,p_count => l_item_balance_output_tbl(i).item_balance_output.msg_count
4455 ,p_data => l_item_balance_output_tbl(i).item_balance_output.msg_data
4456 );
4457 END IF;
4458 populate_err_msg (p_orgid => p_item_balance_input.item_input_table(i).organization_id
4459 ,p_invid => p_item_balance_input.item_input_table(i).inventory_item_id
4460 ,p_org_code => l_organization_code
4461 ,p_item_name => l_item_name
4462 ,p_part_err_msg => l_item_balance_output_tbl(i).item_balance_output.msg_data
4463 ,x_err_msg => x_msg_data
4464 );
4465 WHEN OTHERS THEN
4466 x_return_status := FND_API.g_ret_sts_error;
4467 populate_err_msg(p_orgid => p_item_balance_input.item_input_table(i).organization_id
4468 ,p_invid => p_item_balance_input.item_input_table(i).inventory_item_id
4469 ,p_org_code => l_organization_code
4470 ,p_item_name => l_item_name
4471 ,p_part_err_msg => SQLERRM||'-> at inv_ebi_item_helper.get_item_balance'
4472 ,x_err_msg => x_msg_data
4473 );
4474 END;
4475
4476 END LOOP;
4477 x_item_balance_output :=inv_ebi_item_bal_output_list(l_item_balance_output_tbl);
4478 END IF; --p_item_balance_input IS NOT NULL
4479 INV_EBI_UTIL.debug_line('STEP 100: AFTER CALLING INV_EBI_ITEM_HELPER.get_item_balance STATUS: '||x_return_status);
4480 EXCEPTION
4481 WHEN OTHERS THEN
4482 x_return_status := FND_API.g_ret_sts_error;
4483 IF (x_msg_data IS NOT NULL) THEN
4484 x_msg_data := x_msg_data ||' -> at INV_EBI_ITEM_HELPER.get_item_balance';
4485 ELSE
4486 x_msg_data := SQLERRM||' at INV_EBI_ITEM_HELPER.get_item_balance ';
4487 END IF;
4488 END get_item_balance;
4489 /************************************************************************************
4490 -- API name : validate_get_item_request
4491 -- Type : Public
4492 -- Function :
4493 -- This API is used to validate the Item Request Inputs
4494 --
4495 ************************************************************************************/
4496 PROCEDURE validate_get_item_request(
4497 p_get_opr_attrs_rec IN inv_ebi_get_operational_attrs,
4498 x_status OUT NOCOPY VARCHAR2,
4499 x_msg_count OUT NOCOPY NUMBER,
4500 x_msg_data OUT NOCOPY VARCHAR2
4501 )
4502 IS
4503 BEGIN
4504 FND_MSG_PUB.initialize();
4505 IF((p_get_opr_attrs_rec.item_id IS NULL) AND
4506 (p_get_opr_attrs_rec.item_name IS NULL)) THEN
4507 FND_MESSAGE.set_name('INV','INV_EBI_NO_ITEM_ID_NAME');
4508 FND_MSG_PUB.add;
4509 RAISE FND_API.G_EXC_ERROR;
4510 ELSIF((p_get_opr_attrs_rec.organization_id IS NULL) AND
4511 (p_get_opr_attrs_rec.organization_code IS NULL))THEN
4512 FND_MESSAGE.set_name('INV','INV_EBI_NO_ORGID_ORGCODE');
4513 FND_MSG_PUB.add;
4514 RAISE FND_API.G_EXC_ERROR;
4515 ELSE
4516 x_status := FND_API.G_RET_STS_SUCCESS;
4517 END IF;
4518 EXCEPTION
4519 WHEN FND_API.G_EXC_ERROR THEN
4520 x_status := FND_API.G_RET_STS_ERROR;
4521 FND_MSG_PUB.count_and_get(
4522 p_encoded => FND_API.g_false
4523 ,p_count => x_msg_count
4524 ,p_data => x_msg_data
4525 );
4526 WHEN OTHERS THEN
4527 x_status := FND_API.G_RET_STS_ERROR;
4528 IF (x_msg_data IS NOT NULL) THEN
4529 x_msg_data := x_msg_data||' -> INV_EBI_ITEM_HELPER.validate_get_item_request ';
4530 ELSE
4531 x_msg_data := SQLERRM||' INV_EBI_ITEM_HELPER.validate_get_item_request ';
4532 END IF;
4533 END validate_get_item_request;
4534 /************************************************************************************
4535 -- API name : get_uda_attributes
4536 -- Type : Public
4537 -- Function :
4538 -- Bug 7240247
4539 ************************************************************************************/
4540
4541 PROCEDURE get_uda_attributes(
4542 p_classification_id IN NUMBER,
4543 p_attr_group_type IN VARCHAR2,
4544 p_application_id IN NUMBER,
4545 p_attr_grp_id_tbl IN FND_TABLE_OF_NUMBER,
4546 p_data_level IN VARCHAR2,
4547 p_revision_id IN NUMBER,
4548 p_object_name IN VARCHAR2,
4549 p_pk_data IN EGO_COL_NAME_VALUE_PAIR_ARRAY,
4550 x_uda_obj OUT NOCOPY inv_ebi_uda_input_obj,
4551 x_uda_output_obj OUT NOCOPY inv_ebi_eco_output_obj
4552 ) IS
4553 l_attr_grp_req_tbl ego_attr_group_request_table;
4554 l_attr_grp_req_obj ego_attr_group_request_obj;
4555 l_attr_grp ego_user_attr_row_table;
4556 l_attr ego_user_attr_data_table;
4557 l_count NUMBER := 0;
4558 l_new_attr_in_tbl VARCHAR2(1) := fnd_api.g_false;
4559 l_uda_out inv_ebi_uda_output_obj;
4560 l_output_status inv_ebi_output_status;
4561 l_attr_group_name VARCHAR2(30);
4562 l_data_level VARCHAR2(20) := NULL;
4563 l_data_level1 VARCHAR2(20) := NULL;
4564 l_is_item_level VARCHAR2(1) := fnd_api.g_false;
4565 l_is_item_revision_level VARCHAR2(1) := fnd_api.g_false;
4566
4567 --Commented for bug 10397048
4568 /*CURSOR c_attr_cursor(
4569 p_classification_id IN NUMBER,
4570 p_attr_group_type IN VARCHAR2,
4571 p_application_id IN NUMBER,
4572 p_attr_group_name IN VARCHAR2,
4573 p_data_level_int_name IN VARCHAR2
4574 ) IS
4575 SELECT
4576 att.attr_name,
4577 ass.attr_group_id,
4578 ass.data_level_int_name
4579 FROM
4580 ego_obj_attr_grp_assocs_v ass,
4581 ego_attrs_v att
4582 WHERE ass.classification_code = TO_CHAR(p_classification_id)
4583 AND ass.attr_group_type = att.attr_group_type
4584 AND att.attr_group_type = p_attr_group_type
4585 AND ass.application_id = att.application_id
4586 AND att.application_id = p_application_id
4587 AND ass.attr_group_name = att.attr_group_name
4588 AND att.attr_group_name = p_attr_group_name
4589 AND ass.data_level_int_name = p_data_level_int_name;*/
4590
4591 --Above cursor query is changed for bug 10379048
4592 CURSOR c_attr_cursor(
4593 p_attr_group_type IN VARCHAR2,
4594 p_application_id IN NUMBER,
4595 p_attr_group_name IN VARCHAR2
4596 ) IS
4597 SELECT
4598 att.attr_name
4599 FROM
4600 ego_attrs_v att
4601 WHERE
4602 att.attr_group_type = p_attr_group_type
4603 AND att.application_id = p_application_id
4604 AND att.attr_group_name = p_attr_group_name;
4605
4606 -- Added for bug 10397048
4607 CURSOR c_data_level(
4608 p_item_catalog_group_id NUMBER,
4609 p_attr_grp_id NUMBER) IS
4610
4611 SELECT data_level_int_name
4612 FROM ego_obj_attr_grp_assocs_v
4613 WHERE attr_group_id = p_attr_grp_id
4614 AND classification_code IN( SELECT item_catalog_group_id
4615 FROM mtl_item_catalog_groups_kfv
4616 CONNECT BY PRIOR parent_catalog_group_id = item_catalog_group_id
4617 START WITH item_catalog_group_id = p_item_catalog_group_id
4618 );
4619
4620 BEGIN
4621 l_uda_out := inv_ebi_uda_output_obj(NULL,NULL);
4622 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
4623 x_uda_output_obj := inv_ebi_eco_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,l_uda_out);
4624
4625 l_attr_grp_req_tbl := EGO_ATTR_GROUP_REQUEST_TABLE();
4626
4627 l_count := 1;
4628
4629
4630 FOR i IN 1..p_attr_grp_id_tbl.COUNT LOOP
4631
4632 IF(p_attr_group_type = INV_EBI_UTIL.G_EGO_ITEMMGMT_GROUP) THEN
4633
4634 -- Commented out for bug 10397048
4635 /*SELECT data_level_int_name INTO l_data_level
4636 FROM ego_obj_attr_grp_assocs_v
4637 WHERE attr_group_id = p_attr_grp_id_tbl(i)
4638 AND classification_code = TO_CHAR(p_classification_id);*/
4639
4640 -- An attribute group can have multiple data levels,but item revision level is mutually excelusive.
4641 -- Currently we support only item and item revision level udas.
4642 -- Start of Bug 10397048
4643 FOR cur_data_level IN c_data_level(
4644 p_classification_id,
4645 p_attr_grp_id_tbl(i)
4646 )
4647 LOOP
4648
4649 IF(cur_data_level.data_level_int_name = INV_EBI_ITEM_PUB.G_DATA_LEVEL_ITEM) THEN
4650
4651 l_is_item_level := fnd_api.g_true;
4652 l_data_level := cur_data_level.data_level_int_name;
4653
4654 ELSIF
4655 -- Item Rev level is mutually exclusive with all other levels
4656 (cur_data_level.data_level_int_name = INV_EBI_ITEM_PUB.G_DATA_LEVEL_ITEM_REV) THEN
4657 l_is_item_revision_level := fnd_api.g_true;
4658 l_data_level := cur_data_level.data_level_int_name;
4659 END IF;
4660
4661 END LOOP;
4662 -- End of Bug 10397048
4663 ELSE
4664
4665 l_data_level := p_data_level;
4666
4667 END IF;
4668
4669 --Commented the query for bug 10397048
4670 /*SELECT attr_group_name INTO l_attr_group_name
4671 FROM ego_obj_attr_grp_assocs_v
4672 WHERE
4673 attr_group_id = p_attr_grp_id_tbl(i) AND
4674 classification_code = TO_CHAR(p_classification_id) AND
4675 data_level_int_name = l_data_level;*/
4676
4677 --Above query is changed for bug 10397048
4678 SELECT attr_group_name INTO l_attr_group_name
4679 FROM ego_attr_groups_v
4680 WHERE attr_group_id = p_attr_grp_id_tbl(i) AND
4681 application_id = p_application_id AND
4682 attr_group_type = p_attr_group_type;
4683
4684 FOR attr_cursor IN c_attr_cursor(
4685 p_attr_group_type => p_attr_group_type,
4686 p_application_id => p_application_id,
4687 p_attr_group_name => l_attr_group_name
4688 )
4689 LOOP
4690 l_new_attr_in_tbl := FND_API.G_FALSE;
4691
4692 IF(l_count <>1 ) THEN
4693 FOR ctr1 IN l_attr_grp_req_tbl.FIRST..l_attr_grp_req_tbl.LAST LOOP
4694 IF (l_attr_grp_req_tbl(ctr1).attr_group_id = p_attr_grp_id_tbl(i) AND
4695 l_attr_grp_req_tbl(ctr1).data_level = l_data_level ) THEN
4696 l_attr_grp_req_tbl(ctr1).ATTR_NAME_LIST := l_attr_grp_req_tbl(ctr1).ATTR_NAME_LIST || ',' || attr_cursor.attr_name;
4697 l_new_attr_in_tbl := FND_API.G_TRUE;
4698 END IF;
4699 END LOOP;
4700 END IF;
4701
4702 IF l_new_attr_in_tbl <> FND_API.G_TRUE THEN
4703
4704 l_attr_grp_req_tbl.extend();
4705
4706 IF(l_data_level = INV_EBI_ITEM_PUB.g_data_level_item_rev) THEN
4707 l_data_level1 := p_revision_id;
4708 ELSE
4709 l_data_level1 := NULL;
4710 END IF;
4711
4712
4713 l_attr_grp_req_tbl(l_count) := EGO_ATTR_GROUP_REQUEST_OBJ(p_attr_grp_id_tbl(i)
4714 ,NULL
4715 ,NULL
4716 ,NULL
4717 ,l_data_level
4718 ,l_data_level1
4719 ,NULL
4720 ,NULL
4721 ,NULL
4722 ,NULL
4723 ,attr_cursor.attr_name);
4724
4725 l_count := l_count + 1;
4726 END IF;
4727 END LOOP;
4728 END LOOP;
4729 EGO_USER_ATTRS_DATA_PUB.Get_User_Attrs_Data(
4730 p_api_version => 1.0
4731 ,p_object_name => p_object_name
4732 ,p_pk_column_name_value_pairs => p_pk_data
4733 ,p_attr_group_request_table => l_attr_grp_req_tbl
4734 ,x_attributes_row_table => l_attr_grp
4735 ,x_attributes_data_table => l_attr
4736 ,x_return_status => x_uda_output_obj.output_status.return_status
4737 ,x_errorcode => x_uda_output_obj.uda_output.errorcode
4738 ,x_msg_count => x_uda_output_obj.output_status.msg_count
4739 ,x_msg_data => x_uda_output_obj.output_status.msg_data
4740 );
4741 IF(x_uda_output_obj.output_status.return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4742 RAISE FND_API.g_exc_unexpected_error;
4743 END IF;
4744
4745 INV_EBI_UTIL.transform_attr_rowdata_uda(
4746 p_attributes_row_table => l_attr_grp
4747 ,p_attributes_data_table => l_attr
4748 ,x_uda_input_obj => x_uda_obj
4749 ,x_return_status => x_uda_output_obj.output_status.return_status
4750 ,x_msg_count => x_uda_output_obj.output_status.msg_count
4751 ,x_msg_data => x_uda_output_obj.output_status.msg_data
4752
4753 );
4754 IF(x_uda_output_obj.output_status.return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4755 RAISE FND_API.g_exc_unexpected_error;
4756 END IF;
4757
4758
4759 EXCEPTION
4760 WHEN FND_API.g_exc_unexpected_error THEN
4761
4762 x_uda_output_obj.output_status.return_status := FND_API.g_ret_sts_unexp_error;
4763 IF(c_attr_cursor % ISOPEN) THEN
4764 CLOSE c_attr_cursor;
4765 END IF;
4766 IF(c_data_level % ISOPEN) THEN
4767 CLOSE c_data_level;
4768 END IF;
4769 IF(x_uda_output_obj.output_status.msg_data IS NULL) THEN
4770 fnd_msg_pub.count_and_get(
4771 p_encoded => FND_API.g_false
4772 ,p_count => x_uda_output_obj.output_status.msg_count
4773 ,p_data => x_uda_output_obj.output_status.msg_data
4774 );
4775 END IF;
4776
4777 WHEN OTHERS THEN
4778
4779 x_uda_output_obj.output_status.return_status := FND_API.g_ret_sts_unexp_error;
4780 IF(c_attr_cursor % ISOPEN) THEN
4781 CLOSE c_attr_cursor;
4782 END IF;
4783 IF(c_data_level % ISOPEN) THEN
4784 CLOSE c_data_level;
4785 END IF;
4786 IF (x_uda_output_obj.output_status.msg_data IS NOT NULL) THEN
4787 x_uda_output_obj.output_status.msg_data := x_uda_output_obj.output_status.msg_data||' ->INV_EBI_CHANGE_ORDER_HELPER.get_uda_attributes ';
4788 ELSE
4789 x_uda_output_obj.output_status.msg_data := SQLERRM||'INV_EBI_CHANGE_ORDER_HELPER.get_uda_attributes ';
4790 END IF;
4791 END get_uda_attributes;
4792
4793
4794 /************************************************************************************
4795 -- API name : get_item_uda
4796 -- Type : Private
4797 -- Function :
4798 -- This API is used to retrieve the uda's of the requested Items.
4799 -- Bug 7240247
4800 ************************************************************************************/
4801
4802 PROCEDURE get_item_uda(
4803 p_inventory_item_id IN NUMBER,
4804 p_organization_id IN NUMBER,
4805 p_item_classification_id IN NUMBER,
4806 p_revision_id IN NUMBER,
4807 x_item_uda OUT NOCOPY inv_ebi_uda_input_obj,
4808 x_return_status OUT NOCOPY VARCHAR2,
4809 x_msg_count OUT NOCOPY NUMBER,
4810 x_msg_data OUT NOCOPY VARCHAR2
4811 ) IS
4812
4813 l_count NUMBER :=0;
4814 l_item_uda_count NUMBER :=0;
4815 l_attr_group_count NUMBER :=0;
4816 l_application_id NUMBER;
4817 l_attr_group_id_tbl FND_TABLE_OF_NUMBER;
4818 l_pkdata EGO_COL_NAME_VALUE_PAIR_ARRAY;
4819 l_uda_output_obj inv_ebi_eco_output_obj;
4820 l_output_status inv_ebi_output_status;
4821
4822 -- Changed the Cursor query for Bug 10397048 to support inherited attribute groups of an icc
4823 CURSOR c_attr_group_id IS
4824 SELECT DISTINCT ems.attr_group_id
4825 FROM
4826 ego_mtl_sy_items_ext_vl ems,
4827 ego_obj_attr_grp_assocs_v ass
4828 WHERE
4829 ems.inventory_item_id = p_inventory_item_id AND
4830 ems.organization_id = p_organization_id AND
4831 ems.item_catalog_group_id IN ( SELECT item_catalog_group_id
4832 FROM mtl_item_catalog_groups_kfv
4833 CONNECT BY PRIOR parent_catalog_group_id = item_catalog_group_id
4834 START WITH item_catalog_group_id = p_item_classification_id
4835 ) AND
4836 ems.attr_group_id = ass.attr_group_id;
4837
4838 BEGIN
4839
4840 l_output_status := inv_ebi_output_status(fnd_api.g_ret_sts_success,NULL,NULL,NULL);
4841 l_uda_output_obj := inv_ebi_eco_output_obj(NULL,NULL,NULL,NULL,l_output_status,NULL,NULL);
4842
4843
4844 IF( p_inventory_item_id IS NOT NULL AND
4845 p_organization_id IS NOT NULL AND
4846 p_item_classification_id IS NOT NULL) THEN
4847
4848 SELECT COUNT(1) INTO l_count
4849 FROM mtl_system_items_b
4850 WHERE
4851 inventory_item_id = p_inventory_item_id AND
4852 organization_id = p_organization_id AND
4853 item_catalog_group_id = p_item_classification_id;
4854
4855 END IF;
4856
4857 IF(l_count > 0) THEN
4858
4859 IF c_attr_group_id%ISOPEN THEN
4860 CLOSE c_attr_group_id;
4861 END IF;
4862
4863 OPEN c_attr_group_id ;
4864 FETCH c_attr_group_id BULK COLLECT INTO l_attr_group_id_tbl ;
4865 CLOSE c_attr_group_id;
4866
4867
4868 IF(l_attr_group_id_tbl IS NOT NULL AND l_attr_group_id_tbl.COUNT > 0) THEN
4869
4870 l_pkdata := EGO_COL_NAME_VALUE_PAIR_ARRAY();
4871 l_pkdata.extend(2);
4872 l_pkdata(1) := EGO_COL_NAME_VALUE_PAIR_OBJ('INVENTORY_ITEM_ID',p_inventory_item_id);
4873 l_pkdata(2) := EGO_COL_NAME_VALUE_PAIR_OBJ('ORGANIZATION_ID',p_organization_id);
4874
4875 l_application_id:= INV_EBI_UTIL.get_application_id(
4876 p_application_short_name => 'EGO'
4877 );
4878
4879 IF(l_application_id IS NULL ) THEN
4880
4881 FND_MESSAGE.set_name('INV','INV_EBI_APP_INVALID');
4882 FND_MESSAGE.set_token('COL_VALUE', 'EGO');
4883 FND_MSG_PUB.add;
4884 RAISE FND_API.g_exc_error;
4885 END IF;
4886
4887 get_uda_attributes(
4888 p_classification_id => p_item_classification_id,
4889 p_attr_group_type => INV_EBI_UTIL.G_EGO_ITEMMGMT_GROUP,
4890 p_application_id => l_application_id,
4891 p_attr_grp_id_tbl => l_attr_group_id_tbl,
4892 p_data_level => NULL,
4893 p_revision_id => p_revision_id,
4894 p_object_name => INV_EBI_UTIL.G_EGO_ITEM,
4895 p_pk_data => l_pkdata,
4896 x_uda_obj => x_item_uda,
4897 x_uda_output_obj => l_uda_output_obj
4898 );
4899
4900 IF(l_uda_output_obj.output_status.return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4901 x_msg_data := l_uda_output_obj.output_status.msg_data ;
4902 RAISE FND_API.g_exc_unexpected_error;
4903 END IF;
4904 END IF;
4905 END IF;
4906
4907 EXCEPTION
4908 WHEN FND_API.g_exc_unexpected_error THEN
4909
4910 IF c_attr_group_id%ISOPEN THEN
4911 CLOSE c_attr_group_id;
4912 END IF;
4913
4914 x_return_status := FND_API.g_ret_sts_unexp_error;
4915 IF(x_msg_data IS NULL) THEN
4916 fnd_msg_pub.count_and_get(
4917 p_encoded => FND_API.g_false
4918 ,p_count => x_msg_count
4919 ,p_data => x_msg_data
4920 );
4921 END IF;
4922 WHEN OTHERS THEN
4923
4924 IF c_attr_group_id%ISOPEN THEN
4925 CLOSE c_attr_group_id;
4926 END IF;
4927
4928 x_return_status := FND_API.g_ret_sts_unexp_error;
4929 IF (x_msg_data IS NOT NULL) THEN
4930 x_msg_data := x_msg_data||' ->INV_EBI_ITEM_HELPER.get_item_uda ';
4931 ELSE
4932 x_msg_data := SQLERRM||'INV_EBI_ITEM_HELPER.get_item_uda';
4933 END IF;
4934 END get_item_uda;
4935 /************************************************************************************
4936 -- API name : get_item_attributes
4937 -- Type : Public
4938 -- Function :
4939 -- This API is used to retrieve the operational attributes for the requested Items.
4940 --
4941 ************************************************************************************/
4942 PROCEDURE get_item_attributes(
4943 p_get_item_inp_obj IN inv_ebi_get_item_input,
4944 x_item_tbl_obj OUT NOCOPY inv_ebi_item_attr_tbl_obj,
4945 x_return_status OUT NOCOPY VARCHAR2,
4946 x_msg_count OUT NOCOPY NUMBER,
4947 x_msg_data OUT NOCOPY VARCHAR2
4948 )
4949 IS
4950 l_item_phy_obj inv_ebi_item_physical_obj;
4951 l_item_inv_obj inv_ebi_item_inventory_obj;
4952 l_item_pur_obj inv_ebi_item_purchasing_obj;
4953 l_item_recving_obj inv_ebi_item_receiving_obj;
4954 l_item_gplan_obj inv_ebi_item_gplanning_obj;
4955 l_item_mrp_obj inv_ebi_item_mrp_obj;
4956 l_item_order_obj inv_ebi_item_order_obj;
4957 l_item_service_obj inv_ebi_item_service_obj;
4958 l_item_bom_obj inv_ebi_item_bom_obj;
4959 l_item_costing_obj inv_ebi_item_costing_obj;
4960 l_item_lead_time_obj inv_ebi_item_lead_time_obj;
4961 l_item_wip_obj inv_ebi_item_wip_obj;
4962 l_item_invoice_obj inv_ebi_item_invoice_obj;
4963 l_item_web_opiton inv_ebi_item_web_option_obj;
4964 l_item_asset_obj inv_ebi_item_asset_obj;
4965 l_item_process_obj inv_ebi_item_processmfg_obj;
4966 l_item_mfr_part_obj inv_ebi_manufacturer_part_obj;
4967 l_item_core_obj inv_ebi_item_main_obj;
4968 l_item_custom_obj inv_ebi_item_custom_obj;
4969 l_uda_obj inv_ebi_uda_input_obj;
4970 l_item_obj inv_ebi_item_obj;
4971 l_getassetmgmtattrs VARCHAR2(1) := FND_API.G_FALSE;
4972 l_getbomattrs VARCHAR2(1) := FND_API.G_FALSE;
4973 l_getcostingattrs VARCHAR2(1) := FND_API.G_FALSE;
4974 l_getgeneralplanningattrs VARCHAR2(1) := FND_API.G_FALSE;
4975 l_getinventoryattrs VARCHAR2(1) := FND_API.G_FALSE;
4976 l_getinvoicingattrs VARCHAR2(1) := FND_API.G_FALSE;
4977 l_getleadtimeattrs VARCHAR2(1) := FND_API.G_FALSE;
4978 l_getmpsmrpplanningattrs VARCHAR2(1) := FND_API.G_FALSE;
4979 l_getorderattrs VARCHAR2(1) := FND_API.G_FALSE;
4980 l_getphysicalattrs VARCHAR2(1) := FND_API.G_FALSE;
4981 l_getprocessattrs VARCHAR2(1) := FND_API.G_FALSE;
4982 l_getpurchasingattrs VARCHAR2(1) := FND_API.G_FALSE;
4983 l_getrecevingattrs VARCHAR2(1) := FND_API.G_FALSE;
4984 l_getserviceattrs VARCHAR2(1) := FND_API.G_FALSE;
4985 l_getweboptionattrs VARCHAR2(1) := FND_API.G_FALSE;
4986 l_getwipattrs VARCHAR2(1) := FND_API.G_FALSE;
4987 l_getitemoprattrs VARCHAR2(1) := FND_API.G_FALSE;
4988 l_org_id NUMBER;
4989 l_item_id NUMBER;
4990 l_msg_data VARCHAR2(100);
4991 l_msg_count NUMBER;
4992 l_item_attr_tbl inv_ebi_item_attr_tbl;
4993 l_mfr_part_table inv_ebi_mfg_part_obj_tbl_type;
4994 l_return_status VARCHAR2(1);
4995 l_msg VARCHAR2(100);
4996 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl;
4997 ctr NUMBER;
4998 l_error_code NUMBER;
4999 l_default_cost_group_id VARCHAR2(2000) :=NULL;
5000 l_default_cost_type_id VARCHAR2(2000) :=NULL;
5001
5002 CURSOR c_mfr_part_cursor(p_item_id IN NUMBER,p_org_id IN NUMBER) IS
5003 SELECT
5004 manufacturer_id,mfg_part_num
5005 FROM mtl_mfg_part_numbers
5006 WHERE inventory_item_id = p_item_id AND organization_id=p_org_id;
5007
5008 BEGIN
5009 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.get_item_attributes');
5010 l_item_attr_tbl := inv_ebi_item_attr_tbl();
5011 x_return_status := FND_API.G_RET_STS_SUCCESS;
5012 IF p_get_item_inp_obj.p_config_flags IS NULL THEN
5013 l_getitemoprattrs := FND_API.G_TRUE;
5014 ELSE
5015 FOR i IN p_get_item_inp_obj.p_config_flags.FIRST..p_get_item_inp_obj.p_config_flags.LAST
5016 LOOP
5017 CASE p_get_item_inp_obj.p_config_flags(i).param_name
5018 WHEN G_ASSET_MGMT_ATTRS THEN
5019 l_getassetmgmtattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5020 WHEN G_BOM_ATTRS THEN
5021 l_getbomattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5022 WHEN G_COSTING_ATTRS THEN
5023 l_getcostingattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5024 WHEN G_GPLAN_ATTRS THEN
5025 l_getgeneralplanningattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5026 WHEN G_INVENTORY_ATTRS THEN
5027 l_getinventoryattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5028 WHEN G_INVOICE_ATTRS THEN
5029 l_getinvoicingattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5030 WHEN G_LEAD_TIME_ATTRS THEN
5031 l_getleadtimeattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5032 WHEN G_MPSMRP_ATTRS THEN
5033 l_getmpsmrpplanningattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5034 WHEN G_ORDER_ATTRS THEN
5035 l_getorderattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5036 WHEN G_PHYSICAL_ATTRS THEN
5037 l_getphysicalattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5038 WHEN G_PROCESS_ATTRS THEN
5039 l_getprocessattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5040 WHEN G_PURCHASING_ATTRS THEN
5041 l_getpurchasingattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5042 WHEN G_RECEVING_ATTRS THEN
5043 l_getrecevingattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5044 WHEN G_SERVICE_ATTRS THEN
5045 l_getserviceattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5046 WHEN G_WEB_OPTION_ATTRS THEN
5047 l_getweboptionattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5048 WHEN G_WIP_ATTRS THEN
5049 l_getwipattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5050 WHEN G_ITEM_ATTRS THEN
5051 l_getitemoprattrs := p_get_item_inp_obj.p_config_flags(i).param_value;
5052 WHEN G_DEFAULT_COST_GROUP_ID THEN
5053 l_default_cost_group_id := p_get_item_inp_obj.p_config_flags(i).param_value;
5054 WHEN G_DEFAULT_COST_TYPE_ID THEN
5055 l_default_cost_type_id := p_get_item_inp_obj.p_config_flags(i).param_value;
5056 ELSE
5057 NULL;
5058 END CASE;
5059 END LOOP;
5060 END IF;
5061 FOR i IN p_get_item_inp_obj.p_get_opr_attrs_tbl_type.FIRST..p_get_item_inp_obj.p_get_opr_attrs_tbl_type.LAST
5062 LOOP
5063 BEGIN
5064 l_item_attr_tbl.extend();
5065 l_mfr_part_table := inv_ebi_mfg_part_obj_tbl_type();
5066 l_item_attr_tbl(i) := inv_ebi_get_item_output_obj(NULL,FND_API.G_RET_STS_SUCCESS,NULL,NULL);
5067 l_item_core_obj := inv_ebi_item_main_obj(
5068 NULL,NULL,NULL,NULL,NULL,NULL,
5069 NULL,NULL,NULL,NULL,NULL,NULL,
5070 NULL,NULL,NULL,NULL,NULL,NULL,
5071 NULL,NULL,NULL,NULL,NULL,NULL,
5072 NULL,NULL,NULL,NULL,NULL,NULL,
5073 NULL,NULL,NULL,NULL,NULL,NULL,
5074 NULL,NULL,NULL,NULL,NULL,NULL,
5075 NULL,NULL,NULL,NULL,NULL,NULL,
5076 NULL,NULL,NULL,NULL,NULL,NULL,
5077 NULL,NULL,NULL,NULL,NULL,NULL,
5078 NULL,NULL,NULL,NULL,NULL,NULL,
5079 NULL,NULL,NULL,NULL,NULL,NULL,
5080 NULL,NULL,NULL,NULL,NULL,NULL,
5081 NULL,NULL,NULL,NULL,NULL,
5082 NULL -- Added for Bug 13370136 -- ramukher
5083 );
5084 l_item_custom_obj := inv_ebi_item_custom_obj(NULL,NULL,NULL,NULL,NULL,NULL,
5085 NULL,NULL,NULL,NULL,NULL,NULL,
5086 NULL,NULL,NULL,NULL,NULL,NULL,
5087 NULL,NULL,NULL,NULL,NULL,NULL,
5088 NULL,NULL,NULL,NULL,NULL,NULL,
5089 NULL,NULL,NULL,NULL,NULL,NULL,
5090 NULL,NULL,NULL,NULL,NULL,NULL,
5091 NULL,NULL,NULL,NULL,NULL,NULL,
5092 NULL,NULL,NULL,NULL,NULL,NULL,
5093 NULL,NULL,NULL,NULL);
5094
5095
5096 l_item_phy_obj := inv_ebi_item_physical_obj(
5097 NULL,NULL,NULL,NULL,NULL,
5098 NULL,NULL,NULL,NULL,NULL,
5099 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5100 );
5101 l_item_inv_obj := inv_ebi_item_inventory_obj(
5102 NULL,NULL,NULL,NULL,NULL,
5103 NULL,NULL,NULL,NULL,NULL,
5104 NULL,NULL,NULL,NULL,NULL,
5105 NULL,NULL,NULL,NULL,NULL,
5106 NULL,NULL,NULL,NULL,NULL,
5107 NULL,NULL,NULL,NULL,NULL,
5108 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5109 );
5110 l_item_pur_obj := inv_ebi_item_purchasing_obj(
5111 NULL,NULL,NULL,NULL,NULL,
5112 NULL,NULL,NULL,NULL,NULL,NULL,
5113 NULL,NULL,NULL,NULL,NULL,NULL,
5114 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5115 );
5116 l_item_recving_obj := inv_ebi_item_receiving_obj(
5117 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5118 );
5119 l_item_gplan_obj := inv_ebi_item_gplanning_obj(
5120 NULL,NULL,NULL,NULL,NULL,
5121 NULL,NULL,NULL,NULL,NULL,NULL,
5122 NULL,NULL,NULL,NULL,NULL,NULL,
5123 NULL,NULL,NULL,NULL,NULL,NULL,
5124 NULL,NULL,NULL,NULL,NULL,NULL
5125 );
5126 l_item_mrp_obj := inv_ebi_item_mrp_obj(
5127 NULL,NULL,NULL,NULL,NULL,NULL,NULL,
5128 NULL,NULL,NULL,NULL,NULL,NULL,NULL,
5129 NULL,NULL,NULL,NULL,NULL,NULL,NULL,
5130 NULL,NULL,NULL,NULL,NULL,NULL,NULL,
5131 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5132 );
5133 l_item_order_obj := inv_ebi_item_order_obj(
5134 NULL,NULL,NULL,NULL,NULL,NULL,
5135 NULL,NULL,NULL,NULL,NULL,NULL,NULL,
5136 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5137 );
5138 l_item_service_obj := inv_ebi_item_service_obj(
5139 NULL,NULL,NULL,NULL,NULL,NULL,
5140 NULL,NULL,NULL,NULL,NULL
5141 );
5142 l_item_bom_obj := inv_ebi_item_bom_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5143 l_item_costing_obj := inv_ebi_item_costing_obj(
5144 NULL,NULL,NULL,NULL,NULL,NULL
5145 );
5146 l_item_lead_time_obj := inv_ebi_item_lead_time_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5147 l_item_wip_obj := inv_ebi_item_wip_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5148 l_item_invoice_obj := inv_ebi_item_invoice_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5149 l_item_web_opiton := inv_ebi_item_web_option_obj(NULL,NULL,NULL,NULL);
5150 l_item_asset_obj := inv_ebi_item_asset_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5151 l_item_process_obj := inv_ebi_item_processmfg_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5152 l_uda_obj := inv_ebi_uda_input_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5153 INV_EBI_UTIL.debug_line('STEP 20: BEFORE CALLING INV_EBI_ITEM_HELPER.validate_get_item_request');
5154 validate_get_item_request(
5155 p_get_opr_attrs_rec => p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i)
5156 ,x_status => l_return_status
5157 ,x_msg_count => l_item_attr_tbl(i).msg_count
5158 ,x_msg_data => l_item_attr_tbl(i).msg_data
5159 );
5160 INV_EBI_UTIL.debug_line('STEP 30: AFTER CALLING INV_EBI_ITEM_HELPER.validate_get_item_request STATUS: ' ||l_return_status);
5161 l_org_id := p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).organization_id;
5162 l_item_id := p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).item_id;
5163 IF(l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
5164 RAISE FND_API.G_EXC_ERROR;
5165 END IF;
5166 IF((l_org_id IS NULL) )THEN
5167 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5168 l_pk_col_name_val_pairs.EXTEND(1);
5169 l_pk_col_name_val_pairs(1).name := 'organization_code';
5170 l_pk_col_name_val_pairs(1).value := p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).organization_code;
5171 l_org_id := INV_EBI_ITEM_HELPER.value_to_id (
5172 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5173 ,p_entity_name=> INV_EBI_ITEM_HELPER.G_ORGANIZATION
5174 );
5175 IF (l_org_id IS NULL) THEN
5176 FND_MESSAGE.set_name('INV','INV_EBI_ORG_CODE_INVALID');
5177 FND_MESSAGE.set_token('COL_VALUE', p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).organization_code);
5178 FND_MSG_PUB.add;
5179 RAISE FND_API.G_EXC_ERROR;
5180 END IF;
5181 END IF;
5182 IF( l_item_id IS NULL) THEN
5183 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5184 l_pk_col_name_val_pairs.EXTEND(2);
5185 l_pk_col_name_val_pairs(1).name := 'organization_id';
5186 l_pk_col_name_val_pairs(1).value := l_org_id;
5187 l_pk_col_name_val_pairs(2).name := 'concatenated_segments';
5188 l_pk_col_name_val_pairs(2).value := p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).item_name;
5189 l_item_id := INV_EBI_ITEM_HELPER.value_to_id (
5190 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5191 ,p_entity_name=> INV_EBI_ITEM_HELPER.G_INVENTORY_ITEM
5192 );
5193 IF (l_item_id IS NULL ) THEN
5194 FND_MESSAGE.set_name('INV','INV_EBI_ITEM_INVALID');
5195 FND_MESSAGE.set_token('COL_VALUE', p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).item_name);
5196 FND_MSG_PUB.add;
5197 RAISE FND_API.G_EXC_ERROR;
5198 END IF;
5199 END IF;
5200 SELECT inventory_item_id
5201 ,organization_id
5202 ,description
5203 ,item_catalog_group_id
5204 ,end_date_active
5205 ,start_date_active
5206 ,primary_uom_code
5207 ,tracking_quantity_ind
5208 ,ont_pricing_qty_source
5209 ,secondary_uom_code
5210 ,secondary_default_ind
5211 ,dual_uom_deviation_high
5212 ,dual_uom_deviation_low
5213 ,allowed_units_lookup_code
5214 ,item_type
5215 ,description
5216 ,inventory_item_status_code
5217 ,primary_unit_of_measure
5218 ,lifecycle_id
5219 ,current_phase_id
5220 ,eam_item_type
5221 ,eam_activity_type_code
5222 ,eam_activity_cause_code
5223 ,eam_activity_source_code
5224 ,eam_act_notification_flag
5225 ,eam_act_shutdown_status
5226 ,bom_enabled_flag
5227 ,bom_item_type
5228 ,base_item_id
5229 ,auto_created_config_flag
5230 ,effectivity_control
5231 ,config_model_type
5232 ,config_orgs
5233 ,config_match
5234 ,eng_item_flag
5235 ,costing_enabled_flag
5236 ,inventory_asset_flag
5237 ,default_include_in_rollup_flag
5238 ,cost_of_sales_account
5239 ,std_lot_size
5240 ,inventory_planning_code
5241 ,planner_code
5242 ,planning_make_buy_code
5243 ,min_minmax_quantity
5244 ,max_minmax_quantity
5245 ,minimum_order_quantity
5246 ,maximum_order_quantity
5247 ,order_cost
5248 ,carrying_cost
5249 ,source_type
5250 ,source_organization_id
5251 ,source_subinventory
5252 ,mrp_safety_stock_code
5253 ,safety_stock_bucket_days
5254 ,mrp_safety_stock_percent
5255 ,fixed_order_quantity
5256 ,fixed_days_supply
5257 ,fixed_lot_multiplier
5258 ,vmi_minimum_units
5259 ,vmi_minimum_days
5260 ,vmi_maximum_units
5261 ,vmi_maximum_days
5262 ,vmi_fixed_order_quantity
5263 ,so_authorization_flag
5264 ,consigned_flag
5265 ,asn_autoexpire_flag
5266 ,vmi_forecast_type
5267 ,forecast_horizon
5268 ,inventory_item_flag
5269 ,stock_enabled_flag
5270 ,mtl_transactions_enabled_flag
5271 ,check_shortages_flag
5272 ,revision_qty_control_code
5273 ,reservable_type
5274 ,shelf_life_code
5275 ,shelf_life_days
5276 ,cycle_count_enabled_flag
5277 ,negative_measurement_error
5278 ,positive_measurement_error
5279 ,lot_control_code
5280 ,auto_lot_alpha_prefix
5281 ,start_auto_lot_number
5282 ,serial_number_control_code
5283 ,auto_serial_alpha_prefix
5284 ,start_auto_serial_number
5285 ,location_control_code
5286 ,restrict_subinventories_code
5287 ,restrict_locators_code
5288 ,bulk_picked_flag
5289 ,lot_status_enabled
5290 ,serial_status_enabled
5291 ,lot_split_enabled
5292 ,lot_merge_enabled
5293 ,lot_translate_enabled
5294 ,lot_substitution_enabled
5295 ,invoiceable_item_flag
5296 ,invoice_enabled_flag
5297 ,accounting_rule_id
5298 ,invoicing_rule_id
5299 ,tax_code
5300 ,sales_account
5301 ,payment_terms_id
5302 ,preprocessing_lead_time
5303 ,full_lead_time
5304 ,postprocessing_lead_time
5305 ,fixed_lead_time
5306 ,variable_lead_time
5307 ,cum_manufacturing_lead_time
5308 ,cumulative_total_lead_time
5309 ,lead_time_lot_size
5310 ,mrp_planning_code
5311 ,ato_forecast_control
5312 ,planning_exception_set
5313 ,end_assembly_pegging_flag
5314 ,shrinkage_rate
5315 ,rounding_control_type
5316 ,acceptable_early_days
5317 ,repetitive_planning_flag
5318 ,overrun_percentage
5319 ,acceptable_rate_increase
5320 ,acceptable_rate_decrease
5321 ,mrp_calculate_atp_flag
5322 ,auto_reduce_mps
5323 ,planning_time_fence_code
5324 ,planning_time_fence_days
5325 ,demand_time_fence_code
5326 ,demand_time_fence_days
5327 ,release_time_fence_code
5328 ,release_time_fence_days
5329 ,substitution_window_code
5330 ,substitution_window_days
5331 ,exclude_from_budget_flag
5332 ,days_tgt_inv_supply
5333 ,days_tgt_inv_window
5334 ,days_max_inv_supply
5335 ,days_max_inv_window
5336 ,drp_planned_flag
5337 ,critical_component_flag
5338 ,continous_transfer
5339 ,convergence
5340 ,divergence
5341 ,customer_order_flag
5342 ,customer_order_enabled_flag
5343 ,shippable_item_flag
5344 ,internal_order_flag
5345 ,internal_order_enabled_flag
5346 ,so_transactions_flag
5347 ,pick_components_flag
5348 ,atp_flag
5349 ,replenish_to_order_flag
5350 ,atp_rule_id
5351 ,atp_components_flag
5352 ,ship_model_complete_flag
5353 ,picking_rule_id
5354 ,collateral_flag
5355 ,default_shipping_org
5356 ,returnable_flag
5357 ,return_inspection_requirement
5358 ,over_shipment_tolerance
5359 ,under_shipment_tolerance
5360 ,over_return_tolerance
5361 ,under_return_tolerance
5362 ,financing_allowed_flag
5363 ,default_so_source_type
5364 ,weight_uom_code
5365 ,unit_weight
5366 ,volume_uom_code
5367 ,unit_volume
5368 ,container_item_flag
5369 ,vehicle_item_flag
5370 ,container_type_code
5371 ,internal_volume
5372 ,maximum_load_weight
5373 ,minimum_fill_percent
5374 ,equipment_type
5375 ,event_flag
5376 ,electronic_flag
5377 ,downloadable_flag
5378 ,indivisible_flag
5379 ,dimension_uom_code
5380 ,unit_length
5381 ,unit_width
5382 ,unit_height
5383 ,recipe_enabled_flag
5384 ,process_costing_enabled_flag
5385 ,process_quality_enabled_flag
5386 ,process_execution_enabled_flag
5387 ,process_supply_subinventory
5388 ,process_supply_locator_id
5389 ,process_yield_subinventory
5390 ,process_yield_locator_id
5391 ,hazardous_material_flag
5392 ,cas_number
5393 ,purchasing_item_flag
5394 ,purchasing_enabled_flag
5395 ,must_use_approved_vendor_flag
5396 ,allow_item_desc_update_flag
5397 ,rfq_required_flag
5398 ,outside_operation_flag
5399 ,outside_operation_uom_type
5400 ,taxable_flag
5401 ,purchasing_tax_code
5402 ,receipt_required_flag
5403 ,inspection_required_flag
5404 ,buyer_id
5405 ,unit_of_issue
5406 ,receive_close_tolerance
5407 ,invoice_close_tolerance
5408 ,un_number_id
5409 ,hazard_class_id
5410 ,list_price_per_unit
5411 ,market_price
5412 ,price_tolerance_percent
5413 ,rounding_factor
5414 ,encumbrance_account
5415 ,expense_account
5416 ,asset_category_id
5417 ,receipt_days_exception_code
5418 ,days_early_receipt_allowed
5419 ,days_late_receipt_allowed
5420 ,allow_substitute_receipts_flag
5421 ,allow_unordered_receipts_flag
5422 ,allow_express_delivery_flag
5423 ,qty_rcv_exception_code
5424 ,qty_rcv_tolerance
5425 ,receiving_routing_id
5426 ,enforce_ship_to_location_code
5427 ,coverage_schedule_id
5428 ,service_duration
5429 ,service_duration_period_code
5430 ,serviceable_product_flag
5431 ,service_starting_delay
5432 ,material_billable_flag
5433 ,recovered_part_disp_code
5434 ,defect_tracking_on_flag
5435 ,comms_nl_trackable_flag
5436 ,asset_creation_code
5437 ,ib_item_instance_class
5438 ,orderable_on_web_flag
5439 ,back_orderable_flag
5440 ,web_status
5441 ,minimum_license_quantity
5442 ,build_in_wip_flag
5443 ,wip_supply_type
5444 ,wip_supply_subinventory
5445 ,wip_supply_locator_id
5446 ,overcompletion_tolerance_type
5447 ,overcompletion_tolerance_value
5448 ,inventory_carry_penalty
5449 ,operation_slack_penalty
5450 ,ATTRIBUTE_CATEGORY
5451 ,ATTRIBUTE1
5452 ,ATTRIBUTE2
5453 ,ATTRIBUTE3
5454 ,ATTRIBUTE4
5455 ,ATTRIBUTE5
5456 ,ATTRIBUTE6
5457 ,ATTRIBUTE7
5458 ,ATTRIBUTE8
5459 ,ATTRIBUTE9
5460 ,ATTRIBUTE10
5461 ,ATTRIBUTE11
5462 ,ATTRIBUTE12
5463 ,ATTRIBUTE13
5464 ,ATTRIBUTE14
5465 ,ATTRIBUTE15
5466 ,ATTRIBUTE16
5467 ,ATTRIBUTE17
5468 ,ATTRIBUTE18
5469 ,ATTRIBUTE19
5470 ,ATTRIBUTE20
5471 ,ATTRIBUTE21
5472 ,ATTRIBUTE22
5473 ,ATTRIBUTE23
5474 ,ATTRIBUTE24
5475 ,ATTRIBUTE25
5476 ,ATTRIBUTE26
5477 ,ATTRIBUTE27
5478 ,ATTRIBUTE28
5479 ,ATTRIBUTE29
5480 ,ATTRIBUTE30
5481 ,GLOBAL_ATTRIBUTE_CATEGORY
5482 ,GLOBAL_ATTRIBUTE1
5483 ,GLOBAL_ATTRIBUTE2
5484 ,GLOBAL_ATTRIBUTE3
5485 ,GLOBAL_ATTRIBUTE4
5486 ,GLOBAL_ATTRIBUTE5
5487 ,GLOBAL_ATTRIBUTE6
5488 ,GLOBAL_ATTRIBUTE7
5489 ,GLOBAL_ATTRIBUTE8
5490 ,GLOBAL_ATTRIBUTE9
5491 ,GLOBAL_ATTRIBUTE10
5492 INTO l_item_core_obj.inventory_item_id
5493 ,l_item_core_obj.organization_id
5494 ,l_item_core_obj.description
5495 ,l_item_core_obj.item_catalog_group_id
5496 ,l_item_core_obj.end_date_active
5497 ,l_item_core_obj.start_date_active
5498 ,l_item_core_obj.primary_uom_code
5499 ,l_item_core_obj.tracking_quantity_ind
5500 ,l_item_core_obj.ont_pricing_qty_source
5501 ,l_item_core_obj.secondary_uom_code
5502 ,l_item_core_obj.secondary_default_ind
5503 ,l_item_core_obj.dual_uom_deviation_high
5504 ,l_item_core_obj.dual_uom_deviation_low
5505 ,l_item_core_obj.allowed_units_lookup_code
5506 ,l_item_core_obj.item_type
5507 ,l_item_core_obj.description
5508 ,l_item_core_obj.inventory_item_status_code
5509 ,l_item_core_obj.primary_unit_of_measure
5510 ,l_item_core_obj.lifecycle_id
5511 ,l_item_core_obj.current_phase_id
5512 ,l_item_asset_obj.eam_item_type
5513 ,l_item_asset_obj.eam_activity_type_code
5514 ,l_item_asset_obj.eam_activity_cause_code
5515 ,l_item_asset_obj.eam_activity_source_code
5516 ,l_item_asset_obj.eam_act_notification_flag
5517 ,l_item_asset_obj.eam_act_shutdown_status
5518 ,l_item_bom_obj.bom_enabled_flag
5519 ,l_item_bom_obj.bom_item_type
5520 ,l_item_bom_obj.base_item_id
5521 ,l_item_bom_obj.auto_created_config_flag
5522 ,l_item_bom_obj.effectivity_control
5523 ,l_item_bom_obj.config_model_type
5524 ,l_item_bom_obj.config_orgs
5525 ,l_item_bom_obj.config_match
5526 ,l_item_bom_obj.eng_item_flag
5527 ,l_item_costing_obj.costing_enabled_flag
5528 ,l_item_costing_obj.inventory_asset_flag
5529 ,l_item_costing_obj.default_include_in_rollup_f
5530 ,l_item_costing_obj.cost_of_sales_account
5531 ,l_item_costing_obj.std_lot_size
5532 ,l_item_gplan_obj.inventory_planning_code
5533 ,l_item_gplan_obj.planner_code
5534 ,l_item_gplan_obj.planning_make_buy_code
5535 ,l_item_gplan_obj.min_minmax_quantity
5536 ,l_item_gplan_obj.max_minmax_quantity
5537 ,l_item_gplan_obj.minimum_order_quantity
5538 ,l_item_gplan_obj.maximum_order_quantity
5539 ,l_item_gplan_obj.order_cost
5540 ,l_item_gplan_obj.carrying_cost
5541 ,l_item_gplan_obj.source_type
5542 ,l_item_gplan_obj.source_organization_id
5543 ,l_item_gplan_obj.source_subinventory
5544 ,l_item_gplan_obj.mrp_safety_stock_code
5545 ,l_item_gplan_obj.safety_stock_bucket_days
5546 ,l_item_gplan_obj.mrp_safety_stock_percent
5547 ,l_item_gplan_obj.fixed_order_quantity
5548 ,l_item_gplan_obj.fixed_days_supply
5549 ,l_item_gplan_obj.fixed_lot_multiplier
5550 ,l_item_gplan_obj.vmi_minimum_units
5551 ,l_item_gplan_obj.vmi_minimum_days
5552 ,l_item_gplan_obj.vmi_maximum_units
5553 ,l_item_gplan_obj.vmi_maximum_days
5554 ,l_item_gplan_obj.vmi_fixed_order_quantity
5555 ,l_item_gplan_obj.so_authorization_flag
5556 ,l_item_gplan_obj.consigned_flag
5557 ,l_item_gplan_obj.asn_autoexpire_flag
5558 ,l_item_gplan_obj.vmi_forecast_type
5559 ,l_item_gplan_obj.forecast_horizon
5560 ,l_item_inv_obj.inventory_item_flag
5561 ,l_item_inv_obj.stock_enabled_flag
5562 ,l_item_inv_obj.mtl_transactions_enabled_fl
5563 ,l_item_inv_obj.check_shortages_flag
5564 ,l_item_inv_obj.revision_qty_control_code
5565 ,l_item_inv_obj.reservable_type
5566 ,l_item_inv_obj.shelf_life_code
5567 ,l_item_inv_obj.shelf_life_days
5568 ,l_item_inv_obj.cycle_count_enabled_flag
5569 ,l_item_inv_obj.negative_measurement_error
5570 ,l_item_inv_obj.positive_measurement_error
5571 ,l_item_inv_obj.lot_control_code
5572 ,l_item_inv_obj.auto_lot_alpha_prefix
5573 ,l_item_inv_obj.start_auto_lot_number
5574 ,l_item_inv_obj.serial_number_control_code
5575 ,l_item_inv_obj.auto_serial_alpha_prefix
5576 ,l_item_inv_obj.start_auto_serial_number
5577 ,l_item_inv_obj.location_control_code
5578 ,l_item_inv_obj.restrict_subinventories_cod
5579 ,l_item_inv_obj.restrict_locators_code
5580 ,l_item_inv_obj.bulk_picked_flag
5581 ,l_item_inv_obj.lot_status_enabled
5582 ,l_item_inv_obj.serial_status_enabled
5583 ,l_item_inv_obj.lot_split_enabled
5584 ,l_item_inv_obj.lot_merge_enabled
5585 ,l_item_inv_obj.lot_translate_enabled
5586 ,l_item_inv_obj.lot_substitution_enabled
5587 ,l_item_invoice_obj.invoiceable_item_flag
5588 ,l_item_invoice_obj.invoice_enabled_flag
5589 ,l_item_invoice_obj.accounting_rule_id
5590 ,l_item_invoice_obj.invoicing_rule_id
5591 ,l_item_invoice_obj.tax_code
5592 ,l_item_invoice_obj.sales_account
5593 ,l_item_invoice_obj.payment_terms_id
5594 ,l_item_lead_time_obj.preprocessing_lead_time
5595 ,l_item_lead_time_obj.full_lead_time
5596 ,l_item_lead_time_obj.postprocessing_lead_time
5597 ,l_item_lead_time_obj.fixed_lead_time
5598 ,l_item_lead_time_obj.variable_lead_time
5599 ,l_item_lead_time_obj.cum_manufacturing_lead_time
5600 ,l_item_lead_time_obj.cumulative_total_lead_time
5601 ,l_item_lead_time_obj.lead_time_lot_size
5602 ,l_item_mrp_obj.mrp_planning_code
5603 ,l_item_mrp_obj.ato_forecast_control
5604 ,l_item_mrp_obj.planning_exception_set
5605 ,l_item_mrp_obj.end_assembly_pegging_flag
5606 ,l_item_mrp_obj.shrinkage_rate
5607 ,l_item_mrp_obj.rounding_control_type
5608 ,l_item_mrp_obj.acceptable_early_days
5609 ,l_item_mrp_obj.repetitive_planning_flag
5610 ,l_item_mrp_obj.overrun_percentage
5611 ,l_item_mrp_obj.acceptable_rate_increase
5612 ,l_item_mrp_obj.acceptable_rate_decrease
5613 ,l_item_mrp_obj.mrp_calculate_atp_flag
5614 ,l_item_mrp_obj.auto_reduce_mps
5615 ,l_item_mrp_obj.planning_time_fence_code
5616 ,l_item_mrp_obj.planning_time_fence_days
5617 ,l_item_mrp_obj.demand_time_fence_code
5618 ,l_item_mrp_obj.demand_time_fence_days
5619 ,l_item_mrp_obj.release_time_fence_code
5620 ,l_item_mrp_obj.release_time_fence_days
5621 ,l_item_mrp_obj.substitution_window_code
5622 ,l_item_mrp_obj.substitution_window_days
5623 ,l_item_mrp_obj.exclude_from_budget_flag
5624 ,l_item_mrp_obj.days_tgt_inv_supply
5625 ,l_item_mrp_obj.days_tgt_inv_window
5626 ,l_item_mrp_obj.days_max_inv_supply
5627 ,l_item_mrp_obj.days_max_inv_window
5628 ,l_item_mrp_obj.drp_planned_flag
5629 ,l_item_mrp_obj.critical_component_flag
5630 ,l_item_mrp_obj.continous_transfer
5631 ,l_item_mrp_obj.convergence
5632 ,l_item_mrp_obj.divergence
5633 ,l_item_order_obj.customer_order_flag
5634 ,l_item_order_obj.customer_order_enabled_flag
5635 ,l_item_order_obj.shippable_item_flag
5636 ,l_item_order_obj.internal_order_flag
5637 ,l_item_order_obj.internal_order_enabled_flag
5638 ,l_item_order_obj.so_transactions_flag
5639 ,l_item_order_obj.pick_components_flag
5640 ,l_item_order_obj.atp_flag
5641 ,l_item_order_obj.replenish_to_order_flag
5642 ,l_item_order_obj.atp_rule_id
5643 ,l_item_order_obj.atp_components_flag
5644 ,l_item_order_obj.ship_model_complete_flag
5645 ,l_item_order_obj.picking_rule_id
5646 ,l_item_order_obj.collateral_flag
5647 ,l_item_order_obj.default_shipping_org
5648 ,l_item_order_obj.returnable_flag
5649 ,l_item_order_obj.return_inspection_requireme
5650 ,l_item_order_obj.over_shipment_tolerance
5651 ,l_item_order_obj.under_shipment_tolerance
5652 ,l_item_order_obj.over_return_tolerance
5653 ,l_item_order_obj.under_return_tolerance
5654 ,l_item_order_obj.financing_allowed_flag
5655 ,l_item_order_obj.default_so_source_type
5656 ,l_item_phy_obj.weight_uom_code
5657 ,l_item_phy_obj.unit_weight
5658 ,l_item_phy_obj.volume_uom_code
5659 ,l_item_phy_obj.unit_volume
5660 ,l_item_phy_obj.container_item_flag
5661 ,l_item_phy_obj.vehicle_item_flag
5662 ,l_item_phy_obj.container_type_code
5663 ,l_item_phy_obj.internal_volume
5664 ,l_item_phy_obj.maximum_load_weight
5665 ,l_item_phy_obj.minimum_fill_percent
5666 ,l_item_phy_obj.equipment_type
5667 ,l_item_phy_obj.event_flag
5668 ,l_item_phy_obj.electronic_flag
5669 ,l_item_phy_obj.downloadable_flag
5670 ,l_item_phy_obj.indivisible_flag
5671 ,l_item_phy_obj.dimension_uom_code
5672 ,l_item_phy_obj.unit_length
5673 ,l_item_phy_obj.unit_width
5674 ,l_item_phy_obj.unit_height
5675 ,l_item_process_obj.recipe_enabled_flag
5676 ,l_item_process_obj.process_costing_enabled_flag
5677 ,l_item_process_obj.process_quality_enabled_flag
5678 ,l_item_process_obj.process_execution_enabled_flag
5679 ,l_item_process_obj.process_supply_subinventory
5680 ,l_item_process_obj.process_supply_locator_id
5681 ,l_item_process_obj.process_yield_subinventory
5682 ,l_item_process_obj.process_yield_locator_id
5683 ,l_item_process_obj.hazardous_material_flag
5684 ,l_item_process_obj.cas_number
5685 ,l_item_pur_obj.purchasing_item_flag
5686 ,l_item_pur_obj.purchasing_enabled_flag
5687 ,l_item_pur_obj.must_use_approved_vendor_fl
5688 ,l_item_pur_obj.allow_item_desc_update_flag
5689 ,l_item_pur_obj.rfq_required_flag
5690 ,l_item_pur_obj.outside_operation_flag
5691 ,l_item_pur_obj.outside_operation_uom_type
5692 ,l_item_pur_obj.taxable_flag
5693 ,l_item_pur_obj.purchasing_tax_code
5694 ,l_item_pur_obj.receipt_required_flag
5695 ,l_item_pur_obj.inspection_required_flag
5696 ,l_item_pur_obj.buyer_id
5697 ,l_item_pur_obj.unit_of_issue
5698 ,l_item_pur_obj.receive_close_tolerance
5699 ,l_item_pur_obj.invoice_close_tolerance
5700 ,l_item_pur_obj.un_number_id
5701 ,l_item_pur_obj.hazard_class_id
5702 ,l_item_pur_obj.list_price_per_unit
5703 ,l_item_pur_obj.market_price
5704 ,l_item_pur_obj.price_tolerance_percent
5705 ,l_item_pur_obj.rounding_factor
5706 ,l_item_pur_obj.encumbrance_account
5707 ,l_item_pur_obj.expense_account
5708 ,l_item_pur_obj.asset_category_id
5709 ,l_item_recving_obj.receipt_days_exception_code
5710 ,l_item_recving_obj.days_early_receipt_allowed
5711 ,l_item_recving_obj.days_late_receipt_allowed
5712 ,l_item_recving_obj.allow_substitute_receipts_f
5713 ,l_item_recving_obj.allow_unordered_receipts_fl
5714 ,l_item_recving_obj.allow_express_delivery_flag
5715 ,l_item_recving_obj.qty_rcv_exception_code
5716 ,l_item_recving_obj.qty_rcv_tolerance
5717 ,l_item_recving_obj.receiving_routing_id
5718 ,l_item_recving_obj.enforce_ship_to_location_c
5719 ,l_item_service_obj.coverage_schedule_id
5720 ,l_item_service_obj.service_duration
5721 ,l_item_service_obj.service_duration_period_cod
5722 ,l_item_service_obj.serviceable_product_flag
5723 ,l_item_service_obj.service_starting_delay
5724 ,l_item_service_obj.material_billable_flag
5725 ,l_item_service_obj.recovered_part_disp_code
5726 ,l_item_service_obj.defect_tracking_on_flag
5727 ,l_item_service_obj.comms_nl_trackable_flag
5728 ,l_item_service_obj.asset_creation_code
5729 ,l_item_service_obj.ib_item_instance_class
5730 ,l_item_web_opiton.orderable_on_web_flag
5731 ,l_item_web_opiton.back_orderable_flag
5732 ,l_item_web_opiton.web_status
5733 ,l_item_web_opiton.minimum_license_quantity
5734 ,l_item_wip_obj.build_in_wip_flag
5735 ,l_item_wip_obj.wip_supply_type
5736 ,l_item_wip_obj.wip_supply_subinventory
5737 ,l_item_wip_obj.wip_supply_locator_id
5738 ,l_item_wip_obj.overcompletion_tolerance_ty
5739 ,l_item_wip_obj.overcompletion_tolerance_va
5740 ,l_item_wip_obj.inventory_carry_penalty
5741 ,l_item_wip_obj.operation_slack_penalty
5742 ,l_item_custom_obj.ATTRIBUTE_CATEGORY
5743 ,l_item_custom_obj.ATTRIBUTE1
5744 ,l_item_custom_obj.ATTRIBUTE2
5745 ,l_item_custom_obj.ATTRIBUTE3
5746 ,l_item_custom_obj.ATTRIBUTE4
5747 ,l_item_custom_obj.ATTRIBUTE5
5748 ,l_item_custom_obj.ATTRIBUTE6
5749 ,l_item_custom_obj.ATTRIBUTE7
5750 ,l_item_custom_obj.ATTRIBUTE8
5751 ,l_item_custom_obj.ATTRIBUTE9
5752 ,l_item_custom_obj.ATTRIBUTE10
5753 ,l_item_custom_obj.ATTRIBUTE11
5754 ,l_item_custom_obj.ATTRIBUTE12
5755 ,l_item_custom_obj.ATTRIBUTE13
5756 ,l_item_custom_obj.ATTRIBUTE14
5757 ,l_item_custom_obj.ATTRIBUTE15
5758 ,l_item_custom_obj.ATTRIBUTE16
5759 ,l_item_custom_obj.ATTRIBUTE17
5760 ,l_item_custom_obj.ATTRIBUTE18
5761 ,l_item_custom_obj.ATTRIBUTE19
5762 ,l_item_custom_obj.ATTRIBUTE20
5763 ,l_item_custom_obj.ATTRIBUTE21
5764 ,l_item_custom_obj.ATTRIBUTE22
5765 ,l_item_custom_obj.ATTRIBUTE23
5766 ,l_item_custom_obj.ATTRIBUTE24
5767 ,l_item_custom_obj.ATTRIBUTE25
5768 ,l_item_custom_obj.ATTRIBUTE26
5769 ,l_item_custom_obj.ATTRIBUTE27
5770 ,l_item_custom_obj.ATTRIBUTE28
5771 ,l_item_custom_obj.ATTRIBUTE29
5772 ,l_item_custom_obj.ATTRIBUTE30
5773 ,l_item_custom_obj.GLOBAL_ATTRIBUTE_CATEGORY
5774 ,l_item_custom_obj.GLOBAL_ATTRIBUTE1
5775 ,l_item_custom_obj.GLOBAL_ATTRIBUTE2
5776 ,l_item_custom_obj.GLOBAL_ATTRIBUTE3
5777 ,l_item_custom_obj.GLOBAL_ATTRIBUTE4
5778 ,l_item_custom_obj.GLOBAL_ATTRIBUTE5
5779 ,l_item_custom_obj.GLOBAL_ATTRIBUTE6
5780 ,l_item_custom_obj.GLOBAL_ATTRIBUTE7
5781 ,l_item_custom_obj.GLOBAL_ATTRIBUTE8
5782 ,l_item_custom_obj.GLOBAL_ATTRIBUTE9
5783 ,l_item_custom_obj.GLOBAL_ATTRIBUTE10
5784 FROM mtl_system_items_vl
5785 WHERE inventory_item_id=l_item_id AND organization_id=l_org_id;
5786
5787 IF ( (l_item_core_obj.revision_id IS NULL OR l_item_core_obj.revision_id= fnd_api.g_miss_num)
5788 AND (l_org_id IS NOT NULL AND l_item_id IS NOT NULL)
5789 ) THEN
5790 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5791 l_pk_col_name_val_pairs.EXTEND(2);
5792 l_pk_col_name_val_pairs(1).name := 'organization_id';
5793 l_pk_col_name_val_pairs(1).value := l_org_id;
5794 l_pk_col_name_val_pairs(2).name := 'inventory_item_id';
5795 l_pk_col_name_val_pairs(2).value := l_item_id;
5796 l_item_core_obj.revision_id := INV_EBI_ITEM_HELPER.value_to_id(
5797 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5798 ,p_entity_name => INV_EBI_ITEM_HELPER.G_REVISION
5799 );
5800 l_pk_col_name_val_pairs.TRIM(2);
5801 END IF;
5802 ctr := 1;
5803 FOR c IN c_mfr_part_cursor(l_item_id,l_org_id)
5804 LOOP
5805 l_item_mfr_part_obj := inv_ebi_manufacturer_part_obj(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
5806 ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
5807 l_mfr_part_table.extend();
5808 l_item_mfr_part_obj.manufacturer_id := c.manufacturer_id;
5809 l_item_mfr_part_obj.mfg_part_num := c.mfg_part_num;
5810 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5811 l_pk_col_name_val_pairs.EXTEND(1);
5812 l_pk_col_name_val_pairs(1).name := 'manufacturer_id';
5813 l_pk_col_name_val_pairs(1).value := l_item_mfr_part_obj.manufacturer_id;
5814 l_item_mfr_part_obj.manufacturer_name := INV_EBI_ITEM_HELPER.id_to_value (
5815 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5816 ,p_entity_name=> G_MANUFACTURER
5817 );
5818 INV_EBI_UTIL.debug_line('STEP 40: MFG NAME: '||l_item_mfr_part_obj.manufacturer_name);
5819 l_mfr_part_table(ctr) := l_item_mfr_part_obj;
5820 ctr := ctr + 1;
5821 END LOOP;
5822
5823 IF (INV_EBI_UTIL.is_pim_installed) THEN -- Bug 8369900 To check is_pim_installed for reverse flow
5824 --Bug 7240247 To get Item udas
5825 INV_EBI_UTIL.debug_line('STEP 50: BEFORE CALLING INV_EBI_ITEM_HELPER.get_item_uda');
5826 get_item_uda(
5827 p_inventory_item_id => l_item_core_obj.inventory_item_id,
5828 p_organization_id => l_item_core_obj.organization_id,
5829 p_item_classification_id => l_item_core_obj.item_catalog_group_id,
5830 p_revision_id => l_item_core_obj.revision_id,
5831 x_item_uda => l_uda_obj,
5832 x_return_status => l_return_status,
5833 x_msg_count => l_msg_count,
5834 x_msg_data => l_msg_data
5835 );
5836 INV_EBI_UTIL.debug_line('STEP 60: AFTER CALLING INV_EBI_ITEM_HELPER.get_item_uda STATUS: '||l_return_status);
5837 IF(l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
5838 l_item_attr_tbl(i).msg_data := l_msg_data;
5839 RAISE FND_API.G_EXC_ERROR;
5840 END IF;
5841 END IF; --Bug 8369900 end
5842
5843 -- To populate unit_cost of l_item_costing_obj
5844 l_item_costing_obj.unit_cost := CST_COST_API.get_item_cost (
5845 p_api_version => 1,
5846 p_inventory_item_id => l_item_id,
5847 p_organization_id => l_org_id,
5848 p_cost_group_id => l_default_cost_group_id,
5849 p_cost_type_id => l_default_cost_type_id
5850 );
5851
5852 IF(l_item_core_obj.organization_id IS NOT NULL) THEN
5853 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5854 l_pk_col_name_val_pairs.EXTEND(1);
5855 l_pk_col_name_val_pairs(1).name := 'organization_id';
5856 l_pk_col_name_val_pairs(1).value := l_item_core_obj.organization_id;
5857 l_item_core_obj.organization_code := INV_EBI_ITEM_HELPER.id_to_value (
5858 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5859 ,p_entity_name=> G_ORGANIZATION
5860 );
5861 INV_EBI_UTIL.debug_line('STEP 70: ORG CODE: '||l_item_core_obj.organization_code);
5862 END IF;
5863
5864 IF(l_item_core_obj.template_id IS NOT NULL) THEN
5865 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5866 l_pk_col_name_val_pairs.EXTEND(1);
5867 l_pk_col_name_val_pairs(1).name := 'template_id';
5868 l_pk_col_name_val_pairs(1).value := l_item_core_obj.template_id;
5869 l_item_core_obj.template_name := INV_EBI_ITEM_HELPER.id_to_value(
5870 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5871 ,p_entity_name=> G_TEMPLATE
5872 );
5873 INV_EBI_UTIL.debug_line('STEP 80: TEMPLATE NAME: '||l_item_core_obj.template_name);
5874 END IF;
5875
5876 IF(l_item_core_obj.item_catalog_group_id IS NOT NULL) THEN
5877 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5878 l_pk_col_name_val_pairs.EXTEND(1);
5879 l_pk_col_name_val_pairs(1).name := 'item_catalog_group_id';
5880 l_pk_col_name_val_pairs(1).value := l_item_core_obj.item_catalog_group_id;
5881 l_item_core_obj.item_catalog_group_code := INV_EBI_ITEM_HELPER.id_to_value(
5882 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5883 ,p_entity_name=> G_ITEM_CATALOG_GROUP
5884 );
5885 INV_EBI_UTIL.debug_line('STEP 90: CATALOG GROUP CODE: '||l_item_core_obj.item_catalog_group_code);
5886 END IF;
5887
5888 IF(l_item_core_obj.lifecycle_id IS NOT NULL) THEN
5889 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5890 l_pk_col_name_val_pairs.EXTEND(1);
5891 l_pk_col_name_val_pairs(1).name := 'proj_element_id'; -- Column name not available project_element_id
5892 l_pk_col_name_val_pairs(1).value := l_item_core_obj.lifecycle_id;
5893 l_item_core_obj.lifecycle_name := INV_EBI_ITEM_HELPER.id_to_value(
5894 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5895 ,p_entity_name=> G_LIFECYCLE
5896 );
5897 INV_EBI_UTIL.debug_line('STEP 100: LIFE CYCLE NAME: '||l_item_core_obj.lifecycle_name);
5898 END IF;
5899 IF(l_item_core_obj.current_phase_id IS NOT NULL) THEN
5900 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5901 l_pk_col_name_val_pairs.EXTEND(1);
5902 l_pk_col_name_val_pairs(1).name := 'proj_element_id';
5903 l_pk_col_name_val_pairs(1).value := l_item_core_obj.current_phase_id;
5904 l_item_core_obj.current_phase_name := INV_EBI_ITEM_HELPER.id_to_value(
5905 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5906 ,p_entity_name=> G_CURRENT_PHASE
5907 );
5908 END IF;
5909 IF (l_item_core_obj.revision_id IS NOT NULL) THEN
5910 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5911 l_pk_col_name_val_pairs.EXTEND(1);
5912 l_pk_col_name_val_pairs(1).name := 'revision_id';
5913 l_pk_col_name_val_pairs(1).value := l_item_core_obj.revision_id ;
5914 l_item_core_obj.revision_code := INV_EBI_ITEM_HELPER.id_to_value(
5915 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5916 ,p_entity_name=> G_REVISION
5917 );
5918 INV_EBI_UTIL.debug_line('STEP 110: REVISION CODE: '||l_item_core_obj.revision_code);
5919 END IF;
5920 IF(l_item_pur_obj.hazard_class_id IS NOT NULL) THEN
5921 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5922 l_pk_col_name_val_pairs.EXTEND(1);
5923 l_pk_col_name_val_pairs(1).name := 'hazard_class_id';
5924 l_pk_col_name_val_pairs(1).value := l_item_pur_obj.hazard_class_id;
5925 l_item_pur_obj.hazard_class_code := INV_EBI_ITEM_HELPER.id_to_value(
5926 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5927 ,p_entity_name=> G_HAZARD_CLASS
5928 );
5929 END IF;
5930 IF (l_item_pur_obj.asset_category_id IS NOT NULL) THEN
5931 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5932 l_pk_col_name_val_pairs.EXTEND(1);
5933 l_pk_col_name_val_pairs(1).name := 'category_id';
5934 l_pk_col_name_val_pairs(1).value := l_item_pur_obj.asset_category_id ;
5935 l_item_pur_obj.asset_category_code := INV_EBI_ITEM_HELPER.id_to_value(
5936 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5937 ,p_entity_name=> G_ASSET_CATEGORY
5938 );
5939 END IF;
5940 IF (l_item_bom_obj.base_item_id IS NOT NULL) THEN
5941 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5942 l_pk_col_name_val_pairs.EXTEND(2);
5943 l_pk_col_name_val_pairs(1).name := 'inventory_item_id';
5944 l_pk_col_name_val_pairs(1).value := l_item_bom_obj.base_item_id;
5945 l_pk_col_name_val_pairs(2).name := 'organization_id';
5946 l_pk_col_name_val_pairs(2).value := l_item_core_obj.organization_id;
5947 l_item_bom_obj.base_item_number := INV_EBI_ITEM_HELPER.id_to_value(
5948 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5949 ,p_entity_name=> G_INVENTORY_ITEM
5950 );
5951 END IF;
5952 -- gets the item number
5953 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5954 l_pk_col_name_val_pairs.EXTEND(1);
5955 l_pk_col_name_val_pairs(1).name := 'organization_id';
5956 l_pk_col_name_val_pairs(1).value := l_item_core_obj.organization_id;
5957 l_pk_col_name_val_pairs.EXTEND(1);
5958 l_pk_col_name_val_pairs(2).name := 'inventory_item_id';
5959 l_pk_col_name_val_pairs(2).value := l_item_core_obj.inventory_item_id;
5960 l_item_core_obj.item_name := INV_EBI_ITEM_HELPER.id_to_value(
5961 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5962 ,p_entity_name=> G_INVENTORY_ITEM
5963 );
5964 SELECT MASTER_ORGANIZATION_ID INTO l_item_core_obj.MASTER_ORGANIZATION_ID
5965 FROM mtl_parameters WHERE organization_id=l_org_id;
5966 -- converts the master org id to master org code
5967 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
5968 l_pk_col_name_val_pairs.EXTEND(1);
5969 l_pk_col_name_val_pairs(1).name := 'organization_id';
5970 l_pk_col_name_val_pairs(1).value := l_item_core_obj.master_organization_id;
5971 l_item_core_obj.master_organization_code := INV_EBI_ITEM_HELPER.id_to_value(
5972 p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
5973 ,p_entity_name=> INV_EBI_ITEM_HELPER.G_ORGANIZATION
5974 );
5975 IF(NOT (l_getassetmgmtattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5976 l_item_asset_obj := NULL;
5977 END IF;
5978 IF(NOT(l_getbomattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5979 l_item_bom_obj := NULL;
5980 END IF;
5981 IF(NOT(l_getcostingattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5982 l_item_costing_obj := NULL;
5983 END IF;
5984 IF(NOT(l_getgeneralplanningattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE ))THEN
5985 l_item_gplan_obj := NULL;
5986 END IF;
5987 IF(NOT(l_getinventoryattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5988 l_item_inv_obj := NULL;
5989 END IF;
5990 IF(NOT(l_getinvoicingattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5991 l_item_invoice_obj := NULL;
5992 END IF;
5993 IF(NOT(l_getleadtimeattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5994 l_item_lead_time_obj := NULL;
5995 END IF;
5996 IF(NOT(l_getmpsmrpplanningattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
5997 l_item_mrp_obj := NULL;
5998 END IF;
5999 IF(NOT(l_getorderattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
6000 l_item_order_obj := NULL;
6001 END IF;
6002 IF(NOT(l_getphysicalattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
6003 l_item_phy_obj := NULL;
6004 END IF;
6005 IF(NOT(l_getprocessattrs=FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
6006 l_item_process_obj := NULL;
6007 END IF;
6008 IF(NOT(l_getpurchasingattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE )) THEN
6009 l_item_pur_obj := NULL;
6010 END IF;
6011 IF(NOT(l_getrecevingattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE ))THEN
6012 l_item_recving_obj := NULL;
6013 END IF;
6014 IF(NOT(l_getserviceattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE ))THEN
6015 l_item_service_obj := NULL;
6016 END IF;
6017 IF(NOT(l_getweboptionattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE ))THEN
6018 l_item_web_opiton := NULL;
6019 END IF;
6020 IF(NOT(l_getwipattrs = FND_API.G_TRUE) AND NOT(l_getitemoprattrs = FND_API.G_TRUE ))THEN
6021 l_item_wip_obj := NULL;
6022 END IF;
6023 l_item_obj := inv_ebi_item_obj(l_item_core_obj
6024 ,l_item_phy_obj
6025 ,l_item_inv_obj
6026 ,l_item_pur_obj
6027 ,l_item_recving_obj
6028 ,l_item_gplan_obj
6029 ,l_item_mrp_obj
6030 ,l_item_order_obj
6031 ,l_item_service_obj
6032 ,l_item_bom_obj
6033 ,l_item_costing_obj
6034 ,l_item_lead_time_obj
6035 ,l_item_wip_obj
6036 ,l_item_invoice_obj
6037 ,l_item_web_opiton
6038 ,l_item_asset_obj
6039 ,NULL
6040 ,l_item_process_obj
6041 ,l_item_custom_obj
6042 ,NULL
6043 ,NULL
6044 ,l_mfr_part_table
6045 ,l_uda_obj
6046 ,NULL
6047 ,NULL
6048 ,NULL
6049 ,NULL
6050 ,NULL
6051 );
6052 get_Operating_unit
6053 (p_oranization_id => l_org_id
6054 ,x_operating_unit => l_item_obj.operating_unit
6055 ,x_ouid => l_item_obj.operating_unit_id
6056 );
6057 l_item_attr_tbl(i).item_obj := l_item_obj;
6058 EXCEPTION
6059 WHEN FND_API.G_EXC_ERROR THEN
6060 x_return_status := FND_API.G_RET_STS_ERROR;
6061 l_item_attr_tbl(i).return_status := FND_API.G_RET_STS_ERROR;
6062 IF l_item_attr_tbl(i).msg_data IS NOT NULL THEN
6063 FND_MSG_PUB.count_and_get(
6064 p_encoded => FND_API.g_false
6065 ,p_count => l_item_attr_tbl(i).msg_count
6066 ,p_data => l_item_attr_tbl(i).msg_data
6067 );
6068 END IF;
6069 populate_err_msg(p_orgid => l_org_id
6070 ,p_invid => l_item_id
6071 ,p_org_code => p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).organization_code
6072 ,p_item_name => p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).item_name
6073 ,p_part_err_msg => l_item_attr_tbl(i).msg_data
6074 ,x_err_msg => x_msg_data
6075 );
6076 WHEN OTHERS THEN
6077 x_return_status := FND_API.G_RET_STS_ERROR;
6078 l_item_attr_tbl(i).return_status := FND_API.G_RET_STS_ERROR;
6079 populate_err_msg(p_orgid => l_org_id
6080 ,p_invid => l_item_id
6081 ,p_org_code => p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).organization_code
6082 ,p_item_name => p_get_item_inp_obj.p_get_opr_attrs_tbl_type(i).item_name
6083 ,p_part_err_msg => SQLERRM||' -> at inv_ebi_item_helper.get_item_attributes'
6084 ,x_err_msg => x_msg_data
6085 );
6086 END;
6087 END LOOP;
6088 x_item_tbl_obj:=inv_ebi_item_attr_tbl_obj(l_item_attr_tbl);
6089 INV_EBI_UTIL.debug_line('STEP 120: END INSIDE INV_EBI_ITEM_HELPER.get_item_attributes STATUS: '||x_return_status);
6090 EXCEPTION
6091 WHEN OTHERS THEN
6092 x_return_status := FND_API.G_RET_STS_ERROR;
6093 IF (x_msg_data IS NOT NULL) THEN
6094 x_msg_data := x_msg_data ||' -> at INV_EBI_ITEM_HELPER.get_item_attributes';
6095 ELSE
6096 x_msg_data := SQLERRM||' at INV_EBI_ITEM_HELPER.get_item_attributes';
6097 END IF;
6098 END get_item_attributes;
6099
6100
6101 /***************************************************************************************************
6102 -- API name : get_last_run_date
6103 -- Type : Private For Internal Use Only
6104 -- Purpose : To get the last run date of the concurrent program
6105 *****************************************************************************************************/
6106
6107 FUNCTION get_last_run_date( p_conc_prog_id IN NUMBER
6108 ,p_appl_id IN NUMBER
6109 ) RETURN DATE
6110 IS
6111 l_date DATE :=NULL;
6112 CURSOR c_last_sche_comp_date
6113 IS
6114 SELECT actual_start_date FROM (
6115 SELECT actual_start_date
6116 FROM fnd_concurrent_requests
6117 WHERE program_application_id = p_appl_id
6118 AND concurrent_program_id = p_conc_prog_id
6119 AND UPPER(phase_code) = 'C'
6120 AND (root_request_id is not null OR resubmit_interval is not null)
6121 AND actual_start_date is not null
6122 ORDER BY actual_start_date DESC)
6123 WHERE ROWNUM = 1;
6124
6125 CURSOR c_last_comp_date
6126 IS
6127 SELECT actual_start_date INTO l_date FROM (
6128 SELECT actual_start_date
6129 FROM fnd_concurrent_requests
6130 WHERE program_application_id = p_appl_id
6131 AND concurrent_program_id = p_conc_prog_id
6132 AND UPPER(phase_code) = 'C'
6133 AND actual_start_date is not null
6134 ORDER BY actual_start_date DESC)
6135 WHERE ROWNUM = 1;
6136
6137 BEGIN
6138 IF c_last_sche_comp_date%ISOPEN THEN
6139 CLOSE c_last_sche_comp_date;
6140 END IF;
6141
6142 OPEN c_last_sche_comp_date;
6143 FETCH c_last_sche_comp_date into l_date;
6144 CLOSE c_last_sche_comp_date;
6145
6146 IF l_date IS NULL THEN
6147 IF c_last_comp_date%ISOPEN THEN
6148 CLOSE c_last_comp_date;
6149 END IF;
6150 OPEN c_last_comp_date;
6151 FETCH c_last_comp_date into l_date;
6152 CLOSE c_last_comp_date;
6153 END IF;
6154
6155 IF l_date IS NULL THEN
6156 l_date := SYSDATE-30;
6157 END IF;
6158
6159 RETURN l_date;
6160 EXCEPTION
6161 WHEN OTHERS THEN
6162 IF c_last_sche_comp_date%ISOPEN THEN
6163 CLOSE c_last_sche_comp_date;
6164 END IF;
6165 IF c_last_comp_date%ISOPEN THEN
6166 CLOSE c_last_comp_date;
6167 END IF;
6168 END get_last_run_date;
6169
6170 /************************************************************************************
6171 -- API name : parse_input_String
6172 -- Type : Public
6173 -- Function : To parse the input string
6174 ************************************************************************************/
6175
6176 FUNCTION parse_input_string(
6177 p_input_string IN VARCHAR2
6178 )
6179 RETURN FND_TABLE_OF_VARCHAR2_255
6180 IS
6181 l_input_string VARCHAR2(240);
6182 l_count NUMBER:=0;
6183 l_length NUMBER:=0;
6184 l_parsed_tbl FND_TABLE_OF_VARCHAR2_255;
6185 BEGIN
6186 l_input_string := p_input_string;
6187 l_parsed_tbl := FND_TABLE_OF_VARCHAR2_255();
6188 l_length := LENGTH(l_input_string);
6189
6190 IF (SUBSTR(l_input_string,l_length-1) <> ';;') THEN
6191 l_input_string := l_input_string || ';;';
6192 END IF;
6193
6194 WHILE INSTR(l_input_string,';;') > 0 LOOP
6195 l_parsed_tbl.EXTEND(1);
6196 l_count := l_count+1;
6197 l_parsed_tbl(l_count) := SUBSTR(l_input_string,1,INSTR(l_input_string,';;')-1) ;
6198 l_input_string := SUBSTR(l_input_string,INSTR(l_input_string,';;')+2);
6199 END LOOP;
6200
6201 RETURN l_parsed_tbl;
6202 END parse_input_string;
6203 /************************************************************************************
6204 -- API name : filter_items_based_on_org
6205 -- Type : Public
6206 -- Function : To filter items based on the given organization
6207 ************************************************************************************/
6208
6209 PROCEDURE filter_items_based_on_org(
6210 p_org_codes IN VARCHAR2
6211 ,p_item_tbl IN inv_ebi_get_opr_attrs_tbl
6212 ,x_item_tbl OUT NOCOPY inv_ebi_get_opr_attrs_tbl
6213 ,x_return_status OUT NOCOPY VARCHAR2
6214 ,x_msg_count OUT NOCOPY NUMBER
6215 ,x_msg_data OUT NOCOPY VARCHAR2)
6216 IS
6217 l_org_tbl FND_TABLE_OF_VARCHAR2_255;
6218 l_item_output_tbl inv_ebi_get_opr_attrs_tbl;
6219 l_counter NUMBER:=0;
6220 BEGIN
6221 x_return_status := FND_API.g_ret_sts_success;
6222 INV_EBI_UTIL.debug_line('STEP 10: START INSIDE INV_EBI_ITEM_HELPER.filter_items_based_on_org');
6223 l_item_output_tbl := inv_ebi_get_opr_attrs_tbl();
6224
6225 IF p_org_codes IS NOT NULL THEN
6226 l_org_tbl := parse_input_string(p_org_codes);
6227 END IF;
6228
6229 IF p_item_tbl IS NOT NULL AND p_item_tbl.COUNT>0 THEN
6230 FOR i in p_item_tbl.FIRST..p_item_tbl.LAST LOOP
6231 IF l_org_tbl IS NOT NULL AND l_org_tbl.COUNT>0 THEN
6232 FOR j in l_org_tbl.FIRST..l_org_tbl.LAST LOOP
6233 IF (p_item_tbl(i).organization_code = l_org_tbl(j)) THEN
6234 INV_EBI_UTIL.debug_line('STEP 20: ITEM NAME IS '|| p_item_tbl(i).item_name);
6235 INV_EBI_UTIL.debug_line('STEP 30: ORGANIZATION CODE IS '|| l_org_tbl(j));
6236 l_counter := l_counter + 1;
6237 l_item_output_tbl.EXTEND(1);
6238 l_item_output_tbl(l_counter) := p_item_tbl(i);
6239 EXIT;
6240 END IF;
6241 END LOOP;
6242 END IF;
6243 END LOOP;
6244 END IF;
6245
6246 x_item_tbl := l_item_output_tbl;
6247 INV_EBI_UTIL.debug_line('STEP 40: END INSIDE INV_EBI_ITEM_HELPER.filter_items_based_on_org RETURN STATUS: '|| x_return_status);
6248 EXCEPTION
6249 WHEN OTHERS THEN
6250 x_return_status := FND_API.g_ret_sts_unexp_error;
6251 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.filter_items_based_on_org';
6252 END filter_items_based_on_org;
6253
6254 /************************************************************************************
6255 -- API name : parse_and_get_item
6256 -- Type : Private For Internal Use Only
6257 -- Function : To parse the input string and get list of items
6258 ************************************************************************************/
6259 PROCEDURE parse_and_get_item(
6260 p_item_names IN VARCHAR2
6261 ,p_org_codes IN VARCHAR2
6262 ,x_item_tbl OUT NOCOPY inv_ebi_get_opr_attrs_tbl
6263 ,x_return_status OUT NOCOPY VARCHAR2
6264 ,x_msg_count OUT NOCOPY NUMBER
6265 ,x_msg_data OUT NOCOPY VARCHAR2)
6266 IS
6267 l_return_status VARCHAR2(2);
6268 l_msg_data VARCHAR2(2000);
6269 l_count NUMBER:=0;
6270 l_counter NUMBER := 0;
6271 l_entity_exist NUMBER :=0;
6272 l_entity_count NUMBER :=0;
6273 l_org_id NUMBER;
6274 l_item_id NUMBER;
6275 l_item_output_tbl inv_ebi_get_opr_attrs_tbl;
6276 l_item_obj inv_ebi_get_operational_attrs;
6277 l_item_tbl FND_TABLE_OF_VARCHAR2_255;
6278 l_org_tbl FND_TABLE_OF_VARCHAR2_255;
6279 l_valid_item_tbl FND_TABLE_OF_VARCHAR2_255;
6280 l_valid_org_tbl FND_TABLE_OF_VARCHAR2_255;
6281 l_pk_col_name_val_pairs INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl ;
6282 CURSOR c_get_all_orgs(p_item_name VARCHAR2) IS
6283 SELECT msik.inventory_item_id,msik.organization_id,mp.organization_code
6284 FROM mtl_system_items_kfv msik,mtl_parameters mp
6285 WHERE msik.concatenated_segments = p_item_name
6286 AND msik.organization_id = mp.organization_id;
6287 BEGIN
6288 x_return_status := FND_API.g_ret_sts_success;
6289 INV_EBI_UTIL.debug_line('STEP 10: START CALLING INSIDE INV_EBI_ITEM_HELPER.parse_and_get_item ');
6290 l_item_output_tbl := inv_ebi_get_opr_attrs_tbl();
6291 INV_EBI_UTIL.debug_line('STEP 20: ITEM NAMES '|| p_item_names);
6292 INV_EBI_UTIL.debug_line('STEP 30: ORG CODES '|| p_org_codes);
6293 IF p_item_names IS NOT NULL THEN
6294 l_item_tbl := parse_input_string(p_item_names);
6295 END IF;
6296
6297 IF p_org_codes IS NOT NULL THEN
6298 l_org_tbl := parse_input_string(p_org_codes);
6299 END IF;
6300 IF l_item_tbl IS NOT NULL AND l_item_tbl.COUNT > 0 THEN
6301 l_valid_item_tbl := FND_TABLE_OF_VARCHAR2_255();
6302 l_entity_count :=0;
6303 FOR i in l_item_tbl.FIRST..l_item_tbl.LAST LOOP
6304 BEGIN
6305 FND_MSG_PUB.initialize();
6306 SELECT COUNT(1) into l_entity_exist
6307 FROM mtl_system_items_kfv
6308 WHERE concatenated_segments = l_item_tbl(i);
6309 IF l_entity_exist>0 THEN
6310 l_entity_count := l_entity_count +1;
6311 l_valid_item_tbl.EXTEND();
6312 l_valid_item_tbl(l_entity_count) := l_item_tbl(i);
6313 ELSE
6314 FND_MESSAGE.set_name('INV','INV_EBI_ITEM_INVALID');
6315 FND_MESSAGE.set_token('COL_VALUE', l_item_tbl(i));
6316 FND_MSG_PUB.add;
6317 RAISE FND_API.G_EXC_ERROR;
6318 END IF;
6319 EXCEPTION
6320 WHEN FND_API.G_EXC_ERROR THEN
6321 x_return_status := FND_API.g_ret_sts_error;
6322 FND_MSG_PUB.count_and_get( p_encoded => FND_API.g_false
6323 ,p_count => x_msg_count
6324 ,p_data => l_msg_data
6325 );
6326 x_msg_data := x_msg_data || l_msg_data ||' , ' ;
6327 WHEN OTHERS THEN
6328 x_return_status := FND_API.g_ret_sts_error;
6329 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.parse_and_get_item';
6330 END;
6331 END LOOP;
6332 END IF;
6333 IF l_org_tbl IS NOT NULL AND l_org_tbl.COUNT > 0 THEN
6334 l_valid_org_tbl := FND_TABLE_OF_VARCHAR2_255();
6335 l_entity_count :=0;
6336 FOR i in l_org_tbl.FIRST..l_org_tbl.LAST LOOP
6337 BEGIN
6338 FND_MSG_PUB.initialize();
6339 SELECT COUNT(1) into l_entity_exist
6340 FROM mtl_parameters
6341 WHERE organization_code = l_org_tbl(i);
6342 IF l_entity_exist>0 THEN
6343 l_entity_count := l_entity_count +1;
6344 l_valid_org_tbl.EXTEND();
6345 l_valid_org_tbl(l_entity_count) := l_org_tbl(i);
6346 ELSE
6347 FND_MESSAGE.set_name('INV','INV_EBI_ORG_CODE_INVALID');
6348 FND_MESSAGE.set_token('COL_VALUE', l_org_tbl(i));
6349 FND_MSG_PUB.add;
6350 RAISE FND_API.G_EXC_ERROR;
6351 END IF;
6352 EXCEPTION
6353 WHEN FND_API.G_EXC_ERROR THEN
6354 x_return_status := FND_API.g_ret_sts_error;
6355 FND_MSG_PUB.count_and_get( p_encoded => FND_API.g_false
6356 ,p_count => x_msg_count
6357 ,p_data => l_msg_data
6358 );
6359 x_msg_data := x_msg_data || l_msg_data ||' , ' ;
6360 WHEN OTHERS THEN
6361 x_return_status := FND_API.g_ret_sts_error;
6362 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.parse_and_get_item';
6363 END;
6364 END LOOP;
6365 END IF;
6366 IF l_valid_item_tbl IS NOT NULL AND l_valid_item_tbl.COUNT > 0 THEN
6367 FOR i in l_valid_item_tbl.FIRST..l_valid_item_tbl.LAST LOOP
6368 BEGIN
6369 FND_MSG_PUB.initialize();
6370 l_count :=0;
6371 IF l_valid_org_tbl IS NOT NULL AND l_valid_org_tbl.COUNT > 0 THEN
6372 FOR j in l_valid_org_tbl.FIRST..l_valid_org_tbl.LAST LOOP
6373 l_pk_col_name_val_pairs := INV_EBI_ITEM_HELPER.inv_ebi_name_value_pair_tbl();
6374 l_pk_col_name_val_pairs.EXTEND();
6375 l_pk_col_name_val_pairs(1).name := 'organization_code';
6376 l_pk_col_name_val_pairs(1).value := l_valid_org_tbl(j);
6377 l_org_id := INV_EBI_ITEM_HELPER.value_to_id( p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
6378 ,p_entity_name => INV_EBI_ITEM_HELPER.G_ORGANIZATION
6379 );
6380 l_pk_col_name_val_pairs.TRIM(1);
6381 l_pk_col_name_val_pairs.EXTEND(2);
6382 l_pk_col_name_val_pairs(1).name := 'concatenated_segments';
6383 l_pk_col_name_val_pairs(1).value := l_valid_item_tbl(i);
6384 l_pk_col_name_val_pairs(2).name := 'organization_id';
6385 l_pk_col_name_val_pairs(2).value := l_org_id;
6386 l_item_id := INV_EBI_ITEM_HELPER.value_to_id( p_pk_col_name_val_pairs => l_pk_col_name_val_pairs
6387 ,p_entity_name => INV_EBI_ITEM_HELPER.G_INVENTORY_ITEM
6388 );
6389 l_pk_col_name_val_pairs.TRIM(2);
6390
6391 IF l_item_id IS NOT NULL THEN
6392 l_counter := l_counter + 1;
6393 l_item_obj := inv_ebi_get_operational_attrs( l_item_id, l_valid_item_tbl(i) , l_org_id, l_valid_org_tbl(j),NULL,NULL);
6394 l_item_output_tbl.EXTEND(1);
6395 l_item_output_tbl(l_counter) := l_item_obj;
6396 l_count := 1;
6397 END IF;
6398
6399 END LOOP;
6400 ELSE
6401 FOR cur IN c_get_all_orgs(l_valid_item_tbl(i)) LOOP
6402 l_counter := l_counter + 1;
6403 l_item_obj := inv_ebi_get_operational_attrs( cur.inventory_item_id, l_valid_item_tbl(i) , cur.organization_id, cur.organization_code,NULL,NULL);
6404 l_item_output_tbl.EXTEND(1);
6405 l_item_output_tbl(l_counter) := l_item_obj;
6406 l_count := 1;
6407 END LOOP;
6408 END IF;
6409
6410 IF l_count = 0 THEN
6411 FND_MESSAGE.set_name('INV','INV_EBI_INVALID_USER_INPUT');
6412 FND_MESSAGE.set_token('USER_INPUT', l_valid_item_tbl(i));
6413 FND_MSG_PUB.add;
6414 RAISE FND_API.G_EXC_ERROR;
6415 END IF;
6416 EXCEPTION
6417 WHEN FND_API.G_EXC_ERROR THEN
6418 x_return_status := FND_API.g_ret_sts_error;
6419 FND_MSG_PUB.count_and_get( p_encoded => FND_API.g_false
6420 ,p_count => x_msg_count
6421 ,p_data => l_msg_data
6422 );
6423 x_msg_data := x_msg_data || l_msg_data ;
6424 WHEN OTHERS THEN
6425 x_return_status := FND_API.g_ret_sts_unexp_error;
6426 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.parse_and_get_item';
6427 END;
6428 END LOOP;
6429 END IF;
6430 x_item_tbl := l_item_output_tbl;
6431 IF (x_item_tbl.count > 0) THEN
6432 FOR i IN 1 .. x_item_tbl.count
6433 LOOP
6434 INV_EBI_UTIL.debug_line('STEP 40: ITEM NAME FROM OUT TABLE '|| x_item_tbl(i).item_name);
6435 INV_EBI_UTIL.debug_line('STEP 50: ORGANIZATION CODE FROM OUT TABLE '|| x_item_tbl(i).organization_code);
6436 INV_EBI_UTIL.debug_line('STEP 60: OPERATING UNIT FROM OUT TABLE '|| x_item_tbl(i).operating_unit);
6437 END LOOP;
6438 END IF;
6439 INV_EBI_UTIL.debug_line('STEP 70: END INSIDE INV_EBI_ITEM_HELPER.parse_and_get_item RETURN STATUS: '|| x_return_status);
6440 EXCEPTION
6441 WHEN OTHERS THEN
6442 x_return_status := FND_API.g_ret_sts_unexp_error;
6443 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.parse_and_get_item';
6444 END parse_and_get_item;
6445
6446 /************************************************************************************
6447 -- API name : parse_source_system_string
6448 -- Type : Public
6449 -- Function : To parse the input string
6450 ************************************************************************************/
6451
6452 FUNCTION parse_source_system_string(
6453 p_input_string IN VARCHAR2
6454 )
6455 RETURN FND_TABLE_OF_VARCHAR2_255
6456 IS
6457 l_cross_reference_type VARCHAR2(32000);
6458 l_count NUMBER:=0;
6459 l_parsed_tbl FND_TABLE_OF_VARCHAR2_255;
6460 BEGIN
6461 l_cross_reference_type := TRIM(',' FROM p_input_string);
6462 l_parsed_tbl := FND_TABLE_OF_VARCHAR2_255();
6463 l_cross_reference_type := l_cross_reference_type || ',';
6464 WHILE INSTR(l_cross_reference_type,',') > 0 LOOP
6465 l_parsed_tbl.EXTEND(1);
6466 l_count := l_count+1;
6467 l_parsed_tbl(l_count) := SUBSTR(l_cross_reference_type,1,INSTR(l_cross_reference_type,',')-1) ;
6468 l_cross_reference_type := SUBSTR(l_cross_reference_type,INSTR(l_cross_reference_type,',')+1);
6469 END LOOP;
6470 RETURN l_parsed_tbl;
6471 END parse_source_system_string;
6472
6473 /************************************************************************************
6474 -- API name : get_item_attributes_list
6475 -- Type : Public For Internal Use Only
6476 -- Function :
6477 ************************************************************************************/
6478 PROCEDURE get_item_attributes_list(
6479 p_name_value_list IN inv_ebi_name_value_tbl
6480 ,p_prog_id IN NUMBER
6481 ,p_appl_id IN NUMBER
6482 ,p_cross_reference_type IN VARCHAR2
6483 ,x_items OUT NOCOPY inv_ebi_get_opr_attrs_tbl
6484 ,x_return_status OUT NOCOPY VARCHAR2
6485 ,x_msg_count OUT NOCOPY NUMBER
6486 ,x_msg_data OUT NOCOPY VARCHAR2
6487 )
6488 IS
6489 l_return_status VARCHAR2(2);
6490 l_item_string VARCHAR2(32000);
6491 l_org_string VARCHAR2(32000);
6492 l_from_date DATE := NULL;
6493 l_to_date DATE := NULL;
6494 l_from_date_str VARCHAR2(30);
6495 l_to_date_str VARCHAR2(30);
6496 l_last_x_hrs NUMBER;
6497 l_item_org_output_tbl inv_ebi_get_opr_attrs_tbl;
6498 l_item_tbl inv_ebi_get_opr_attrs_tbl;
6499 l_item_output_tbl inv_ebi_get_opr_attrs_tbl;
6500 l_item_tbl_flst inv_ebi_get_opr_attrs_tbl;
6501 l_msg_data VARCHAR2(2000);
6502 l_msg_count NUMBER;
6503 l_parsed_tbl FND_TABLE_OF_VARCHAR2_255;
6504
6505 CURSOR c_get_item_list_pim IS
6506 SELECT inv_ebi_get_operational_attrs(item_pim.inventory_item_id,item_pim.concatenated_segments,item_pim.organization_id,item_pim.organization_code,NULL,NULL)
6507 FROM
6508 (SELECT mcr.inventory_item_id, msik.concatenated_segments, msi.organization_id, mp.organization_code
6509 FROM mtl_cross_references_b mcr, mtl_system_items_b msi, mtl_parameters mp, mtl_system_items_kfv msik, hz_orig_systems_b hz
6510 WHERE mcr.inventory_item_id = msi.inventory_item_id
6511 --AND mcr.organization_id = msi.organization_id --8897962 mcr has organization_id value as null
6512 AND hz.orig_system IN (SELECT * FROM THE(SELECT CAST(l_parsed_tbl AS FND_TABLE_OF_VARCHAR2_255) FROM DUAL))
6513 AND hz.orig_system_id = mcr.source_system_id
6514 AND msi.organization_id = mp.organization_id
6515 AND msik.organization_id = msi.organization_id
6516 AND msik.inventory_item_id = msi.inventory_item_id
6517 AND msi.last_update_date <> msi.creation_date
6518 AND msi.last_update_date >= l_from_date
6519 AND msi.last_update_date <= l_to_date
6520 UNION
6521 SELECT cic.inventory_item_id, msik.concatenated_segments, cic.organization_id, mp.organization_code
6522 FROM mtl_cross_references_b mcr, cst_item_costs cic,mtl_parameters mp, mtl_system_items_kfv msik, hz_orig_systems_b hz
6523 WHERE mcr.inventory_item_id = cic.inventory_item_id
6524 --AND mcr.organization_id = cic.organization_id
6525 AND msik.organization_id = mp.organization_id
6526 AND msik.organization_id = cic.organization_id
6527 AND msik.inventory_item_id = cic.inventory_item_id
6528 AND cic.last_update_date <> cic.creation_date
6529 AND hz.orig_system IN (SELECT * FROM THE(SELECT CAST(l_parsed_tbl AS FND_TABLE_OF_VARCHAR2_255) FROM DUAL))
6530 AND hz.orig_system_id = mcr.source_system_id
6531 AND cic.last_update_date >= l_from_date
6532 AND cic.last_update_date <= l_to_date
6533 UNION
6534 SELECT cql.inventory_item_id, msik.concatenated_segments, cql.organization_id, mp.organization_code
6535 FROM mtl_cross_references_b mcr, cst_quantity_layers cql, mtl_parameters mp, mtl_system_items_kfv msik, hz_orig_systems_b hz
6536 WHERE mcr.inventory_item_id = cql.inventory_item_id
6537 --AND mcr.organization_id = cql.organization_id
6538 AND msik.organization_id = mp.organization_id
6539 AND hz.orig_system IN (SELECT * FROM THE(SELECT CAST(l_parsed_tbl AS FND_TABLE_OF_VARCHAR2_255) FROM DUAL))
6540 AND hz.orig_system_id = mcr.source_system_id
6541 AND msik.organization_id = cql.organization_id
6542 AND msik.inventory_item_id = cql.inventory_item_id
6543 AND cql.last_update_date >= l_from_date
6544 AND cql.last_update_date <= l_to_date) item_pim;
6545
6546 CURSOR c_get_item_list IS
6547 SELECT inv_ebi_get_operational_attrs(item_npim.inventory_item_id,item_npim.concatenated_segments,item_npim.organization_id,item_npim.organization_code,NULL,NULL)
6548 FROM
6549 (SELECT msi.inventory_item_id, msik.concatenated_segments, msi.organization_id, mp.organization_code
6550 FROM mtl_system_items_b msi, mtl_parameters mp, mtl_system_items_kfv msik
6551 WHERE msi.organization_id = mp.organization_id
6552 AND msik.organization_id = msi.organization_id
6553 AND msik.inventory_item_id = msi.inventory_item_id
6554 AND msi.last_update_date <> msi.creation_date
6555 AND msi.last_update_date >= l_from_date
6556 AND msi.last_update_date <= l_to_date
6557 UNION
6558 SELECT cic.inventory_item_id, msik.concatenated_segments, cic.organization_id, mp.organization_code
6559 FROM cst_item_costs cic, mtl_parameters mp, mtl_system_items_kfv msik
6560 WHERE cic.organization_id = mp.organization_id
6561 AND msik.organization_id = cic.organization_id
6562 AND msik.inventory_item_id = cic.inventory_item_id
6563 AND cic.last_update_date <> cic.creation_date
6564 AND cic.last_update_date >= l_from_date
6565 AND cic.last_update_date <= l_to_date
6566 UNION
6567 SELECT cql.inventory_item_id, msik.concatenated_segments, cql.organization_id, mp.organization_code
6568 FROM cst_quantity_layers cql,mtl_parameters mp, mtl_system_items_kfv msik
6569 WHERE cql.organization_id=mp.organization_id
6570 AND msik.organization_id = cql.organization_id
6571 AND msik.inventory_item_id = cql.inventory_item_id
6572 AND cql.last_update_date >= l_from_date
6573 AND cql.last_update_date <= l_to_date
6574 ) item_npim;
6575
6576 CURSOR c_get_item_flist IS
6577 SELECT inv_ebi_get_operational_attrs(item_flst.item_id,item_flst.item_name,item_flst.organization_id,item_flst.organization_code,NULL,NULL)
6578 FROM (
6579 SELECT a.item_id,a.item_name, a.organization_id,a.organization_code
6580 FROM THE (SELECT CAST( l_item_output_tbl as inv_ebi_get_opr_attrs_tbl)
6581 FROM dual ) a
6582 INTERSECT
6583 SELECT b.item_id,b.item_name, b.organization_id,b.organization_code
6584 FROM THE (SELECT CAST( l_item_tbl as inv_ebi_get_opr_attrs_tbl)
6585 FROM dual ) b
6586 ) item_flst;
6587 BEGIN
6588 FND_MSG_PUB.initialize();
6589 INV_EBI_UTIL.setup();
6590 INV_EBI_UTIL.debug_line('STEP 10: START CALLING INV_EBI_ITEM_HELPER.GET_ITEM_ATTRIBUTES_LIST');
6591 x_return_status := FND_API.g_ret_sts_success;
6592
6593 IF (p_cross_reference_type IS NOT NULL AND p_cross_reference_type <> FND_API.G_MISS_CHAR) THEN
6594 l_parsed_tbl := parse_source_system_string(p_cross_reference_type);
6595 END IF;
6596
6597 --Getting the values for the parameters passed from CP
6598 IF (p_name_value_list IS NOT NULL AND p_name_value_list.COUNT > 0) THEN
6599 l_item_string := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'Item Name');
6600 l_org_string := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'Organization Code');
6601 l_from_date_str := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'From Date');
6602 l_to_date_str := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'To Date');
6603 l_last_x_hrs := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'Updated in the last X Hrs');
6604
6605 INV_EBI_UTIL.debug_line('STEP 20: INPUT PARAMETER FOR ITEM IS ' || l_item_string);
6606 INV_EBI_UTIL.debug_line('STEP 30: INPUT PARAMETER FOR ORG IS ' || l_org_string);
6607 INV_EBI_UTIL.debug_line('STEP 40: INPUT PARAMETER FOR FROM DATE IS ' || l_from_date_str);
6608 INV_EBI_UTIL.debug_line('STEP 50: INPUT PARAMETER FOR TO DATE IS ' || l_to_date_str);
6609 INV_EBI_UTIL.debug_line('STEP 60: INPUT PARAMETER FOR LAST UPDATED HRS IS '|| l_last_x_hrs);
6610
6611 IF l_from_date_str IS NOT NULL THEN
6612 l_from_date := TO_DATE(l_from_date_str,'YYYY/MM/DD HH24:MI:SS');
6613 INV_EBI_UTIL.debug_line('STEP 70: FROM DATE CONVERSION IF IT IS NOT NULL ' || l_from_date);
6614 END IF;
6615
6616 IF l_to_date_str IS NOT NULL THEN
6617 l_to_date := TO_DATE(l_to_date_str,'YYYY/MM/DD HH24:MI:SS');
6618 INV_EBI_UTIL.debug_line('STEP 80: TO DATE CONVERSION IF IT IS NOT NULL ' || l_to_date);
6619 END IF;
6620
6621 IF l_last_x_hrs IS NOT NULL THEN
6622 l_from_date := SYSDATE-( l_last_x_hrs/24);
6623 l_to_date := SYSDATE ;
6624 INV_EBI_UTIL.debug_line('STEP 90: FROM DATE IF THE LAST X HRS PARAMATER IS GIVEN ' || l_from_date);
6625 INV_EBI_UTIL.debug_line('STEP 100: TO DATE IF THE LAST X HRS PARAMATER IS GIVEN ' || l_to_date);
6626 END IF;
6627 END IF;
6628
6629 -- If all the parameter values are null then fetch items that got updated
6630 -- from the last successfull completiopn date of CP
6631 IF (l_item_string IS NULL AND l_from_date IS NULL AND l_to_date IS NULL AND l_last_x_hrs IS NULL) THEN
6632 l_from_date :=INV_EBI_ITEM_HELPER.get_last_run_date( p_conc_prog_id => p_prog_id
6633 ,p_appl_id => p_appl_id
6634 );
6635 INV_EBI_UTIL.debug_line('STEP 110: FROM DATE IF ALL THE PARAMETERS ARE NULL '|| l_from_date);
6636 l_to_date := SYSDATE;
6637 END IF;
6638
6639 IF l_from_date IS NOT NULL AND l_to_date IS NULL THEN
6640 l_to_date := SYSDATE;
6641 END IF;
6642
6643 -- Get the valid combination of Items and Organizations
6644 IF ( l_item_string IS NOT NULL ) THEN
6645 INV_EBI_UTIL.debug_line('STEP 120: BEFORE CALLING PARSE_AND_GET_ITEM');
6646 parse_and_get_item( p_item_names => l_item_string
6647 ,p_org_codes => l_org_string
6648 ,x_item_tbl => l_item_output_tbl
6649 ,x_return_status => l_return_status
6650 ,x_msg_count => l_msg_count
6651 ,x_msg_data => l_msg_data);
6652 INV_EBI_UTIL.debug_line('STEP 130: AFTER CALLING PARSE_AND_GET_ITEM RETURN STATUS: '|| l_return_status);
6653 END IF;
6654
6655
6656 IF (l_return_status <> FND_API.g_ret_sts_success) THEN
6657 x_return_status := l_return_status;
6658 IF l_msg_data IS NOT NULL THEN
6659 x_msg_data := l_msg_data;
6660 END IF;
6661 END IF;
6662
6663 x_items := l_item_output_tbl;
6664
6665 -- Filtering the Items that got updated within the given dates
6666 IF (l_from_date IS NOT NULL AND l_to_date IS NOT NULL) THEN
6667 IF(INV_EBI_UTIL.is_pim_installed AND l_parsed_tbl IS NOT NULL AND l_parsed_tbl.COUNT>0) THEN
6668 INV_EBI_UTIL.debug_line('STEP 140: INSIDE THE IF PART OF FILTERING THE ITEMS WITH IN GIVEN DATES');
6669 --Fetched the data based on the source system reference
6670 IF (c_get_item_list_pim%ISOPEN) THEN
6671 CLOSE c_get_item_list_pim;
6672 END IF;
6673 OPEN c_get_item_list_pim;
6674 FETCH c_get_item_list_pim BULK COLLECT INTO l_item_tbl;
6675 CLOSE c_get_item_list_pim;
6676 ELSE
6677 --Fetch all the records irrespective of source system reference
6678 INV_EBI_UTIL.debug_line('STEP 150: INSIDE THE ELSE PART OF FILTERING THE ITEMS WITH IN GIVEN DATES');
6679 IF (c_get_item_list%ISOPEN) THEN
6680 CLOSE c_get_item_list;
6681 END IF;
6682 OPEN c_get_item_list;
6683 FETCH c_get_item_list BULK COLLECT INTO l_item_tbl;
6684 CLOSE c_get_item_list;
6685 END IF;
6686 IF (l_item_tbl.count > 0 ) THEN
6687 FOR i IN 1 .. l_item_tbl.count
6688 LOOP
6689 INV_EBI_UTIL.debug_line('STEP 160: ITEM NAME FROM ITEM LIST IS '|| l_item_tbl(i).item_name);
6690 INV_EBI_UTIL.debug_line('STEP 170: ORG CODE FROM ITEM LIST IS '|| l_item_tbl(i).organization_code);
6691 END LOOP;
6692 END IF;
6693
6694 IF (l_item_string IS NOT NULL) THEN
6695 IF (c_get_item_flist%ISOPEN) THEN
6696 CLOSE c_get_item_flist;
6697 END IF;
6698 OPEN c_get_item_flist;
6699 FETCH c_get_item_flist BULK COLLECT INTO l_item_tbl_flst;
6700 CLOSE c_get_item_flist;
6701 x_items := l_item_tbl_flst;
6702 -- Filtering the Items that got updated in the specified time in the given Orgs
6703 ELSIF (l_org_string IS NOT NULL) THEN
6704 INV_EBI_UTIL.debug_line('STEP 180: BEFORE CALLING FILTER ITEMS BASED ON ORG');
6705 filter_items_based_on_org( p_org_codes => l_org_string
6706 ,p_item_tbl => l_item_tbl
6707 ,x_item_tbl => l_item_org_output_tbl
6708 ,x_return_status => l_return_status
6709 ,x_msg_count => l_msg_count
6710 ,x_msg_data => l_msg_data);
6711 INV_EBI_UTIL.debug_line('STEP 190: AFTER CALLING FILTER ITEMS BASED ON ORG RETURN STATUS: '|| l_return_status);
6712 IF (l_return_status = FND_API.g_ret_sts_success) THEN
6713 x_items := l_item_org_output_tbl;
6714 ELSE
6715 x_return_status := l_return_status;
6716 IF l_msg_data IS NOT NULL THEN
6717 x_msg_data := l_msg_data;
6718 END IF;
6719 END IF;
6720 ELSE
6721 x_items := l_item_tbl;
6722 END IF;
6723 END IF;
6724 IF (x_items.count > 0) THEN
6725 FOR i IN 1 .. x_items.count
6726 LOOP
6727 INV_EBI_UTIL.debug_line('STEP 200: ITEM NAME '|| x_items(i).item_name ||' ORGANIZATION ID '|| x_items(i).organization_id || ' ORGANIZATION CODE '|| x_items(i).organization_code);
6728 END LOOP;
6729 END IF;
6730 IF x_items is NOT NULL AND x_items.COUNT > 0 then
6731 INV_EBI_UTIL.debug_line('STEP 210: BEFORE CALLING INV_EBI_ITEM_HELPER.get_Operating_unit');
6732 FOR i IN 1..x_items.COUNT
6733 LOOP
6734 get_Operating_unit
6735 (p_oranization_id => x_items(i).organization_id
6736 ,x_operating_unit => x_items(i).operating_unit
6737 ,x_ouid => x_items(i).operating_unit_id
6738 );
6739 END LOOP;
6740 INV_EBI_UTIL.debug_line('STEP 220: AFTER CALLING INV_EBI_ITEM_HELPER.get_Operating_unit');
6741 END IF;
6742 INV_EBI_UTIL.debug_line('STEP 230: END CALLING INV_EBI_ITEM_HELPER.get_item_attributes_list RETURN STATUS: '|| x_return_status);
6743 INV_EBI_UTIL.wrapup;
6744 EXCEPTION
6745 WHEN OTHERS THEN
6746 x_return_status := FND_API.g_ret_sts_unexp_error;
6747 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.get_item_attributes_list';
6748 IF (c_get_item_flist%ISOPEN) THEN
6749 CLOSE c_get_item_flist;
6750 END IF;
6751 IF (c_get_item_list%ISOPEN) THEN
6752 CLOSE c_get_item_list;
6753 END IF;
6754 IF (c_get_item_list_pim%ISOPEN) THEN
6755 CLOSE c_get_item_list_pim;
6756 END IF;
6757 END get_item_attributes_list;
6758
6759 /************************************************************************************
6760 -- API name : get_item_balance_list
6761 -- Type : Public
6762 -- Function :
6763 ************************************************************************************/
6764 PROCEDURE get_item_balance_list(
6765 p_name_value_list IN inv_ebi_name_value_tbl
6766 ,p_prog_id IN NUMBER
6767 ,p_appl_id IN NUMBER
6768 ,p_cross_reference_type IN VARCHAR2
6769 ,x_items OUT NOCOPY inv_ebi_get_opr_attrs_tbl
6770 ,x_return_status OUT NOCOPY VARCHAR2
6771 ,x_msg_count OUT NOCOPY NUMBER
6772 ,x_msg_data OUT NOCOPY VARCHAR2
6773 )
6774 IS
6775 l_return_status VARCHAR2(2);
6776 l_item_string VARCHAR2(32000);
6777 l_org_string VARCHAR2(32000);
6778 l_item_name VARCHAR2(40);
6779 l_org_code VARCHAR2(40);
6780 l_from_date DATE := NULL;
6781 l_to_date DATE := NULL;
6782 l_from_date_str VARCHAR2(30);
6783 l_to_date_str VARCHAR2(30);
6784 l_last_x_hrs NUMBER;
6785 l_item_tbl inv_ebi_get_opr_attrs_tbl;
6786 l_item_output_tbl inv_ebi_get_opr_attrs_tbl;
6787 l_item_org_output_tbl inv_ebi_get_opr_attrs_tbl;
6788 l_item_tbl_flst inv_ebi_get_opr_attrs_tbl;
6789 l_msg_data VARCHAR2(2000);
6790 l_msg_count NUMBER;
6791 l_parsed_tbl FND_TABLE_OF_VARCHAR2_255;
6792
6793 CURSOR c_get_bal_item_lst_pim IS --8897962
6794 SELECT inv_ebi_get_operational_attrs(gibp.inventory_item_id,gibp.concatenated_segments, gibp.organization_id,gibp.organization_code,NULL,NULL)
6795 FROM (
6796 SELECT DISTINCT mcr.inventory_item_id,msik.concatenated_segments,moq.organization_id,mp.organization_code
6797 FROM mtl_onhand_quantities_detail moq,mtl_cross_references_b mcr, mtl_parameters mp, mtl_system_items_kfv msik, hz_orig_systems_b hz
6798 WHERE mcr.inventory_item_id = moq.inventory_item_id
6799 --AND mcr.organization_id = moq.organization_id
6800 AND moq.organization_id = mp.organization_id
6801 AND msik.organization_id = moq.organization_id
6802 AND msik.inventory_item_id = moq.inventory_item_id
6803 AND hz.orig_system IN (SELECT * FROM THE(SELECT CAST(l_parsed_tbl AS FND_TABLE_OF_VARCHAR2_255) FROM DUAL))
6804 AND hz.orig_system_id = mcr.source_system_id
6805 AND moq.last_update_date >= l_from_date
6806 AND moq.last_update_date <= l_to_date) gibp;
6807
6808 CURSOR c_get_bal_item_lst IS
6809 SELECT inv_ebi_get_operational_attrs(gib.inventory_item_id,gib.concatenated_segments, gib.organization_id,gib.organization_code,NULL,NULL)
6810 FROM (SELECT DISTINCT moq.inventory_item_id,msik.concatenated_segments,moq.organization_id,mp.organization_code
6811 FROM mtl_onhand_quantities_detail moq, mtl_parameters mp, mtl_system_items_kfv msik
6812 WHERE moq.organization_id = mp.organization_id
6813 AND msik.organization_id = moq.organization_id
6814 AND msik.inventory_item_id = moq.inventory_item_id
6815 AND moq.last_update_date >= l_from_date
6816 AND moq.last_update_date <= l_to_date) gib;
6817
6818 CURSOR c_get_bal_item_flst IS
6819 SELECT inv_ebi_get_operational_attrs(gibf.item_id,gibf.item_name, gibf.organization_id,gibf.organization_code,NULL,NULL)
6820 FROM (
6821 SELECT a.item_id,a.item_name, a.organization_id,a.organization_code
6822 FROM THE (SELECT cast( l_item_output_tbl as inv_ebi_get_opr_attrs_tbl)
6823 FROM dual ) a
6824 INTERSECT
6825 SELECT b.item_id,b.item_name, b.organization_id,b.organization_code
6826 FROM THE (SELECT cast( l_item_tbl as inv_ebi_get_opr_attrs_tbl)
6827 FROM dual ) b ) gibf;
6828
6829 BEGIN
6830 FND_MSG_PUB.initialize();
6831 INV_EBI_UTIL.setup();
6832 INV_EBI_UTIL.debug_line('STEP 10: INSIDE INV_EBI_ITEM_HELPER.get_item_balance_list');
6833 x_return_status := FND_API.g_ret_sts_success;
6834
6835 IF (p_cross_reference_type IS NOT NULL AND p_cross_reference_type <> FND_API.G_MISS_CHAR) THEN
6836 l_parsed_tbl := parse_source_system_string(p_cross_reference_type);
6837 END IF;
6838
6839 IF (p_name_value_list IS NOT NULL AND p_name_value_list.COUNT > 0) THEN
6840 l_item_string := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'Item Name');
6841 l_org_string := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'Organization Code');
6842 l_from_date_str := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'From Date');
6843 l_to_date_str := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'To Date');
6844 l_last_x_hrs := INV_EBI_UTIL.get_config_param_value(p_name_value_list,'Updated in the last X Hrs');
6845
6846 INV_EBI_UTIL.debug_line('STEP 20: INPUT PARAMETER FOR ITEM IS ' || l_item_string);
6847 INV_EBI_UTIL.debug_line('STEP 30: INPUT PARAMETER FOR ORG IS ' || l_org_string);
6848 INV_EBI_UTIL.debug_line('STEP 40: INPUT PARAMETER FOR FROM DATE IS ' || l_from_date_str);
6849 INV_EBI_UTIL.debug_line('STEP 50: INPUT PARAMETER FOR TO DATE IS ' || l_to_date_str);
6850 INV_EBI_UTIL.debug_line('STEP 60: INPUT PARAMETER FOR LAST UPDATED HRS IS '|| l_last_x_hrs);
6851
6852 IF l_from_date_str IS NOT NULL THEN
6853 l_from_date := TO_DATE(l_from_date_str,'YYYY/MM/DD HH24:MI:SS');
6854 INV_EBI_UTIL.debug_line('STEP 70: INSIDE IF OF FROM DATE FORMAT :'|| l_from_date);
6855 END IF;
6856
6857 IF l_to_date_str IS NOT NULL THEN
6858 l_to_date := TO_DATE(l_to_date_str,'YYYY/MM/DD HH24:MI:SS');
6859 INV_EBI_UTIL.debug_line('STEP 80: INSIDE IF OF TO DATE FORMAT '|| l_to_date);
6860 END IF;
6861
6862 IF l_last_x_hrs IS NOT NULL THEN
6863 l_from_date := SYSDATE-( l_last_x_hrs/24);
6864 l_to_date := SYSDATE ;
6865 INV_EBI_UTIL.debug_line('STEP 90: FROM DATE IF LAST X HRS IS GIVEN '|| l_from_date);
6866 INV_EBI_UTIL.debug_line('STEP 100: TO DATE IF LAST X HRS IS GIVEN '|| l_to_date);
6867 END IF;
6868 END IF;
6869
6870 IF (l_item_string IS NULL AND l_from_date IS NULL AND l_to_date IS NULL AND l_last_x_hrs IS NULL) THEN
6871 l_from_date :=get_last_run_date( p_conc_prog_id => p_prog_id
6872 ,p_appl_id => p_appl_id
6873 );
6874 INV_EBI_UTIL.debug_line('STEP 110: FROM DATE WHEN ALL THE PARAMETERS ARE PASSED AS NULL '||l_from_date);
6875 l_to_date := SYSDATE;
6876 END IF;
6877
6878 IF l_from_date IS NOT NULL AND l_to_date IS NULL THEN
6879 l_to_date := SYSDATE;
6880 END IF;
6881
6882 IF ( l_item_string IS NOT NULL ) THEN
6883 INV_EBI_UTIL.debug_line('STEP 120: BEFORE CALLING PARSE AND GET ITEM');
6884 parse_and_get_item( p_item_names => l_item_string
6885 ,p_org_codes => l_org_string
6886 ,x_item_tbl => l_item_output_tbl
6887 ,x_return_status => l_return_status
6888 ,x_msg_count => l_msg_count
6889 ,x_msg_data => l_msg_data);
6890 END IF;
6891 INV_EBI_UTIL.debug_line('STEP 130: AFTER CALLING PARSE AND GET ITEM STATUS: '|| l_return_status);
6892 IF (l_return_status <> FND_API.g_ret_sts_success) THEN
6893 x_return_status := l_return_status;
6894 IF l_msg_data IS NOT NULL THEN
6895 x_msg_data := l_msg_data;
6896 END IF;
6897 END IF;
6898
6899 x_items := l_item_output_tbl;
6900
6901 IF (l_from_date IS NOT NULL AND l_to_date IS NOT NULL) THEN
6902 IF(INV_EBI_UTIL.is_pim_installed AND l_parsed_tbl IS NOT NULL AND l_parsed_tbl.COUNT>0) THEN
6903 INV_EBI_UTIL.debug_line('STEP 140: INSIDE IF BLOCK IF FROM DATE AND TO DATE IS NOT NULL');
6904 --Fetched the data based on the source system reference
6905 IF (c_get_bal_item_lst_pim%ISOPEN) THEN
6906 CLOSE c_get_bal_item_lst_pim;
6907 END IF;
6908 OPEN c_get_bal_item_lst_pim;
6909 FETCH c_get_bal_item_lst_pim BULK COLLECT INTO l_item_tbl;
6910 CLOSE c_get_bal_item_lst_pim;
6911 ELSE
6912 INV_EBI_UTIL.debug_line('STEP 150: INSIDE ELSE BLOCK IF FROM DATE AND TO DATE IS NOT NULL');
6913 IF (c_get_bal_item_lst%ISOPEN) THEN
6914 CLOSE c_get_bal_item_lst;
6915 END IF;
6916 OPEN c_get_bal_item_lst;
6917 FETCH c_get_bal_item_lst BULK COLLECT INTO l_item_tbl;
6918 CLOSE c_get_bal_item_lst;
6919 END IF;
6920 IF (l_item_tbl.count >0) THEN
6921 FOR i IN 1 .. l_item_tbl.count
6922 LOOP
6923 INV_EBI_UTIL.debug_line('STEP 160: ITEM NAME FROM ITEM LIST IS '|| l_item_tbl(i).item_name);
6924 INV_EBI_UTIL.debug_line('STEP 170: ORG CODE FROM ITEM LIST IS '|| l_item_tbl(i).organization_code);
6925 END LOOP;
6926 END IF;
6927
6928 IF (l_item_string IS NOT NULL) THEN
6929 IF (c_get_bal_item_flst%ISOPEN) THEN
6930 CLOSE c_get_bal_item_flst;
6931 END IF;
6932 OPEN c_get_bal_item_flst;
6933 FETCH c_get_bal_item_flst BULK COLLECT INTO l_item_tbl_flst;
6934 CLOSE c_get_bal_item_flst;
6935 x_items := l_item_tbl_flst;
6936 ELSIF (l_org_string IS NOT NULL) THEN
6937 INV_EBI_UTIL.debug_line('STEP 180: BEFORE CALLING FILTER ITEMS BASED ON ORG');
6938 filter_items_based_on_org( p_org_codes => l_org_string
6939 ,p_item_tbl => l_item_tbl
6940 ,x_item_tbl => l_item_org_output_tbl
6941 ,x_return_status => l_return_status
6942 ,x_msg_count => l_msg_count
6943 ,x_msg_data => l_msg_data);
6944 INV_EBI_UTIL.debug_line('STEP 190: AFTER CALLING FILTER ITEMS BASED ON ORG STATUS: '|| l_return_status);
6945 IF (l_return_status = FND_API.g_ret_sts_success) THEN
6946 x_items := l_item_org_output_tbl;
6947 ELSE
6948 x_return_status := l_return_status;
6949 IF x_msg_data IS NOT NULL THEN
6950 x_msg_data := x_msg_data || l_msg_data;
6951 ELSE
6952 x_msg_data := l_msg_data;
6953 END IF;
6954 END IF;
6955 ELSE
6956 x_items := l_item_tbl;
6957 END IF;
6958 END IF;
6959 IF (x_items.count > 0) THEN
6960 FOR i IN 1 .. x_items.count
6961 LOOP
6962 INV_EBI_UTIL.debug_line('STEP 200: ITEM NAME '|| x_items(i).item_name ||' ORGANIZATION CODE '|| x_items(i).organization_code);
6963 END LOOP;
6964 END IF;
6965 -- for Operating unit Pouplation
6966 IF x_items is NOT NULL AND x_items.COUNT > 0 then
6967 INV_EBI_UTIL.debug_line('STEP 210: BEFORE CALLING GET OPERATING UNIT');
6968 FOR i IN 1..x_items.COUNT
6969 LOOP
6970 get_Operating_unit
6971 (p_oranization_id => x_items(i).organization_id
6972 ,x_operating_unit => x_items(i).operating_unit
6973 ,x_ouid => x_items(i).operating_unit_id
6974 );
6975 END LOOP;
6976 INV_EBI_UTIL.debug_line('STEP 220: AFTER CALLING GET OPERATING UNIT');
6977 END IF;
6978 INV_EBI_UTIL.debug_line('STEP 230: END CALLING INV_EBI_ITEM_HELPER.get_item_balance_list STATUS: '|| x_return_status);
6979 INV_EBI_UTIL.wrapup;
6980 EXCEPTION
6981 WHEN OTHERS THEN
6982 x_return_status := FND_API.g_ret_sts_unexp_error;
6983 x_msg_data := SQLERRM ||' at INV_EBI_ITEM_HELPER.get_item_balance_list';
6984 IF (c_get_bal_item_flst%ISOPEN) THEN
6985 CLOSE c_get_bal_item_flst;
6986 END IF;
6987 IF (c_get_bal_item_lst%ISOPEN) THEN
6988 CLOSE c_get_bal_item_lst;
6989 END IF;
6990 IF (c_get_bal_item_lst_pim%ISOPEN) THEN
6991 CLOSE c_get_bal_item_lst_pim;
6992 END IF;
6993 END get_item_balance_list;
6994 /************************************************************************************
6995 -- API name : get_Operating_unit
6996 -- Type : Public
6997 -- Function :
6998 ************************************************************************************/
6999 PROCEDURE get_Operating_unit
7000 (p_oranization_id IN NUMBER
7001 ,x_operating_unit OUT NOCOPY VARCHAR2
7002 ,x_ouid OUT NOCOPY NUMBER
7003 )
7004 IS
7005 CURSOR c_operating_unit(cp_organization_id NUMBER)
7006 IS
7007 SELECT operating_unit,name
7008 FROM ORG_ORGANIZATION_DEFINITIONS orgdef,
7009 HR_OPERATING_UNITS hrou
7010 WHERE orgdef.organization_id = cp_organization_id
7011 AND hrou.organization_id=orgdef.operating_unit;
7012 BEGIN
7013 IF (c_operating_unit%ISOPEN) THEN
7014 CLOSE c_operating_unit;
7015 END IF;
7016 OPEN c_operating_unit(p_oranization_id);
7017 FETCH c_operating_unit into x_ouid,x_operating_unit;
7018 CLOSE c_operating_unit;
7019 EXCEPTION WHEN OTHERS
7020 THEN
7021 IF (c_operating_unit%ISOPEN) THEN
7022 CLOSE c_operating_unit;
7023 END IF;
7024 END get_Operating_unit;
7025
7026 /************************************************************************************
7027 -- API name : set_server_time_zone
7028 -- Type : Public
7029 -- Function :
7030 ************************************************************************************/
7031 PROCEDURE set_server_time_zone
7032 IS
7033 l_server_tz VARCHAR2(50);
7034 l_tzoffset VARCHAR2(10);
7035 BEGIN
7036
7037 INV_EBI_ITEM_HELPER.G_TIME_ZONE_OFFSET := NULL;
7038
7039 SELECT timezone_code
7040 INTO l_server_tz
7041 FROM fnd_timezones_b
7042 WHERE upgrade_tz_id = fnd_profile.value('SERVER_TIMEZONE_ID')
7043 AND UPPER(enabled_flag)='Y';
7044
7045 SELECT TZ_OFFSET(l_server_tz)
7046 INTO l_tzoffset
7047 FROM DUAL;
7048
7049 INV_EBI_ITEM_HELPER.G_TIME_ZONE_OFFSET := l_tzoffset;
7050
7051 EXCEPTION
7052 WHEN OTHERS THEN
7053 NULL;
7054 END set_server_time_zone;
7055 /************************************************************************************
7056 -- API name : convert_date_str
7057 -- Type : Public
7058 -- Function :
7059 ************************************************************************************/
7060 FUNCTION convert_date_str(p_datetime IN DATE)
7061 RETURN VARCHAR2
7062 IS
7063 l_ret_tz VARCHAR2(50);
7064 BEGIN
7065 IF(p_datetime IS NOT NULL AND p_datetime<>FND_API.G_MISS_DATE) THEN
7066 l_ret_tz := SUBSTR(TO_CHAR(p_datetime,'YYYY-MM-DD"T"HH24:MI:SS')||INV_EBI_ITEM_HELPER.G_TIME_ZONE_OFFSET,1,25);
7067 END IF;
7068 RETURN l_ret_tz;
7069 EXCEPTION
7070 WHEN OTHERS THEN
7071 NULL;
7072 END convert_date_str;
7073 END INV_EBI_ITEM_HELPER;