[Home] [Help]
PACKAGE BODY: APPS.EGO_IMPORT_UTIL_PVT
Source
1 PACKAGE BODY EGO_IMPORT_UTIL_PVT AS
2 /* $Header: EGOVIMUB.pls 120.91.12020000.3 2012/07/20 04:43:05 lmai ship $ */
3
4 G_LOG_TIMESTAMP_FORMAT CONSTANT VARCHAR2( 30 ) := 'dd-mon-yyyy hh:mi:ss.ff';
5
6 G_NLS_DATE_FORMAT VARCHAR2( 1000 ) := FND_PROFILE.VALUE('ICX_DATE_FORMAT_MASK')||' HH24:MI:SS';
7
8 -- This variable has un-indented code to SAVE the space consumed of variable
9 G_PROD_COL_LIST VARCHAR2( 3000 ) := q'#
10 C_EXT_ATTR1,C_EXT_ATTR2,C_EXT_ATTR3,C_EXT_ATTR4,C_EXT_ATTR5,C_EXT_ATTR6,C_EXT_ATTR7,C_EXT_ATTR8,
11 C_EXT_ATTR9,C_EXT_ATTR10,C_EXT_ATTR11,C_EXT_ATTR12,C_EXT_ATTR13,C_EXT_ATTR14,C_EXT_ATTR15,
12 C_EXT_ATTR16,C_EXT_ATTR17,C_EXT_ATTR18,C_EXT_ATTR19,C_EXT_ATTR20,C_EXT_ATTR21,C_EXT_ATTR22,
13 C_EXT_ATTR23,C_EXT_ATTR24,C_EXT_ATTR25,C_EXT_ATTR26,C_EXT_ATTR27,C_EXT_ATTR28,C_EXT_ATTR29,
14 C_EXT_ATTR30,C_EXT_ATTR31,C_EXT_ATTR32,C_EXT_ATTR33,C_EXT_ATTR34,C_EXT_ATTR35,C_EXT_ATTR36,
15 C_EXT_ATTR37,C_EXT_ATTR38,C_EXT_ATTR39,C_EXT_ATTR40,N_EXT_ATTR1,UOM_EXT_ATTR1,N_EXT_ATTR2,
16 UOM_EXT_ATTR2,N_EXT_ATTR3,UOM_EXT_ATTR3,N_EXT_ATTR4,UOM_EXT_ATTR4,N_EXT_ATTR5,UOM_EXT_ATTR5,
17 N_EXT_ATTR6,UOM_EXT_ATTR6,N_EXT_ATTR7,UOM_EXT_ATTR7,N_EXT_ATTR8,UOM_EXT_ATTR8,N_EXT_ATTR9,
18 UOM_EXT_ATTR9,N_EXT_ATTR10,UOM_EXT_ATTR10,N_EXT_ATTR11,UOM_EXT_ATTR11,N_EXT_ATTR12,
19 UOM_EXT_ATTR12,N_EXT_ATTR13,UOM_EXT_ATTR13,N_EXT_ATTR14,UOM_EXT_ATTR14,N_EXT_ATTR15,
20 UOM_EXT_ATTR15,N_EXT_ATTR16,UOM_EXT_ATTR16,N_EXT_ATTR17,UOM_EXT_ATTR17,N_EXT_ATTR18,
21 UOM_EXT_ATTR18,N_EXT_ATTR19,UOM_EXT_ATTR19,N_EXT_ATTR20,UOM_EXT_ATTR20,D_EXT_ATTR1,
22 D_EXT_ATTR2,D_EXT_ATTR3,D_EXT_ATTR4,D_EXT_ATTR5,D_EXT_ATTR6,D_EXT_ATTR7,D_EXT_ATTR8,
23 D_EXT_ATTR9,D_EXT_ATTR10,TL_EXT_ATTR1,TL_EXT_ATTR2,TL_EXT_ATTR3,TL_EXT_ATTR4,TL_EXT_ATTR5,
24 TL_EXT_ATTR6,TL_EXT_ATTR7,TL_EXT_ATTR8,TL_EXT_ATTR9,TL_EXT_ATTR10,TL_EXT_ATTR11,
25 TL_EXT_ATTR12,TL_EXT_ATTR13,TL_EXT_ATTR14,TL_EXT_ATTR15,TL_EXT_ATTR16,TL_EXT_ATTR17,
26 TL_EXT_ATTR18,TL_EXT_ATTR19,TL_EXT_ATTR20,TL_EXT_ATTR21,TL_EXT_ATTR22,TL_EXT_ATTR23,
27 TL_EXT_ATTR24,TL_EXT_ATTR25,TL_EXT_ATTR26,TL_EXT_ATTR27,TL_EXT_ATTR28,TL_EXT_ATTR29,
28 TL_EXT_ATTR30,TL_EXT_ATTR31,TL_EXT_ATTR32,TL_EXT_ATTR33,TL_EXT_ATTR34,TL_EXT_ATTR35,
29 TL_EXT_ATTR36,TL_EXT_ATTR37,TL_EXT_ATTR38,TL_EXT_ATTR39,TL_EXT_ATTR40 #';
30
31 TYPE ITEM_DETAIL_RECORD IS RECORD(
32 TRANSACTION_ID NUMBER,
33 INVENTORY_ITEM_ID NUMBER,
34 ORGANIZATION_ID NUMBER,
35 ITEM_NUMBER MTL_SYSTEM_ITEMS_INTERFACE.ITEM_NUMBER%TYPE,
36 SOURCE_SYSTEM_REFERENCE MTL_SYSTEM_ITEMS_INTERFACE.SOURCE_SYSTEM_REFERENCE%TYPE,
37 SOURCE_SYSTEM_ID NUMBER,
38 DATA_LEVEL_ID NUMBER,
39 SUPPLIER_ID NUMBER,
40 SUPPLIER_SITE_ID NUMBER,
41 PROCESS_FLAG NUMBER
42 );
43
44 TYPE ITEM_DETAIL_TBL IS TABLE OF ITEM_DETAIL_RECORD;
45
46 /*
47 * This method writes into concurrent program log
48 */
49 PROCEDURE Debug_Conc_Log( p_message IN VARCHAR2
50 , p_add_timestamp IN BOOLEAN DEFAULT TRUE )
51 IS
52 l_inv_debug_level NUMBER := INVPUTLI.get_debug_level; --Bug: 4667452
53 l_message VARCHAR2(3800);
54 BEGIN
55 IF l_inv_debug_level IN(101, 102) THEN
56 IF LENGTH(p_message) > 3800 THEN
57 FOR i IN 1..( CEIL(LENGTH(p_message)/3800) ) LOOP
58 l_message := SUBSTR(p_message, ( 3800*(i-1) + 1 ), 3800 );
59 INVPUTLI.info( ( CASE
60 WHEN p_add_timestamp THEN to_char( systimestamp, G_LOG_TIMESTAMP_FORMAT ) || ': '
61 ELSE ''
62 END )
63 || l_message );
64 END LOOP;
65 ELSE
66 INVPUTLI.info( ( CASE
67 WHEN p_add_timestamp THEN to_char( systimestamp, G_LOG_TIMESTAMP_FORMAT ) || ': '
68 ELSE ''
69 END )
70 || p_message );
71 END IF;
72 END IF;
73 END Debug_Conc_Log;
74
75 ---------------------------------
76 -- PRIVATE METHODS STARTS HERE --
77 ---------------------------------
78
79 PROCEDURE Resolve_Data_Level_Id( p_batch_id NUMBER )
80 IS
81 BEGIN
82 -- Bug 13434831 : Start (Performance Change)
83 /*
84 UPDATE EGO_ITM_USR_ATTR_INTRFC uai
85 SET uai.DATA_LEVEL_ID = (SELECT edlb.DATA_LEVEL_ID
86 FROM EGO_DATA_LEVEL_B edlb
87 WHERE edlb.DATA_LEVEL_NAME = uai.DATA_LEVEL_NAME
88 AND edlb.APPLICATION_ID = 431
89 AND edlb.ATTR_GROUP_TYPE = NVL(uai.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
90 )
91 WHERE uai.DATA_SET_ID = p_batch_id
92 AND uai.PROCESS_STATUS = 1
93 AND uai.DATA_LEVEL_NAME IS NOT NULL
94 AND uai.DATA_LEVEL_ID IS NULL;
95
96 UPDATE EGO_ITM_USR_ATTR_INTRFC uai
97 SET uai.DATA_LEVEL_ID = (SELECT edlv.DATA_LEVEL_ID
98 FROM EGO_DATA_LEVEL_VL edlv
99 WHERE edlv.USER_DATA_LEVEL_NAME = uai.USER_DATA_LEVEL_NAME
100 AND edlv.APPLICATION_ID = 431
101 AND edlv.ATTR_GROUP_TYPE = NVL(uai.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
102 )
103 WHERE uai.DATA_SET_ID = p_batch_id
104 AND uai.PROCESS_STATUS = 1
105 AND uai.USER_DATA_LEVEL_NAME IS NOT NULL
106 AND uai.DATA_LEVEL_NAME IS NULL
107 AND uai.DATA_LEVEL_ID IS NULL;
108 */
109
110 -- Consolidating above two queries into single query as below.
111 UPDATE EGO_ITM_USR_ATTR_INTRFC uai
112 SET uai.DATA_LEVEL_ID = Nvl ((SELECT edlb.DATA_LEVEL_ID
113 FROM EGO_DATA_LEVEL_B edlb
114 WHERE edlb.DATA_LEVEL_NAME = uai.DATA_LEVEL_NAME
115 AND edlb.APPLICATION_ID = 431
116 AND edlb.ATTR_GROUP_TYPE = NVL(uai.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
117 ),
118 (SELECT edlv.DATA_LEVEL_ID
119 FROM EGO_DATA_LEVEL_VL edlv
120 WHERE edlv.USER_DATA_LEVEL_NAME = uai.USER_DATA_LEVEL_NAME
121 AND edlv.APPLICATION_ID = 431
122 AND edlv.ATTR_GROUP_TYPE = NVL(uai.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
123 )
124 )
125 WHERE uai.DATA_SET_ID = p_batch_id
126 AND uai.PROCESS_STATUS = 1
127 AND uai.DATA_LEVEL_ID IS NULL;
128 -- Bug 13434831 : End (Performance Change)
129
130 -----------------------------------------------------------
131 -- If all data level columns are null, then check if the --
132 -- attribute group is associated at only one level, then --
133 -- put that data level id here. --
134 -----------------------------------------------------------
135 UPDATE EGO_ITM_USR_ATTR_INTRFC uai
136 SET DATA_LEVEL_ID = (SELECT DATA_LEVEL_ID
137 FROM EGO_ATTR_GROUP_DL eagd, EGO_FND_DSC_FLX_CTX_EXT ag_ext
138 WHERE eagd.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
139 AND ag_ext.APPLICATION_ID = 431
140 AND ag_ext.DESCRIPTIVE_FLEXFIELD_NAME = NVL(uai.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
141 AND ag_ext.DESCRIPTIVE_FLEX_CONTEXT_CODE = uai.ATTR_GROUP_INT_NAME
142 )
143 WHERE uai.DATA_SET_ID = p_batch_id
144 AND uai.PROCESS_STATUS = 1
145 AND uai.DATA_LEVEL_ID IS NULL
146 AND uai.DATA_LEVEL_NAME IS NULL
147 AND uai.USER_DATA_LEVEL_NAME IS NULL
148 AND (SELECT COUNT(*)
149 FROM EGO_ATTR_GROUP_DL eagd, EGO_FND_DSC_FLX_CTX_EXT ag_ext
150 WHERE eagd.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
151 AND ag_ext.APPLICATION_ID = 431
152 AND ag_ext.DESCRIPTIVE_FLEXFIELD_NAME = NVL(uai.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
153 AND ag_ext.DESCRIPTIVE_FLEX_CONTEXT_CODE = uai.ATTR_GROUP_INT_NAME
154 ) = 1;
155 END Resolve_Data_Level_Id;
156
157 /*
158 * This API is called to resolve inventory_item_id for all
159 * the chid entities such as revision, UDA and intersections
160 */
161 PROCEDURE Resolve_PKs_For_Child( p_batch_id NUMBER )
162 IS
163 l_return_status VARCHAR2(10);
164 l_msg_count NUMBER;
165 l_msg_data VARCHAR2(4000);
166 BEGIN
167 Debug_Conc_Log('Resolve_PKs_For_Child: Starting ');
168 UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
169 SET INVENTORY_ITEM_ID = NVL((SELECT INVENTORY_ITEM_ID
170 FROM MTL_SYSTEM_ITEMS_KFV MSIK
171 WHERE MSIK.CONCATENATED_SEGMENTS = MIRI.ITEM_NUMBER
172 AND MSIK.ORGANIZATION_ID = MIRI.ORGANIZATION_ID
173 ),
174 (SELECT INVENTORY_ITEM_ID
175 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
176 WHERE (MSII.ITEM_NUMBER = MIRI.ITEM_NUMBER OR MSII.SOURCE_SYSTEM_REFERENCE = MIRI.SOURCE_SYSTEM_REFERENCE)
177 AND MSII.SOURCE_SYSTEM_ID = MIRI.SOURCE_SYSTEM_ID
178 AND MSII.ORGANIZATION_ID = MIRI.ORGANIZATION_ID
179 AND MSII.SET_PROCESS_ID = MIRI.SET_PROCESS_ID
180 AND MSII.PROCESS_FLAG = 1
181 AND ROWNUM = 1
182 ))
183 WHERE SET_PROCESS_ID = p_batch_id
184 AND PROCESS_FLAG = 1
185 AND INVENTORY_ITEM_ID IS NULL
186 AND (ITEM_NUMBER IS NOT NULL OR SOURCE_SYSTEM_REFERENCE IS NOT NULL);
187
188 Debug_Conc_Log('Resolve_PKs_For_Child: Updated Revisions '||SQL%ROWCOUNT);
189
190 UPDATE MTL_ITEM_CATEGORIES_INTERFACE MICI
191 SET INVENTORY_ITEM_ID = NVL((SELECT INVENTORY_ITEM_ID
192 FROM MTL_SYSTEM_ITEMS_KFV MSIK
193 WHERE MSIK.CONCATENATED_SEGMENTS = MICI.ITEM_NUMBER
194 AND MSIK.ORGANIZATION_ID = MICI.ORGANIZATION_ID
195 ),
196 (SELECT INVENTORY_ITEM_ID
197 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
198 WHERE (MSII.ITEM_NUMBER = MICI.ITEM_NUMBER OR MSII.SOURCE_SYSTEM_REFERENCE = MICI.SOURCE_SYSTEM_REFERENCE)
199 AND MSII.SOURCE_SYSTEM_ID = MICI.SOURCE_SYSTEM_ID
200 AND MSII.ORGANIZATION_ID = MICI.ORGANIZATION_ID
201 AND MSII.SET_PROCESS_ID = MICI.SET_PROCESS_ID
202 AND MSII.PROCESS_FLAG = 1
203 AND ROWNUM = 1
204 ))
205 WHERE SET_PROCESS_ID = p_batch_id
206 AND PROCESS_FLAG = 1
207 AND INVENTORY_ITEM_ID IS NULL
208 AND (ITEM_NUMBER IS NOT NULL OR SOURCE_SYSTEM_REFERENCE IS NOT NULL);
209
210 Debug_Conc_Log('Resolve_PKs_For_Child: Updated Categories '||SQL%ROWCOUNT);
211
212 -- Bug 13434831 : Start (Performance Change)
213 /* Removing the below query as after this we are again executing the same query in EGOCIUAB.pls.
214 In between we are not depending on ATTR_GROUP_ID. */
215 /*
216 UPDATE EGO_ITM_USR_ATTR_INTRFC UAI
217 SET ATTR_GROUP_ID = (SELECT ATTR_GROUP_ID
218 FROM EGO_FND_DSC_FLX_CTX_EXT FLX_EXT
219 WHERE APPLICATION_ID = 431
220 AND DESCRIPTIVE_FLEXFIELD_NAME = UAI.ATTR_GROUP_TYPE
221 AND DESCRIPTIVE_FLEX_CONTEXT_CODE = UAI.ATTR_GROUP_INT_NAME)
222 WHERE UAI.DATA_SET_ID = p_batch_id
223 AND UAI.PROCESS_STATUS = 1
224 AND UAI.ATTR_GROUP_ID IS NULL;
225 Debug_Conc_Log('Resolve_PKs_For_Child: Updated Attribute Group ID '||SQL%ROWCOUNT);
226 */
227 -- Bug 13434831 : End (Performance Change)
228
229 UPDATE EGO_ITM_USR_ATTR_INTRFC EIUAI
230 SET INVENTORY_ITEM_ID = NVL((SELECT INVENTORY_ITEM_ID
231 FROM MTL_SYSTEM_ITEMS_KFV MSIK
232 WHERE MSIK.CONCATENATED_SEGMENTS = EIUAI.ITEM_NUMBER
233 AND MSIK.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
234 ),
235 --Bug 9660659 - Removing the OR in this query, making two queries - Bug 9660659
236 /*
237 (SELECT INVENTORY_ITEM_ID
238 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
239 WHERE (MSII.ITEM_NUMBER = EIUAI.ITEM_NUMBER OR MSII.SOURCE_SYSTEM_REFERENCE = EIUAI.SOURCE_SYSTEM_REFERENCE)
240 AND MSII.SOURCE_SYSTEM_ID = EIUAI.SOURCE_SYSTEM_ID
241 AND MSII.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
242 AND MSII.SET_PROCESS_ID = EIUAI.DATA_SET_ID
243 AND MSII.PROCESS_FLAG = 1
244 AND ROWNUM = 1
245 ))
246 */
247 NVL( (SELECT INVENTORY_ITEM_ID
248 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
249 WHERE (MSII.ITEM_NUMBER = EIUAI.ITEM_NUMBER)
250 AND MSII.SOURCE_SYSTEM_ID = EIUAI.SOURCE_SYSTEM_ID
251 AND MSII.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
252 AND MSII.SET_PROCESS_ID = EIUAI.DATA_SET_ID
253 AND MSII.PROCESS_FLAG = 1
254 AND ROWNUM = 1) ,
255 (SELECT INVENTORY_ITEM_ID
256 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
257 WHERE (MSII.SOURCE_SYSTEM_REFERENCE = EIUAI.SOURCE_SYSTEM_REFERENCE)
258 AND MSII.SOURCE_SYSTEM_ID = EIUAI.SOURCE_SYSTEM_ID
259 AND MSII.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
260 AND MSII.SET_PROCESS_ID = EIUAI.DATA_SET_ID
261 AND MSII.PROCESS_FLAG = 1
262 AND ROWNUM = 1)
263 ) -- End of inner NVL
264 ) --End of outer NVL
265 WHERE DATA_SET_ID = p_batch_id
266 AND PROCESS_STATUS = 1
267 AND INVENTORY_ITEM_ID IS NULL
268 AND (ITEM_NUMBER IS NOT NULL OR SOURCE_SYSTEM_REFERENCE IS NOT NULL);
269
270 Debug_Conc_Log('Resolve_PKs_For_Child: Updated User Attrs '||SQL%ROWCOUNT);
271
272 UPDATE EGO_ITEM_ASSOCIATIONS_INTF EIAI
273 SET INVENTORY_ITEM_ID = NVL((SELECT INVENTORY_ITEM_ID
274 FROM MTL_SYSTEM_ITEMS_KFV MSIK
275 WHERE MSIK.CONCATENATED_SEGMENTS = EIAI.ITEM_NUMBER
276 AND MSIK.ORGANIZATION_ID = EIAI.ORGANIZATION_ID
277 ),
278 (SELECT INVENTORY_ITEM_ID
279 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
280 WHERE (MSII.ITEM_NUMBER = EIAI.ITEM_NUMBER OR MSII.SOURCE_SYSTEM_REFERENCE = EIAI.SOURCE_SYSTEM_REFERENCE)
281 AND MSII.SOURCE_SYSTEM_ID = EIAI.SOURCE_SYSTEM_ID
282 AND MSII.ORGANIZATION_ID = EIAI.ORGANIZATION_ID
283 AND MSII.SET_PROCESS_ID = EIAI.BATCH_ID
284 AND MSII.PROCESS_FLAG = 1
285 AND ROWNUM = 1
286 ))
287 WHERE BATCH_ID = p_batch_id
288 AND PROCESS_FLAG = 1
289 AND INVENTORY_ITEM_ID IS NULL
290 AND (ITEM_NUMBER IS NOT NULL OR SOURCE_SYSTEM_REFERENCE IS NOT NULL);
291 Debug_Conc_Log('Resolve_PKs_For_Child: Updated Intersections '||SQL%ROWCOUNT);
292
293 UPDATE EGO_ITM_USR_ATTR_INTRFC EIUAI
294 SET REVISION_ID = NVL((SELECT REVISION_ID
295 FROM MTL_ITEM_REVISIONS_B MIRB
296 WHERE MIRB.INVENTORY_ITEM_ID = EIUAI.INVENTORY_ITEM_ID
297 AND MIRB.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
298 AND MIRB.REVISION = EIUAI.REVISION
299 ),
300 (SELECT REVISION_ID
301 FROM MTL_ITEM_REVISIONS_INTERFACE MIRI
302 WHERE MIRI.INVENTORY_ITEM_ID = EIUAI.INVENTORY_ITEM_ID
303 AND MIRI.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
304 AND MIRI.REVISION = EIUAI.REVISION
305 AND MIRI.SET_PROCESS_ID = EIUAI.DATA_SET_ID
306 AND MIRI.PROCESS_FLAG = 1
307 AND ROWNUM = 1
308 ))
309 WHERE DATA_SET_ID = p_batch_id
310 AND PROCESS_STATUS = 1
311 AND REVISION_ID IS NULL
312 AND REVISION IS NOT NULL
313 AND INVENTORY_ITEM_ID IS NOT NULL;
314
315 Debug_Conc_Log('Resolve_PKs_For_Child: Updated Revision_id for User Attrs '||SQL%ROWCOUNT);
316
317 COMMIT;
318 END Resolve_PKs_For_Child;
319
320 /* Private API to call tempalte application for UDAs*/
321 PROCEDURE Call_UDA_Apply_Template
322 ( p_batch_id NUMBER,
323 p_entity_sql VARCHAR2,
324 p_gdsn_entity_sql VARCHAR2,
325 p_user_id NUMBER,
326 p_login_id NUMBER,
327 p_prog_appid NUMBER,
328 p_prog_id NUMBER,
329 p_request_id NUMBER,
330 x_return_status OUT NOCOPY VARCHAR2,
331 x_err_msg OUT NOCOPY VARCHAR2
332 )
333 IS
334 l_return_status VARCHAR2(1);
335 l_errorcode NUMBER;
336 l_msg_count NUMBER;
337 l_msg_data VARCHAR2(4000);
338 G_FND_RET_STS_WARNING VARCHAR2(1) := 'W';
339 l_class_code_hierarchy_sql VARCHAR2(500);
340 l_template_table_sql VARCHAR2(4000);
341
342 BEGIN
343
344 Debug_Conc_Log('Call_UDA_Apply_Template: Starting ');
345
346 l_template_table_sql :=' SELECT * '||
347 ' FROM ( '||
348 ' SELECT MIN(CATALOG_LEVEL) OVER (PARTITION BY ROOT_CLASS, ATTRIBUTE_ID) MIN_LEVEL '||
349 ' ,ROOT_CLASS CLASSIFICATION_CODE '||
350 ' ,CATALOG_LEVEL '||
351 ' ,TEMPLATE_ID,ATTRIBUTE_GROUP_ID,ATTRIBUTE_ID,ENABLED_FLAG,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN '||
352 ' ,ROW_NUMBER,ATTRIBUTE_STRING_VALUE,ATTRIBUTE_NUMBER_VALUE,ATTRIBUTE_DATE_VALUE,ATTRIBUTE_TRANSLATED_VALUE,ATTRIBUTE_UOM_CODE '||
353 ' ,REQUEST_ID,PROGRAM_APPLICATION_ID,PROGRAM_ID,PROGRAM_UPDATE_DATE,DATA_LEVEL_ID '||
354 ' FROM EGO_TEMPL_ATTRIBUTES TEMPL, '||
355 ' (SELECT CONNECT_BY_ROOT ITEM_CATALOG_GROUP_ID ROOT_CLASS, ITEM_CATALOG_GROUP_ID, PARENT_CATALOG_GROUP_ID, LEVEL CATALOG_LEVEL '||
356 ' FROM MTL_ITEM_CATALOG_GROUPS_B '||
357 ' CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID= ITEM_CATALOG_GROUP_ID '||
358 ' START WITH ITEM_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID '||
359 ' ) CATALOG '||
360 ' WHERE TEMPL.CLASSIFICATION_CODE= CATALOG.ITEM_CATALOG_GROUP_ID '||
361 ' AND ENABLED_FLAG = ''Y'' '||
362 ' ) '||
363 ' WHERE MIN_LEVEL = CATALOG_LEVEL ';
364
365
366 l_class_code_hierarchy_sql := ' SELECT item_catalog_group_id FROM MTL_ITEM_CATALOG_GROUPS_B TEMPL CONNECT BY PRIOR TEMPL.PARENT_CATALOG_GROUP_ID = TEMPL.ITEM_CATALOG_GROUP_ID START WITH TEMPL.ITEM_CATALOG_GROUP_ID = ENTITIES.ITEM_CATALOG_GROUP_ID ';
367 Debug_Conc_Log('Call_UDA_Apply_Template: Calling EGO_USER_ATTRS_BULK_PVT.Apply_Template_On_Intf_Table for EGO_ITEMMGMT_GROUP');
368 EGO_USER_ATTRS_BULK_PVT.Apply_Template_On_Intf_Table(
369 p_api_version => 1.0
370 ,p_application_id => 431
371 ,p_object_name => 'EGO_ITEM'
372 ,p_interface_table_name => 'EGO_ITM_USR_ATTR_INTRFC'
373 ,p_data_set_id => p_batch_id
374 ,p_attr_group_type => 'EGO_ITEMMGMT_GROUP'
375 ,p_request_id => p_request_id
376 ,p_program_application_id => p_prog_appid
377 ,p_program_id => p_prog_id
378 ,p_program_update_date => SYSDATE
379 ,p_current_user_party_id => p_user_id
380 ,p_target_entity_sql => p_entity_sql
381 ,p_process_status => '2' -- Bug 10263673
382 ,p_class_code_hierarchy_sql => l_class_code_hierarchy_sql
383 ,p_hierarchy_template_tbl_sql => l_template_table_sql
384 ,x_return_status => l_return_status
385 ,x_errorcode => l_errorcode
386 ,x_msg_count => l_msg_count
387 ,x_msg_data => l_msg_data
388 );
389
390 Debug_Conc_Log('Call_UDA_Apply_Template: Done Calling for EGO_ITEMMGMT_GROUP with l_return_status, l_errorcode, l_msg_data='||l_return_status||','|| l_errorcode||','|| l_msg_data);
391 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
392 x_return_status := '2';
393 x_err_msg := l_msg_data;
394 RETURN;
395 ELSIF l_return_status = G_FND_RET_STS_WARNING THEN
396 x_return_status := '1';
397 x_err_msg := l_msg_data;
398 ELSE
399 x_return_status := '0';
400 x_err_msg := NULL;
401 END IF;
402
403 Debug_Conc_Log('Call_UDA_Apply_Template: Calling EGO_USER_ATTRS_BULK_PVT.Apply_Template_On_Intf_Table for EGO_ITEM_GTIN_ATTRS');
404 EGO_USER_ATTRS_BULK_PVT.Apply_Template_On_Intf_Table(
405 p_api_version => 1.0
406 ,p_application_id => 431
407 ,p_object_name => 'EGO_ITEM'
408 ,p_interface_table_name => 'EGO_ITM_USR_ATTR_INTRFC'
409 ,p_data_set_id => p_batch_id
410 ,p_attr_group_type => 'EGO_ITEM_GTIN_ATTRS'
411 ,p_request_id => p_request_id
412 ,p_program_application_id => p_prog_appid
413 ,p_program_id => p_prog_id
414 ,p_program_update_date => SYSDATE
415 ,p_current_user_party_id => p_user_id
416 ,p_target_entity_sql => p_gdsn_entity_sql
417 ,p_process_status => '2' -- Bug 10263673
418 ,p_class_code_hierarchy_sql => l_class_code_hierarchy_sql
419 ,p_hierarchy_template_tbl_sql => l_template_table_sql
420 ,x_return_status => l_return_status
421 ,x_errorcode => l_errorcode
422 ,x_msg_count => l_msg_count
423 ,x_msg_data => l_msg_data
424 );
425
426 Debug_Conc_Log('Call_UDA_Apply_Template: Done Calling for EGO_ITEM_GTIN_ATTRS with l_return_status, l_errorcode, l_msg_data='||l_return_status||','|| l_errorcode||','|| l_msg_data);
427 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
428 x_return_status := '2';
429 x_err_msg := l_msg_data;
430 RETURN;
431 ELSIF l_return_status = G_FND_RET_STS_WARNING THEN
432 x_return_status := '1';
433 x_err_msg := l_msg_data;
434 ELSE
435 x_return_status := '0';
436 x_err_msg := NULL;
437 END IF;
438
439 Debug_Conc_Log('Call_UDA_Apply_Template: Calling EGO_USER_ATTRS_BULK_PVT.Apply_Template_On_Intf_Table for EGO_ITEM_GTIN_MULTI_ATTRS');
440 EGO_USER_ATTRS_BULK_PVT.Apply_Template_On_Intf_Table(
441 p_api_version => 1.0
442 ,p_application_id => 431
443 ,p_object_name => 'EGO_ITEM'
444 ,p_interface_table_name => 'EGO_ITM_USR_ATTR_INTRFC'
445 ,p_data_set_id => p_batch_id
446 ,p_attr_group_type => 'EGO_ITEM_GTIN_MULTI_ATTRS'
447 ,p_request_id => p_request_id
448 ,p_program_application_id => p_prog_appid
449 ,p_program_id => p_prog_id
450 ,p_program_update_date => SYSDATE
451 ,p_current_user_party_id => p_user_id
452 ,p_target_entity_sql => p_gdsn_entity_sql
453 ,p_process_status => '2' -- Bug 10263673
454 ,p_class_code_hierarchy_sql => l_class_code_hierarchy_sql
455 ,p_hierarchy_template_tbl_sql => l_template_table_sql
456 ,x_return_status => l_return_status
457 ,x_errorcode => l_errorcode
458 ,x_msg_count => l_msg_count
459 ,x_msg_data => l_msg_data
460 );
461
462 Debug_Conc_Log('Call_UDA_Apply_Template: Done Calling for EGO_ITEM_GTIN_MULTI_ATTRS with l_return_status, l_errorcode, l_msg_data='||l_return_status||','|| l_errorcode||','|| l_msg_data);
463 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
464 x_return_status := '2';
465 x_err_msg := l_msg_data;
466 RETURN;
467 ELSIF l_return_status = G_FND_RET_STS_WARNING THEN
468 x_return_status := '1';
469 x_err_msg := l_msg_data;
470 ELSE
471 x_return_status := '0';
472 x_err_msg := NULL;
473 END IF;
474
475 IF NVL(x_return_status, '0') = '0' THEN
476 x_return_status := '0';
477 x_err_msg := NULL;
478 END IF;
479 EXCEPTION WHEN OTHERS THEN
480 x_return_status := '2';
481 x_err_msg := SQLERRM;
482 Debug_Conc_Log('Call_UDA_Apply_Template: Error l_return_status, l_msg_data='||x_return_status||','|| ',' || x_err_msg);
483 END Call_UDA_Apply_Template;
484
485 /* Private API to call tempalte application for UDAs*/
486 PROCEDURE Apply_Templates_For_UDAs
487 ( p_batch_id NUMBER,
488 p_user_id NUMBER,
489 p_login_id NUMBER,
490 p_prog_appid NUMBER,
491 p_prog_id NUMBER,
492 p_request_id NUMBER,
493 x_return_status OUT NOCOPY VARCHAR2,
494 x_err_msg OUT NOCOPY VARCHAR2
495 )
496 IS
497 l_err_msg VARCHAR2(4000);
498 l_return_status VARCHAR2(10);
499 l_template_table INVPULI2.Import_Template_Tbl_Type;
500 l_apply_multiple_template BOOLEAN;
501 l_entity_sql VARCHAR2(32000);
502 l_sql_part1 VARCHAR2(1000);
503 l_sql_part2 VARCHAR2(32000);
504 l_sql_part3 VARCHAR2(32000);
505 l_sql_part4 VARCHAR2(32000); /* Bug 9201112 */
506 l_gdsn_sql_part1 VARCHAR2(32000);
507 l_gdsn_sql_part2 VARCHAR2(32000);
508 l_gdsn_entity_sql VARCHAR2(32000);
509
510 l_item_dl_id NUMBER;
511 l_item_rev_dl_id NUMBER;
512 l_item_org_dl_id NUMBER; /* Bug 9201112 */
513 l_item_gtin_dl_id NUMBER;
514 l_item_gtin_multi_dl_id NUMBER;
515
516 /* Bug 9201112. Fetching data for ITEM_ORG Data Level also. */
517 CURSOR c_data_levels IS
518 SELECT ATTR_GROUP_TYPE, DATA_LEVEL_ID, DATA_LEVEL_NAME
519 FROM EGO_DATA_LEVEL_B
520 WHERE ATTR_GROUP_TYPE IN ('EGO_ITEMMGMT_GROUP', 'EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
521 AND APPLICATION_ID = 431
522 AND DATA_LEVEL_NAME IN ( 'ITEM_LEVEL', 'ITEM_REVISION_LEVEL', 'ITEM_ORG' );
523
524 BEGIN
525 Debug_Conc_Log('Apply_Templates_For_UDAs: Starting ');
526 x_return_status := '0';
527 x_err_msg := NULL;
528
529 /* Bug 9201112. Store the DATA_LEVEL_ID for ITEM_ORG Data Level in l_item_org_dl_id. */
530 FOR i IN c_data_levels LOOP
531 IF i.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
532 l_item_dl_id := i.DATA_LEVEL_ID;
533 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND i.DATA_LEVEL_NAME = 'ITEM_ORG' THEN
534 l_item_org_dl_id := i.DATA_LEVEL_ID;
535 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND i.DATA_LEVEL_NAME = 'ITEM_REVISION_LEVEL' THEN
536 l_item_rev_dl_id := i.DATA_LEVEL_ID;
537 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_ATTRS' AND i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
538 l_item_gtin_dl_id := i.DATA_LEVEL_ID;
539 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_MULTI_ATTRS' AND i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
540 l_item_gtin_multi_dl_id := i.DATA_LEVEL_ID;
541 END IF;
542 END LOOP;
543
544 SELECT TEMPLATE_ID
545 BULK COLLECT INTO l_template_table
546 FROM EGO_IMPORT_COPY_OPTIONS
547 WHERE BATCH_ID = p_batch_id
548 AND COPY_OPTION = 'APPLY_TEMPLATE'
549 ORDER BY TEMPLATE_SEQUENCE DESC;
550
551 IF l_template_table IS NULL OR l_template_table.COUNT = 0 THEN
552 l_apply_multiple_template := FALSE;
553 ELSE
554 l_apply_multiple_template := TRUE;
555 END IF;
556
557 IF l_apply_multiple_template THEN
558 Debug_Conc_Log('Apply_Templates_For_UDAs: APPLY_TEMPLATE option found in Copy options, so applying multiple templates');
559 l_sql_part2 := q'#
560 MSII.INVENTORY_ITEM_ID ,
561 MSII.ORGANIZATION_ID,
562 MSII.ITEM_CATALOG_GROUP_ID,
563 NULL AS PK1_VALUE,
564 NULL AS PK2_VALUE,
565 NULL AS PK3_VALUE,
566 NULL AS PK4_VALUE,
567 NULL AS PK5_VALUE,
568 NULL AS REVISION_ID, #' ||
569 l_item_dl_id || q'# AS DATA_LEVEL_ID
570 FROM
571 MTL_SYSTEM_ITEMS_INTERFACE MSII
572 WHERE ITEM_CATALOG_GROUP_ID IS NOT NULL
573 AND SET_PROCESS_ID = #' || p_batch_id || q'#
574 AND PROCESS_FLAG = 1
575 UNION ALL #';
576
577 /* Bug 9201112. Query that considers ITEM_ORG Data Level. */
578 l_sql_part4 := q'#
579 MSII.INVENTORY_ITEM_ID ,
580 MSII.ORGANIZATION_ID,
581 MSII.ITEM_CATALOG_GROUP_ID,
582 NULL AS PK1_VALUE,
583 NULL AS PK2_VALUE,
584 NULL AS PK3_VALUE,
585 NULL AS PK4_VALUE,
586 NULL AS PK5_VALUE,
587 NULL AS REVISION_ID, #' ||
588 l_item_org_dl_id || q'# AS DATA_LEVEL_ID
589 FROM
590 MTL_SYSTEM_ITEMS_INTERFACE MSII
591 WHERE ITEM_CATALOG_GROUP_ID IS NOT NULL
592 AND SET_PROCESS_ID = #' || p_batch_id || q'#
593 AND PROCESS_FLAG = 1
594 UNION ALL #';
595
596 l_sql_part3 := q'#
597 MSII.INVENTORY_ITEM_ID ,
598 MSII.ORGANIZATION_ID,
599 MSII.ITEM_CATALOG_GROUP_ID,
600 NULL AS PK1_VALUE,
601 NULL AS PK2_VALUE,
602 NULL AS PK3_VALUE,
603 NULL AS PK4_VALUE,
604 NULL AS PK5_VALUE,
605 MIRI.REVISION_ID, #' ||
606 l_item_rev_dl_id || q'# AS DATA_LEVEL_ID
607 FROM
608 MTL_SYSTEM_ITEMS_INTERFACE MSII,
609 MTL_ITEM_REVISIONS_INTERFACE MIRI
610 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
611 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
612 AND MSII.PROCESS_FLAG = 1
613 AND MSII.SET_PROCESS_ID = MIRI.SET_PROCESS_ID
614 AND MIRI.PROCESS_FLAG = 1
615 AND MIRI.INVENTORY_ITEM_ID = MSII.INVENTORY_ITEM_ID
616 AND MIRI.ORGANIZATION_ID = MSII.ORGANIZATION_ID #';
617
618 l_gdsn_sql_part1 := q'#
619 MSII.INVENTORY_ITEM_ID ,
620 MSII.ORGANIZATION_ID,
621 MSII.ITEM_CATALOG_GROUP_ID,
622 NULL AS PK1_VALUE,
623 NULL AS PK2_VALUE,
624 NULL AS PK3_VALUE,
625 NULL AS PK4_VALUE,
626 NULL AS PK5_VALUE,
627 NULL AS REVISION_ID, #' ||
628 l_item_gtin_dl_id || q'# AS DATA_LEVEL_ID
629 FROM
630 MTL_SYSTEM_ITEMS_INTERFACE MSII
631 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
632 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
633 AND MSII.PROCESS_FLAG = 1
634 AND NVL(MSII.GDSN_OUTBOUND_ENABLED_FLAG, 'N') = 'Y'
635 UNION ALL #';
636
637 l_gdsn_sql_part2 := q'#
638 MSII.INVENTORY_ITEM_ID ,
639 MSII.ORGANIZATION_ID,
640 MSII.ITEM_CATALOG_GROUP_ID,
641 NULL AS PK1_VALUE,
642 NULL AS PK2_VALUE,
643 NULL AS PK3_VALUE,
644 NULL AS PK4_VALUE,
645 NULL AS PK5_VALUE,
646 NULL AS REVISION_ID, #' ||
647 l_item_gtin_multi_dl_id || q'# AS DATA_LEVEL_ID
648 FROM
649 MTL_SYSTEM_ITEMS_INTERFACE MSII
650 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
651 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
652 AND MSII.PROCESS_FLAG = 1
653 AND NVL(MSII.GDSN_OUTBOUND_ENABLED_FLAG, 'N') = 'Y' #';
654
655 Debug_Conc_Log('Apply_Templates_For_UDAs: Before Loop');
656 IF l_template_table IS NOT NULL THEN
657 FOR i IN l_template_table.FIRST..l_template_table.LAST LOOP
658 l_sql_part1 := 'SELECT ' || l_template_table(i) || ' AS TEMPLATE_ID, ';
659 /* 9201112. Adding l_sql_part4 to l_entity_sql. */
660 l_entity_sql := l_sql_part1 || l_sql_part2 || l_sql_part1 || l_sql_part4 || l_sql_part1 || l_sql_part3;
661 l_gdsn_entity_sql := l_sql_part1 || l_gdsn_sql_part1 || l_sql_part1 || l_gdsn_sql_part2;
662 --Debug_Conc_Log('Apply_Templates_For_UDAs: l_entity_sql='||l_entity_sql);
663 --Debug_Conc_Log('Apply_Templates_For_UDAs: l_gdsn_entity_sql='||l_gdsn_entity_sql);
664 Debug_Conc_Log('Apply_Templates_For_UDAs: Applying template-'||l_template_table(i));
665
666 Call_UDA_Apply_Template
667 ( p_batch_id => p_batch_id,
668 p_entity_sql => l_entity_sql,
669 p_gdsn_entity_sql => l_gdsn_entity_sql,
670 p_user_id => p_user_id,
671 p_login_id => p_login_id,
672 p_prog_appid => p_prog_appid,
673 p_prog_id => p_prog_id,
674 p_request_id => p_request_id,
675 x_return_status => l_return_status,
676 x_err_msg => l_err_msg
677 );
678
679 Debug_Conc_Log('Apply_Templates_For_UDAs: Done Call_UDA_Apply_Template l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
680 IF NVL(l_return_status, '0') > x_return_status THEN
681 x_return_status := l_return_status;
682 x_err_msg := l_err_msg;
683 END IF;
684 IF x_return_status = '2' THEN
685 RETURN;
686 END IF;
687
688 END LOOP; -- FOR i IN l_template_table.FIRST
689 END IF; -- IF l_template_table IS NOT NULL THEN
690 ELSE -- IF l_apply_multiple_template
691 -- applying templates present in the MSII table
692 -- template_id/name is taken from the template_id/name
693 -- column of MSII table
694 Debug_Conc_Log('Apply_Templates_For_UDAs: APPLY_TEMPLATE option NOT found in Copy options, so applying templates present in MSII/MIRI');
695
696 /* Bug 9201112. Update the query l_entity_sql to considers ITEM_ORG Data Level also. */
697 /* Bug 9678667 - Added the hint */
698 --pnagasur:Query modified below for Bug 13394823
699 l_entity_sql := q'#
700 SELECT
701 MIRI.TEMPLATE_ID,
702 MSIB.INVENTORY_ITEM_ID ,
703 MSIB.ORGANIZATION_ID,
704 MSIB.ITEM_CATALOG_GROUP_ID,
705 NULL AS PK1_VALUE,
706 NULL AS PK2_VALUE,
707 NULL AS PK3_VALUE,
708 NULL AS PK4_VALUE,
709 NULL AS PK5_VALUE,
710 MIRI.REVISION_ID, #' ||
711 l_item_rev_dl_id || q'# AS DATA_LEVEL_ID
712 FROM
713 MTL_ITEM_REVISIONS_INTERFACE MIRI,
714 MTL_SYSTEM_ITEMS_B MSIB
715 WHERE MSIB.ITEM_CATALOG_GROUP_ID IS NOT NULL
716 AND MIRI.TEMPLATE_ID IS NOT NULL
717 AND MIRI.INVENTORY_ITEM_ID = MSIB.INVENTORY_ITEM_ID
718 AND MIRI.ORGANIZATION_ID = MSIB.ORGANIZATION_ID
719 AND MIRI.SET_PROCESS_ID = #' || p_batch_id || q'#
720 AND MIRI.PROCESS_FLAG = 1
721 AND NOT EXISTS
722 (SELECT NULL
723 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
724 WHERE MSII.INVENTORY_ITEM_ID = MIRI.INVENTORY_ITEM_ID
725 AND MSII.ORGANIZATION_ID = MIRI.ORGANIZATION_ID
726 AND MSII.SET_PROCESS_ID = MIRI.SET_PROCESS_ID
727 AND MSII.PROCESS_FLAG = MIRI.PROCESS_FLAG)
728 UNION ALL
729 SELECT /*+ LEADING(MSII) USE_NL_WITH_INDEX(MIRI, MTL_ITEM_REVS_INTERFACE_N2 ) */
730 MSII.TEMPLATE_ID,
731 MSII.INVENTORY_ITEM_ID ,
732 MSII.ORGANIZATION_ID,
733 MSII.ITEM_CATALOG_GROUP_ID,
734 NULL AS PK1_VALUE,
735 NULL AS PK2_VALUE,
736 NULL AS PK3_VALUE,
737 NULL AS PK4_VALUE,
738 NULL AS PK5_VALUE,
739 (CASE WHEN MIRI.REVISION_Id IS NULL
740 THEN (SELECT Max(revision_id) FROM
741 (SELECT revision_id, INVENTORY_ITEM_ID, ORGANIZATION_ID, dense_rank() over (PARTITION BY INVENTORY_ITEM_ID, ORGANIZATION_ID ORDER BY EFFECTIVITY_DATE DESC ) dr
742 FROM MTL_ITEM_REVISIONS_B mirb1
743 WHERE mirb1.EFFECTIVITY_DATE <= SYSDATE )
744 WHERE INVENTORY_ITEM_ID = MSII.INVENTORY_ITEM_ID
745 AND ORGANIZATION_ID = MSII.ORGANIZATION_ID
746 AND dr =1
747 )
748 ELSE MIRI.REVISION_ID
749 END) REVISION_ID, #' ||
750 l_item_rev_dl_id || q'# AS DATA_LEVEL_ID
751 FROM
752 MTL_SYSTEM_ITEMS_INTERFACE MSII,
753 MTL_ITEM_REVISIONS_INTERFACE MIRI
754 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
755 AND MSII.TEMPLATE_ID IS NOT NULL
756 AND MIRI.INVENTORY_ITEM_ID(+) = MSII.INVENTORY_ITEM_ID
757 AND MIRI.ORGANIZATION_ID(+) = MSII.ORGANIZATION_ID
758 AND MIRI.SET_PROCESS_ID(+) = MSII.SET_PROCESS_ID
759 AND MIRI.PROCESS_FLAG(+) = 1
760 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
761 AND MSII.PROCESS_FLAG = 1
762 UNION ALL
763 SELECT
764 MSII.TEMPLATE_ID,
765 MSII.INVENTORY_ITEM_ID ,
766 MSII.ORGANIZATION_ID,
767 MSII.ITEM_CATALOG_GROUP_ID,
768 NULL AS PK1_VALUE,
769 NULL AS PK2_VALUE,
770 NULL AS PK3_VALUE,
771 NULL AS PK4_VALUE,
772 NULL AS PK5_VALUE,
773 NULL AS REVISION_ID, #' ||
774 l_item_dl_id || q'# AS DATA_LEVEL_ID
775 FROM
776 MTL_SYSTEM_ITEMS_INTERFACE MSII
777 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
778 AND MSII.TEMPLATE_ID IS NOT NULL
779 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
780 AND MSII.PROCESS_FLAG = 1
781 UNION ALL
782 SELECT
783 MSII.TEMPLATE_ID,
784 MSII.INVENTORY_ITEM_ID ,
785 MSII.ORGANIZATION_ID,
786 MSII.ITEM_CATALOG_GROUP_ID,
787 NULL AS PK1_VALUE,
788 NULL AS PK2_VALUE,
789 NULL AS PK3_VALUE,
790 NULL AS PK4_VALUE,
791 NULL AS PK5_VALUE,
792 NULL AS REVISION_ID, #' ||
793 l_item_org_dl_id || q'# AS DATA_LEVEL_ID
794 FROM
795 MTL_SYSTEM_ITEMS_INTERFACE MSII
796 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
797 AND MSII.TEMPLATE_ID IS NOT NULL
798 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
799 AND MSII.PROCESS_FLAG = 1 #';
800
801 Debug_Conc_Log('Apply_Templates_For_UDAs: Created l_entity_sql');
802 l_gdsn_entity_sql := q'#
803 SELECT
804 MSII.TEMPLATE_ID,
805 MSII.INVENTORY_ITEM_ID ,
806 MSII.ORGANIZATION_ID,
807 MSII.ITEM_CATALOG_GROUP_ID,
808 NULL AS PK1_VALUE,
809 NULL AS PK2_VALUE,
810 NULL AS PK3_VALUE,
811 NULL AS PK4_VALUE,
812 NULL AS PK5_VALUE,
813 NULL AS REVISION_ID, #' ||
814 l_item_gtin_dl_id || q'# AS DATA_LEVEL_ID
815 FROM
816 MTL_SYSTEM_ITEMS_INTERFACE MSII
817 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
818 AND MSII.TEMPLATE_ID IS NOT NULL
819 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
820 AND MSII.PROCESS_FLAG = 1
821 AND NVL(MSII.GDSN_OUTBOUND_ENABLED_FLAG, 'N') = 'Y'
822 UNION ALL
823 SELECT
824 MSII.TEMPLATE_ID,
825 MSII.INVENTORY_ITEM_ID ,
826 MSII.ORGANIZATION_ID,
827 MSII.ITEM_CATALOG_GROUP_ID,
828 NULL AS PK1_VALUE,
829 NULL AS PK2_VALUE,
830 NULL AS PK3_VALUE,
831 NULL AS PK4_VALUE,
832 NULL AS PK5_VALUE,
833 NULL AS REVISION_ID, #' ||
834 l_item_gtin_multi_dl_id || q'# AS DATA_LEVEL_ID
835 FROM
836 MTL_SYSTEM_ITEMS_INTERFACE MSII
837 WHERE MSII.ITEM_CATALOG_GROUP_ID IS NOT NULL
838 AND MSII.TEMPLATE_ID IS NOT NULL
839 AND MSII.SET_PROCESS_ID = #' || p_batch_id || q'#
840 AND NVL(MSII.GDSN_OUTBOUND_ENABLED_FLAG, 'N') = 'Y'
841 AND MSII.PROCESS_FLAG = 1 #';
842
843 Debug_Conc_Log('Apply_Templates_For_UDAs: Created l_gdsn_entity_sql');
844
845 Call_UDA_Apply_Template
846 ( p_batch_id => p_batch_id,
847 p_entity_sql => l_entity_sql,
848 p_gdsn_entity_sql => l_gdsn_entity_sql,
849 p_user_id => p_user_id,
850 p_login_id => p_login_id,
851 p_prog_appid => p_prog_appid,
852 p_prog_id => p_prog_id,
853 p_request_id => p_request_id,
854 x_return_status => l_return_status,
855 x_err_msg => l_err_msg
856 );
857
858 Debug_Conc_Log('Apply_Templates_For_UDAs: Done Call_UDA_Apply_Template l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
859 IF l_return_status = '2' THEN
860 x_return_status := l_return_status;
861 x_err_msg := l_err_msg;
862 RETURN;
863 ELSE
864 x_return_status := l_return_status;
865 x_err_msg := l_err_msg;
866 END IF;
867 END IF; -- IF l_apply_multiple_template
868
869 IF NVL(x_return_status, '0') = '0' THEN
870 x_return_status := '0';
871 x_err_msg := NULL;
872 END IF;
873 Debug_Conc_Log('Apply_Templates_For_UDAs: Done with l_return_status, l_err_msg='||x_return_status||','||x_err_msg);
874 EXCEPTION WHEN OTHERS THEN
875 x_return_status := '2';
876 x_err_msg := SQLERRM;
877 Debug_Conc_Log('Apply_Templates_For_UDAs: Error with l_return_status, l_err_msg='||x_return_status||','||x_err_msg);
878 END Apply_Templates_For_UDAs;
879
880 PROCEDURE Copy_UDA_Attributes(retcode OUT NOCOPY VARCHAR2,
881 errbuf OUT NOCOPY VARCHAR2,
882 p_batch_id NUMBER)
883 IS
884 CURSOR c_data_levels IS
885 SELECT
886 edlb.DATA_LEVEL_ID,
887 edlb.DATA_LEVEL_NAME
888 FROM
889 EGO_IMPORT_COPY_OPTIONS eico,
890 EGO_DATA_LEVEL_B edlb,
891 EGO_FND_DSC_FLX_CTX_EXT ag_ext
892 WHERE eico.COPY_OPTION LIKE 'COPY_ATTR_GROUP%'
893 AND eico.BATCH_ID = p_batch_id
894 AND edlb.DATA_LEVEL_NAME = RTRIM(SUBSTR(eico.COPY_OPTION, INSTR(eico.COPY_OPTION, ':')+1))
895 AND edlb.APPLICATION_ID = 431
896 AND edlb.APPLICATION_ID = ag_ext.APPLICATION_ID
897 AND edlb.ATTR_GROUP_TYPE = ag_ext.DESCRIPTIVE_FLEXFIELD_NAME
898 AND ag_ext.ATTR_GROUP_ID = eico.ATTR_GROUP_ID
899 GROUP BY edlb.DATA_LEVEL_ID, edlb.DATA_LEVEL_NAME
900 UNION
901 SELECT
902 DATA_LEVEL_ID,
903 DATA_LEVEL_NAME
904 FROM EGO_DATA_LEVEL_B
905 WHERE APPLICATION_ID = 431
906 AND ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
907 AND DATA_LEVEL_NAME = 'ITEM_REVISION_LEVEL';
908
909 l_src_sql VARCHAR2(32000);
910 l_ag_sql VARCHAR2(32000);
911 l_dest_sql VARCHAR2(32000);
912 l_join_condition VARCHAR2(4000);
913 l_rev_where_clause VARCHAR2(1000);
914 l_rev_id_sql VARCHAR2(2000);
915 l_pk_where VARCHAR2(2000);
916 l_return_status VARCHAR2(10);
917 l_ret_code VARCHAR2(10);
918 l_err_msg VARCHAR2(4000);
919 l_msg_data VARCHAR2(4000);
920 l_msg_count NUMBER;
921 BEGIN
922 Debug_Conc_Log('Copy_UDA_Attributes: Starting ');
923 RETCODE := '0';
924 ERRBUF := NULL;
925
926 FOR i IN c_data_levels LOOP
927 IF i.DATA_LEVEL_NAME = 'ITEM_REVISION_LEVEL' THEN
928 l_rev_where_clause := ' AND msii.COPY_REVISION_ID = ext_prod.REVISION_ID';
929 l_pk_where := ' AND ext_prod.PK1_VALUE IS NULL AND ext_prod.PK2_VALUE IS NULL ';
930 l_rev_id_sql := q'#(SELECT MAX(miri.REVISION_ID) KEEP (DENSE_RANK FIRST ORDER BY miri.REVISION)
931 FROM MTL_ITEM_REVISIONS_INTERFACE miri
932 WHERE miri.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
933 AND miri.ORGANIZATION_ID = msii.ORGANIZATION_ID
934 AND miri.SET_PROCESS_ID = msii.SET_PROCESS_ID
935 AND miri.PROCESS_FLAG = 1
936 ) AS REVISION_ID, #';
937 ELSE
938 l_rev_where_clause := NULL;
939 l_rev_id_sql := ' NULL AS REVISION_ID, ';
940 IF i.DATA_LEVEL_NAME = 'ITEM_SUP' THEN
941 l_pk_where := ' AND ext_prod.PK1_VALUE IS NOT NULL AND ext_prod.PK2_VALUE IS NULL ';
942 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP_SITE' THEN
943 l_pk_where := ' AND ext_prod.PK1_VALUE IS NOT NULL AND ext_prod.PK2_VALUE IS NOT NULL ';
944 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP_SITE_ORG' THEN
945 l_pk_where := ' AND ext_prod.PK1_VALUE IS NOT NULL AND ext_prod.PK2_VALUE IS NOT NULL ';
946 ELSE
947 l_pk_where := NULL;
948 END IF;
949 END IF;
950 l_src_sql := q'#
951 SELECT
952 ROWNUM AS ROW_IDENTIFIER,
953 msii.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
954 msii.ORGANIZATION_ID AS ORGANIZATION_ID,
955 msii.SET_PROCESS_ID AS DATA_SET_ID,
956 msii.ORGANIZATION_CODE,
957 msii.ITEM_NUMBER,
958 msii.ITEM_CATALOG_GROUP_ID, #' || l_rev_id_sql || q'#
959 NULL AS REVISION,
960 ext_prod.DATA_LEVEL_ID,
961 ext_prod.PK1_VALUE,
962 ext_prod.PK2_VALUE,
963 ext_prod.PK3_VALUE,
964 ext_prod.PK4_VALUE,
965 ext_prod.PK5_VALUE,
966 NULL AS CHANGE_ID,
967 NULL AS CHANGE_LINE_ID,
968 msii.SOURCE_SYSTEM_ID,
969 msii.SOURCE_SYSTEM_REFERENCE,
970 msii.BUNDLE_ID,
971 msii.TRANSACTION_ID,
972 ext_prod.ATTR_GROUP_ID,
973 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
974 FROM
975 EGO_IMPORT_COPY_OPTIONS eico,
976 MTL_SYSTEM_ITEMS_INTERFACE msii,
977 EGO_MTL_SY_ITEMS_EXT_VL ext_prod
978 WHERE eico.COPY_OPTION = 'COPY_ATTR_GROUP:#' || i.DATA_LEVEL_NAME || q'#'
979 AND eico.BATCH_ID = #' || p_batch_id || q'#
980 AND eico.BATCH_ID = msii.SET_PROCESS_ID
981 AND msii.PROCESS_FLAG = 1
982 AND msii.COPY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
983 AND msii.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID #' || l_rev_where_clause || q'#
984 AND ext_prod.DATA_LEVEL_ID = #' || i.DATA_LEVEL_ID || l_pk_where || q'#
985 AND ext_prod.ATTR_GROUP_ID = eico.ATTR_GROUP_ID #';
986
987 l_ag_sql := q'#
988 SELECT
989 ext_prod.ATTR_GROUP_ID
990 FROM
991 EGO_IMPORT_COPY_OPTIONS eico,
992 MTL_SYSTEM_ITEMS_INTERFACE msii,
993 EGO_MTL_SY_ITEMS_EXT_VL ext_prod
994 WHERE eico.COPY_OPTION = 'COPY_ATTR_GROUP:#' || i.DATA_LEVEL_NAME || q'#'
995 AND eico.BATCH_ID = #' || p_batch_id || q'#
996 AND eico.BATCH_ID = msii.SET_PROCESS_ID
997 AND msii.PROCESS_FLAG = 1
998 AND msii.COPY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
999 AND msii.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID #' || l_rev_where_clause || q'#
1000 AND ext_prod.DATA_LEVEL_ID = #' || i.DATA_LEVEL_ID || l_pk_where || q'#
1001 AND ext_prod.ATTR_GROUP_ID = eico.ATTR_GROUP_ID #';
1002
1003 Debug_Conc_Log('Copy_UDA_Attributes: Calling copy for data level-'||i.DATA_LEVEL_ID);
1004
1005 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
1006 (
1007 p_api_version => 1.0
1008 ,p_commit => 'F'
1009 ,p_copy_from_intf_table => 'F'
1010 ,p_source_entity_sql => l_src_sql
1011 ,p_source_attr_groups_sql => l_ag_sql
1012 ,p_dest_process_status => '2' -- Bug 10263673
1013 ,p_dest_data_set_id => p_batch_id
1014 ,p_dest_transaction_type => 'CREATE'
1015 ,p_cleanup_row_identifiers => FND_API.G_FALSE
1016 ,x_return_status => l_return_status
1017 ,x_msg_count => l_msg_count
1018 ,x_msg_data => l_msg_data
1019 );
1020
1021 Debug_Conc_Log('Copy_UDA_Attributes: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
1022
1023 IF l_return_status = 'S' THEN
1024 l_ret_code := '0';
1025 l_err_msg := NULL;
1026 ELSIF l_return_status = 'E' THEN
1027 l_ret_code := '1';
1028 l_err_msg := l_msg_data;
1029 ELSE
1030 l_ret_code := '2';
1031 l_err_msg := l_msg_data;
1032 END IF;
1033
1034 IF l_ret_code > RETCODE THEN
1035 RETCODE := l_ret_code;
1036 ERRBUF := l_err_msg;
1037 END IF;
1038
1039 IF RETCODE = '2' THEN
1040 RETURN;
1041 END IF;
1042 END LOOP; -- c_data_levels
1043 EXCEPTION WHEN OTHERS THEN
1044 RETCODE := '2';
1045 ERRBUF := SQLERRM;
1046 END Copy_UDA_Attributes;
1047
1048 -- procedure to do attribute group level defaulting
1049 -- Bug 9959169 : Added a new parameter p_msii_miri_process_flag
1050 PROCEDURE Do_AGLevel_UDA_Defaulting( p_batch_id NUMBER,
1051 x_return_status OUT NOCOPY VARCHAR2,
1052 x_err_msg OUT NOCOPY VARCHAR2
1053 ,p_msii_miri_process_flag IN NUMBER DEFAULT 1 -- Bug 9959169
1054
1055 )
1056 IS
1057 l_err_msg VARCHAR2(4000);
1058 l_return_status VARCHAR2(10);
1059 l_entity_sql VARCHAR2(32000);
1060 l_item_dl_id NUMBER;
1061 l_item_org_dl_id NUMBER;
1062 l_item_rev_dl_id NUMBER;
1063 l_item_gtin_dl_id NUMBER;
1064 l_item_gtin_multi_dl_id NUMBER;
1065 l_exclude_ag_sql VARCHAR2(4000);
1066
1067 l_g_ps_in_process CONSTANT NUMBER := 2; --for bug 7523737
1068
1069
1070
1071 CURSOR c_data_levels IS
1072 SELECT ATTR_GROUP_TYPE, DATA_LEVEL_ID, DATA_LEVEL_NAME
1073 FROM EGO_DATA_LEVEL_B
1074 WHERE ATTR_GROUP_TYPE IN ('EGO_ITEMMGMT_GROUP', 'EGO_ITEM_GTIN_ATTRS', 'EGO_ITEM_GTIN_MULTI_ATTRS')
1075 AND APPLICATION_ID = 431
1076 AND DATA_LEVEL_NAME IN ( 'ITEM_LEVEL', 'ITEM_REVISION_LEVEL', 'ITEM_ORG' );
1077
1078 BEGIN
1079 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: Starting ');
1080
1081 FOR i IN c_data_levels LOOP
1082 IF i.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
1083 l_item_dl_id := i.DATA_LEVEL_ID;
1084 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND i.DATA_LEVEL_NAME = 'ITEM_ORG' THEN
1085 l_item_org_dl_id := i.DATA_LEVEL_ID;
1086 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP' AND i.DATA_LEVEL_NAME = 'ITEM_REVISION_LEVEL' THEN
1087 l_item_rev_dl_id := i.DATA_LEVEL_ID;
1088 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_ATTRS' AND i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
1089 l_item_gtin_dl_id := i.DATA_LEVEL_ID;
1090 ELSIF i.ATTR_GROUP_TYPE = 'EGO_ITEM_GTIN_MULTI_ATTRS' AND i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
1091 l_item_gtin_multi_dl_id := i.DATA_LEVEL_ID;
1092 END IF;
1093 END LOOP;
1094
1095 l_exclude_ag_sql := NULL;
1096 -- Fix for bug#9660659
1097
1098 l_entity_sql := q'#
1099 SELECT
1100 msii.TRANSACTION_ID,
1101 msii.INVENTORY_ITEM_ID,
1102 msii.ORGANIZATION_ID,
1103 NULL AS REVISION_ID,
1104 msii.ITEM_CATALOG_GROUP_ID,
1105 msii.ITEM_NUMBER,
1106 msii.ORGANIZATION_CODE,
1107 NULL AS PK1_VALUE,
1108 NULL AS PK2_VALUE,
1109 NULL AS PK3_VALUE,
1110 NULL AS PK4_VALUE,
1111 NULL AS PK5_VALUE,
1112 #' || l_item_dl_id || q'# AS DATA_LEVEL_ID
1113 FROM
1114 MTL_SYSTEM_ITEMS_INTERFACE msii, MTL_PARAMETERS mp
1115 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
1116 AND msii.ITEM_CATALOG_GROUP_ID IS NOT NULL
1117 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
1118 AND msii.TRANSACTION_TYPE = 'CREATE'
1119 AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'Y'
1120 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
1121 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
1122 UNION ALL
1123 SELECT
1124 msii.TRANSACTION_ID,
1125 msii.INVENTORY_ITEM_ID,
1126 msii.ORGANIZATION_ID,
1127 NULL AS REVISION_ID,
1128 msii.ITEM_CATALOG_GROUP_ID,
1129 msii.ITEM_NUMBER,
1130 msii.ORGANIZATION_CODE,
1131 NULL AS PK1_VALUE,
1132 NULL AS PK2_VALUE,
1133 NULL AS PK3_VALUE,
1134 NULL AS PK4_VALUE,
1135 NULL AS PK5_VALUE,
1136 #' || l_item_org_dl_id || q'# AS DATA_LEVEL_ID
1137 FROM
1138 MTL_SYSTEM_ITEMS_INTERFACE msii
1139 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
1140 AND msii.ITEM_CATALOG_GROUP_ID IS NOT NULL
1141 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
1142 AND msii.TRANSACTION_TYPE = 'CREATE'
1143 AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'Y'
1144 UNION ALL
1145 SELECT /*+ leading(miri) use_nl_with_index(msii, MTL_SYSTEM_ITEMS_INTERFACE_N1) */
1146 miri.TRANSACTION_ID,
1147 miri.INVENTORY_ITEM_ID,
1148 miri.ORGANIZATION_ID,
1149 miri.REVISION_ID,
1150 msii.ITEM_CATALOG_GROUP_ID,
1151 miri.ITEM_NUMBER,
1152 miri.ORGANIZATION_CODE,
1153 NULL AS PK1_VALUE,
1154 NULL AS PK2_VALUE,
1155 NULL AS PK3_VALUE,
1156 NULL AS PK4_VALUE,
1157 NULL AS PK5_VALUE,
1158 #' || l_item_rev_dl_id || q'# AS DATA_LEVEL_ID
1159 FROM
1160 MTL_SYSTEM_ITEMS_INTERFACE msii,
1161 MTL_ITEM_REVISIONS_INTERFACE miri
1162 WHERE miri.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
1163 AND miri.ORGANIZATION_ID = msii.ORGANIZATION_ID
1164 AND msii.ITEM_CATALOG_GROUP_ID IS NOT NULL
1165 AND miri.SET_PROCESS_ID = msii.SET_PROCESS_ID
1166 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
1167 AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'Y'
1168 AND msii.TRANSACTION_TYPE = 'CREATE'
1169 AND miri.SET_PROCESS_ID = #' || p_batch_id || q'#
1170 AND miri.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'# #';
1171
1172 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: Created l_entity_sql');
1173
1174 EGO_USER_ATTRS_BULK_PVT.Insert_Default_Val_Rows (
1175 p_api_version =>1.0
1176 ,p_application_id =>431
1177 ,p_attr_group_type =>'EGO_ITEMMGMT_GROUP'
1178 ,p_object_name =>'EGO_ITEM'
1179 ,p_interface_table_name =>'EGO_ITM_USR_ATTR_INTRFC'
1180 ,p_data_set_id => p_batch_id
1181 ,p_target_entity_sql => l_entity_sql
1182 ,p_attr_groups_to_exclude => l_exclude_ag_sql
1183 ,p_additional_class_Code_query => 'SELECT PARENT_CATALOG_GROUP_ID FROM EGO_ITEM_CAT_DENORM_HIER WHERE CHILD_CATALOG_GROUP_ID = ENTITY.ITEM_CATALOG_GROUP_ID '
1184 ,p_extra_column_names => 'PROG_INT_CHAR1 '
1185 ,p_extra_column_values => ' ''EXT_DEFAULT_VAL_ROW'' '
1186 ,x_return_status => l_return_status
1187 ,x_msg_data => l_err_msg);
1188
1189 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: Done EGO_USER_ATTRS_BULK_PVT.Insert_Default_Val_Rows l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1190 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1191 x_return_status := '2';
1192 x_err_msg := l_err_msg;
1193 RETURN;
1194 ELSE
1195 x_return_status := '0';
1196 x_err_msg := NULL;
1197 END IF;
1198
1199 --Bug 7523737 Begin
1200 --The above API call inserts records for mandatory UDAs with default values.
1201 --However, when user is assigning items to child organizations, we should
1202 --not be inserting records into the UDA table for item level UDAs (as they
1203 --are master controlled). So deleting the child records for item level
1204 --UDAs here (identified by rev_id = null. For 12.0+ releases, we need to use data level ID).
1205 DELETE FROM EGO_ITM_USR_ATTR_INTRFC ATTRS
1206 -- WHERE ATTRS.DATA_SET_ID = p_data_set_id
1207 WHERE ATTRS.DATA_SET_ID = p_batch_id
1208 AND ATTRS.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
1209 -- Bug 13434831 : Start
1210 -- Need to check for data_level_id instead of revision_id
1211 -- AND ATTRS.REVISION_ID IS NULL
1212 AND ATTRS.DATA_LEVEL_ID = l_item_dl_id
1213 -- Bug 13434831 : End
1214 --AND ATTRS.PROCESS_STATUS = G_PS_IN_PROCESS
1215 AND ATTRS.PROCESS_STATUS = l_g_ps_in_process
1216 AND ATTRS.PROG_INT_CHAR1 = 'EXT_DEFAULT_VAL_ROW'
1217 AND EXISTS (SELECT 'X'
1218 FROM MTL_PARAMETERS
1219 WHERE ORGANIZATION_ID = ATTRS.ORGANIZATION_ID
1220 AND ORGANIZATION_ID <> MASTER_ORGANIZATION_ID);
1221 --Bug 7523737 End
1222
1223 -- Bug 9959169 Start
1224 -- The above api call inserts records for mandatory UDAs with default values.
1225 -- However, when user is trying to create a style item, we should bot be inserting variant attributes as it would value set for style item.
1226 -- So deleting the variant records for style item.
1227 DELETE EGO_ITM_USR_ATTR_INTRFC EIUAI
1228 WHERE EIUAI.DATA_SET_ID = p_batch_id
1229 AND EIUAI.PROCESS_STATUS = l_g_ps_in_process
1230 AND EIUAI.ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
1231 AND EIUAI.PROG_INT_CHAR1 = 'EXT_DEFAULT_VAL_ROW'
1232 AND (SELECT VARIANT FROM EGO_FND_DSC_FLX_CTX_EXT EXT
1233 WHERE APPLICATION_ID = 431
1234 AND EIUAI.ATTR_GROUP_INT_NAME = DESCRIPTIVE_FLEX_CONTEXT_CODE
1235 AND DESCRIPTIVE_FLEXFIELD_NAME = 'EGO_ITEMMGMT_GROUP') = 'Y'
1236 AND EXISTS (SELECT 1 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
1237 WHERE MSII.INVENTORY_ITEM_ID = EIUAI.INVENTORY_ITEM_ID
1238 AND MSII.ORGANIZATION_ID = EIUAI.ORGANIZATION_ID
1239 AND MSII.SET_PROCESS_ID = EIUAI.DATA_SET_ID
1240 AND NVL(MSII.STYLE_ITEM_FLAG, 'N') = 'Y'
1241 AND MSII.PROCESS_FLAG = p_msii_miri_process_flag ) ;
1242 -- Bug 9959169 End
1243
1244
1245
1246 l_entity_sql := q'#
1247 SELECT
1248 msii.TRANSACTION_ID,
1249 msii.INVENTORY_ITEM_ID,
1250 msii.ORGANIZATION_ID,
1251 NULL AS REVISION_ID,
1252 msii.ITEM_CATALOG_GROUP_ID,
1253 msii.ITEM_NUMBER,
1254 msii.ORGANIZATION_CODE,
1255 NULL AS PK1_VALUE,
1256 NULL AS PK2_VALUE,
1257 NULL AS PK3_VALUE,
1258 NULL AS PK4_VALUE,
1259 NULL AS PK5_VALUE,
1260 #' || l_item_gtin_dl_id || q'# AS DATA_LEVEL_ID
1261 FROM
1262 MTL_SYSTEM_ITEMS_INTERFACE msii, MTL_PARAMETERS mp
1263 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
1264 AND msii.ITEM_CATALOG_GROUP_ID IS NOT NULL
1265 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
1266 AND NVL(msii.GDSN_OUTBOUND_ENABLED_FLAG, 'N') = 'Y'
1267 AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'Y'
1268 AND msii.TRANSACTION_TYPE = 'CREATE'
1269 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
1270 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
1271 UNION ALL
1272 SELECT
1273 msii.TRANSACTION_ID,
1274 msii.INVENTORY_ITEM_ID,
1275 msii.ORGANIZATION_ID,
1276 NULL AS REVISION_ID,
1277 msii.ITEM_CATALOG_GROUP_ID,
1278 msii.ITEM_NUMBER,
1279 msii.ORGANIZATION_CODE,
1280 NULL AS PK1_VALUE,
1281 NULL AS PK2_VALUE,
1282 NULL AS PK3_VALUE,
1283 NULL AS PK4_VALUE,
1284 NULL AS PK5_VALUE,
1285 #' || l_item_gtin_multi_dl_id || q'# AS DATA_LEVEL_ID
1286 FROM
1287 MTL_SYSTEM_ITEMS_INTERFACE msii, MTL_PARAMETERS mp
1288 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
1289 AND msii.ITEM_CATALOG_GROUP_ID IS NOT NULL
1290 AND NVL(msii.GDSN_OUTBOUND_ENABLED_FLAG, 'N') = 'Y'
1291 AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'Y'
1292 AND msii.TRANSACTION_TYPE = 'CREATE'
1293 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
1294 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
1295 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'# #';
1296
1297 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: For GDSN Attributes, Created l_entity_sql');
1298 EGO_USER_ATTRS_BULK_PVT.Insert_Default_Val_Rows (
1299 p_api_version =>1.0
1300 ,p_application_id =>431
1301 ,p_attr_group_type =>'EGO_ITEM_GTIN_ATTRS'
1302 ,p_object_name =>'EGO_ITEM'
1303 ,p_interface_table_name =>'EGO_ITM_USR_ATTR_INTRFC'
1304 ,p_data_set_id => p_batch_id
1305 ,p_target_entity_sql => l_entity_sql
1306 ,p_attr_groups_to_exclude => l_exclude_ag_sql
1307 ,p_additional_class_Code_query => 'SELECT PARENT_CATALOG_GROUP_ID FROM EGO_ITEM_CAT_DENORM_HIER WHERE CHILD_CATALOG_GROUP_ID = ENTITY.ITEM_CATALOG_GROUP_ID '
1308 ,p_extra_column_names => 'PROG_INT_CHAR1'
1309 ,p_extra_column_values => ' ''EXT_DEFAULT_VAL_ROW'' '
1310 ,x_return_status => l_return_status
1311 ,x_msg_data => l_err_msg);
1312
1313 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: Done EGO_USER_ATTRS_BULK_PVT.Insert_Default_Val_Rows l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1314 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1315 x_return_status := '2';
1316 x_err_msg := l_err_msg;
1317 RETURN;
1318 ELSE
1319 x_return_status := '0';
1320 x_err_msg := NULL;
1321 END IF;
1322
1323 l_entity_sql := q'#
1324 SELECT
1325 eiai.TRANSACTION_ID,
1326 eiai.INVENTORY_ITEM_ID,
1327 eiai.ORGANIZATION_ID,
1328 NULL AS REVISION_ID,
1329 ( NVL( (SELECT ITEM_CATALOG_GROUP_ID
1330 FROM MTL_SYSTEM_ITEMS_B msib
1331 WHERE msib.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID
1332 AND msib.ORGANIZATION_ID = eiai.ORGANIZATION_ID
1333 ),
1334 (SELECT ITEM_CATALOG_GROUP_ID
1335 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
1336 WHERE msii.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID
1337 AND msii.ORGANIZATION_ID = eiai.ORGANIZATION_ID
1338 AND msii.SET_PROCESS_ID = eiai.BATCH_ID
1339 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
1340 AND ROWNUM = 1
1341 )
1342 )
1343 ) AS ITEM_CATALOG_GROUP_ID,
1344 eiai.ITEM_NUMBER,
1345 eiai.ORGANIZATION_CODE,
1346 eiai.PK1_VALUE,
1347 eiai.PK2_VALUE,
1348 NULL AS PK3_VALUE,
1349 NULL AS PK4_VALUE,
1350 NULL AS PK5_VALUE,
1351 eiai.DATA_LEVEL_ID
1352 FROM
1353 EGO_ITEM_ASSOCIATIONS_INTF eiai
1354 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
1355 AND NVL(eiai.STYLE_ITEM_FLAG, 'Y') = 'Y'
1356 AND eiai.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'# #';
1357
1358 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: For Intersections - Created l_entity_sql');
1359
1360 EGO_USER_ATTRS_BULK_PVT.Insert_Default_Val_Rows (
1361 p_api_version =>1.0
1362 ,p_application_id =>431
1363 ,p_attr_group_type =>'EGO_ITEMMGMT_GROUP'
1364 ,p_object_name =>'EGO_ITEM'
1365 ,p_interface_table_name =>'EGO_ITM_USR_ATTR_INTRFC'
1366 ,p_data_set_id => p_batch_id
1367 ,p_target_entity_sql => l_entity_sql
1368 ,p_attr_groups_to_exclude => l_exclude_ag_sql
1369 ,p_additional_class_Code_query => 'SELECT PARENT_CATALOG_GROUP_ID FROM EGO_ITEM_CAT_DENORM_HIER WHERE CHILD_CATALOG_GROUP_ID = ENTITY.ITEM_CATALOG_GROUP_ID '
1370 ,p_extra_column_names => 'PROG_INT_CHAR1 '
1371 ,p_extra_column_values => ' ''EXT_DEFAULT_VAL_ROW'' '
1372 ,x_return_status => l_return_status
1373 ,x_msg_data => l_err_msg);
1374
1375 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: For Intersections - Done EGO_USER_ATTRS_BULK_PVT.Insert_Default_Val_Rows l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1376 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1377 x_return_status := '2';
1378 x_err_msg := l_err_msg;
1379 RETURN;
1380 ELSE
1381 x_return_status := '0';
1382 x_err_msg := NULL;
1383 END IF;
1384 EXCEPTION WHEN OTHERS THEN
1385 x_return_status := '2';
1386 x_err_msg := SQLERRM;
1387 Debug_Conc_Log('Do_AGLevel_UDA_Defaulting: Error with l_return_status, l_err_msg='||x_return_status||','||x_err_msg);
1388 END Do_AGLevel_UDA_Defaulting;
1389
1390 /* Function to process copy options for UDAs
1391 */
1392 PROCEDURE Process_Copy_Options_For_UDAs(retcode OUT NOCOPY VARCHAR2,
1393 errbuf OUT NOCOPY VARCHAR2,
1394 p_batch_id NUMBER,
1395 p_copy_options_exist VARCHAR2)
1396 IS
1397 l_user_id NUMBER := FND_GLOBAL.USER_ID;
1398 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
1399 l_prog_appid NUMBER := FND_GLOBAL.PROG_APPL_ID;
1400 l_prog_id NUMBER := FND_GLOBAL.CONC_PROGRAM_ID;
1401 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
1402 l_err_msg VARCHAR2(4000);
1403 l_copy_first VARCHAR2(1);
1404 l_return_status VARCHAR2(1) := '0';
1405 BEGIN
1406 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Starting, p_copy_options_exist='||p_copy_options_exist);
1407 IF l_request_id IS NULL OR l_request_id <= 0 THEN
1408 l_request_id := -1;
1409 END IF;
1410
1411 RETCODE := '0';
1412 ERRBUF := NULL;
1413
1414 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Calling Resolve_Data_Level_Id');
1415 Resolve_Data_Level_Id( p_batch_id => p_batch_id);
1416 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done Resolve_Data_Level_Id');
1417
1418 IF NVL(p_copy_options_exist, 'N') = 'N' THEN
1419 -- applying templates
1420 -- template_id/name is taken from the template_id/name
1421 -- column of MSII table
1422 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Calling Apply_Templates_For_UDAs');
1423 Apply_Templates_For_UDAs( p_batch_id,
1424 l_user_id,
1425 l_login_id,
1426 l_prog_appid,
1427 l_prog_id,
1428 l_request_id,
1429 l_return_status,
1430 l_err_msg
1431 );
1432 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done Apply_Templates_For_UDAs with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1433 IF l_return_status > RETCODE THEN
1434 RETCODE := l_return_status;
1435 ERRBUF := l_err_msg;
1436 END IF;
1437 IF RETCODE = '2' THEN
1438 RETURN;
1439 END IF;
1440 ELSE --IF p_copy_option_exists = 'N' THEN
1441 -- get copy options here and depending on the options
1442 -- apply templates, copy, etc.
1443 BEGIN
1444 SELECT NVL(SELECTION_FLAG, 'N') INTO l_copy_first
1445 FROM EGO_IMPORT_COPY_OPTIONS
1446 WHERE BATCH_ID = p_batch_id
1447 AND COPY_OPTION = 'COPY_FIRST';
1448 EXCEPTION
1449 WHEN NO_DATA_FOUND THEN
1450 l_copy_first := 'N';
1451 END;
1452
1453 -- if user has selected copy_first='Y', then it means that
1454 -- first copy the attributes and then apply the templates
1455 -- but when applying templates overwrite the existing values
1456 -- but technically we do it reverse i.e.
1457 -- if user has selected copy_first='Y', then we will apply the
1458 -- templates first (without overwriting existing values) in the
1459 -- reverse order that user has specified, and then we will
1460 -- copy the attributes (without overwriting existing values)
1461
1462 Debug_Conc_Log('Process_Copy_Options_For_UDAs: l_copy_first='||l_copy_first);
1463 IF l_copy_first = 'N' THEN
1464 -- copying UDA attributes
1465 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Calling Copy_UDA_Attributes');
1466
1467 Copy_UDA_Attributes(retcode => l_return_status,
1468 errbuf => l_err_msg,
1469 p_batch_id => p_batch_id
1470 );
1471
1472 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done Copy_UDA_Attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1473 IF l_return_status > RETCODE THEN
1474 RETCODE := l_return_status;
1475 ERRBUF := l_err_msg;
1476 END IF;
1477 IF RETCODE = '2' THEN
1478 RETURN;
1479 END IF;
1480
1481 Apply_Templates_For_UDAs( p_batch_id,
1482 l_user_id,
1483 l_login_id,
1484 l_prog_appid,
1485 l_prog_id,
1486 l_request_id,
1487 l_return_status,
1488 l_err_msg
1489 );
1490 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done Apply_Templates_For_UDAs with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1491 IF l_return_status > RETCODE THEN
1492 RETCODE := l_return_status;
1493 ERRBUF := l_err_msg;
1494 END IF;
1495 IF RETCODE = '2' THEN
1496 RETURN;
1497 END IF;
1498 ELSE --IF l_copy_first = 'N' THEN
1499 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Calling Apply_Templates_For_UDAs');
1500 Apply_Templates_For_UDAs( p_batch_id,
1501 l_user_id,
1502 l_login_id,
1503 l_prog_appid,
1504 l_prog_id,
1505 l_request_id,
1506 l_return_status,
1507 l_err_msg
1508 );
1509 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done Apply_Templates_For_UDAs with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1510 IF l_return_status > RETCODE THEN
1511 RETCODE := l_return_status;
1512 ERRBUF := l_err_msg;
1513 END IF;
1514 IF RETCODE = '2' THEN
1515 RETURN;
1516 END IF;
1517
1518 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Calling Copy_UDA_Attributes');
1519
1520 Copy_UDA_Attributes(retcode => l_return_status,
1521 errbuf => l_err_msg,
1522 p_batch_id => p_batch_id
1523 );
1524
1525 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done Copy_UDA_Attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1526 IF l_return_status > RETCODE THEN
1527 RETCODE := l_return_status;
1528 ERRBUF := l_err_msg;
1529 END IF;
1530
1531 IF RETCODE = '2' THEN
1532 RETURN;
1533 END IF;
1534 END IF; --IF l_copy_first = 'N' THEN
1535 END IF; -- IF NVL(p_copy_option_exists, 'N') = 'N' THEN
1536
1537 IF NVL(RETCODE, '0') = '0' THEN
1538 RETCODE := '0';
1539 ERRBUF := NULL;
1540 END IF;
1541
1542 -- Bug 10263673 : Start
1543 -- The below call to the api is needed as, the row idents need to be cleaned up after the template/copy attrs is done
1544 -- and before the attr level defaulting.
1545 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Calling Clean_Up_UDA_Row_Idents ');
1546 EGO_IMPORT_PVT.Clean_Up_UDA_Row_Idents(
1547 p_batch_id => p_batch_id,
1548 p_process_status => 2,
1549 p_ignore_item_num_upd => FND_API.G_TRUE,
1550 p_commit => FND_API.G_FALSE );
1551 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Clean_Up_UDA_Row_Idents Done.');
1552 -- Bug 10263673 : End
1553
1554 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Done - retcode, errbuf='||retcode||','||errbuf);
1555 EXCEPTION WHEN OTHERS THEN
1556 RETCODE := '2';
1557 ERRBUF := SQLERRM;
1558 Debug_Conc_Log('Process_Copy_Options_For_UDAs: Error - retcode, errbuf='||retcode||','||errbuf);
1559 END Process_Copy_Options_For_UDAs;
1560
1561 /* Private API to call tempalte application for items
1562 */
1563 FUNCTION Apply_Templates_For_Items
1564 ( p_batch_id NUMBER,
1565 p_user_id NUMBER,
1566 p_login_id NUMBER,
1567 p_prog_appid NUMBER,
1568 p_prog_id NUMBER,
1569 p_request_id NUMBER,
1570 x_err_msg OUT NOCOPY VARCHAR2
1571 )
1572 RETURN INTEGER
1573 IS
1574 l_err_msg VARCHAR2(4000);
1575 l_return_status INTEGER;
1576 l_template_table INVPULI2.Import_Template_Tbl_Type;
1577 l_apply_multiple_template BOOLEAN;
1578 BEGIN
1579 Debug_Conc_Log('Apply_Templates_For_Items: Starting p_batch_id='||p_batch_id);
1580 SELECT TEMPLATE_ID
1581 BULK COLLECT INTO l_template_table
1582 FROM EGO_IMPORT_COPY_OPTIONS
1583 WHERE BATCH_ID = p_batch_id
1584 AND COPY_OPTION = 'APPLY_TEMPLATE'
1585 ORDER BY TEMPLATE_SEQUENCE DESC;
1586
1587 IF l_template_table IS NULL OR l_template_table.COUNT = 0 THEN
1588 l_apply_multiple_template := FALSE;
1589 ELSE
1590 l_apply_multiple_template := TRUE;
1591 END IF;
1592
1593 IF l_apply_multiple_template THEN
1594 Debug_Conc_Log('Apply_Templates_For_Items: APPLY_TEMPLATE option found in Copy options, so applying multiple templates');
1595 Debug_Conc_Log('Apply_Templates_For_Items: Calling INVPULI2.apply_multiple_template');
1596 l_return_status := INVPULI2.apply_multiple_template
1597 (
1598 p_template_tbl => l_template_table
1599 ,p_org_id => NULL
1600 ,p_all_org => 1
1601 ,p_prog_appid => p_prog_appid
1602 ,p_prog_id => p_prog_id
1603 ,p_request_id => p_request_id
1604 ,p_user_id => p_user_id
1605 ,p_login_id => p_login_id
1606 ,p_xset_id => p_batch_id
1607 ,x_err_text => l_err_msg
1608 );
1609
1610 Debug_Conc_Log('Apply_Templates_For_Items: Done INVPULI2.apply_multiple_template with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1611 IF l_return_status <> 0 THEN
1612 x_err_msg := l_err_msg;
1613 RETURN l_return_status;
1614 END IF;
1615 ELSE -- IF l_apply_multiple_template
1616 -- applying templates present in the MSII table
1617 -- template_id/name is taken from the template_id/name
1618 -- column of MSII table
1619 Debug_Conc_Log('Apply_Templates_For_Items: APPLY_TEMPLATE option NOT found in Copy options, so applying templates present in MSII');
1620 Debug_Conc_Log('Apply_Templates_For_Items: Calling INVPULI2.copy_template_attributes');
1621 l_return_status := INVPULI2.copy_template_attributes
1622 (
1623 org_id => NULL
1624 ,all_org => 1
1625 ,prog_appid => p_prog_appid
1626 ,prog_id => p_prog_id
1627 ,request_id => p_request_id
1628 ,user_id => p_user_id
1629 ,login_id => p_login_id
1630 ,xset_id => p_batch_id
1631 ,err_text => l_err_msg
1632 );
1633
1634 Debug_Conc_Log('Apply_Templates_For_Items: Done INVPULI2.copy_template_attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1635 IF l_return_status <> 0 THEN
1636 x_err_msg := l_err_msg;
1637 RETURN l_return_status;
1638 END IF;
1639 END IF; -- IF l_apply_multiple_template
1640
1641 x_err_msg := NULL;
1642 Debug_Conc_Log('Apply_Templates_For_Items: Done with l_return_status, l_err_msg='||l_return_status||','||x_err_msg);
1643 RETURN l_return_status;
1644 EXCEPTION WHEN OTHERS THEN
1645 x_err_msg := SQLERRM;
1646 Debug_Conc_Log('Apply_Templates_For_Items: Error with l_return_status, l_err_msg='||SQLCODE||','||x_err_msg);
1647 RETURN SQLCODE;
1648 END Apply_Templates_For_Items;
1649
1650
1651
1652 PROCEDURE Copy_New_Cat_Assgns_From_Style(retcode OUT NOCOPY VARCHAR2,
1653 errbuf OUT NOCOPY VARCHAR2,
1654 p_batch_id NUMBER)
1655 IS
1656 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
1657 l_def_style_catg_option VARCHAR2(1);
1658 l_pdh_ss_id NUMBER := EGO_IMPORT_PVT.Get_Pdh_Source_System_Id;
1659 BEGIN
1660 RETCODE := '0';
1661 Debug_Conc_Log('Copy_New_Cat_Assgns_From_Style: Starting');
1662 l_def_style_catg_option := EGO_COMMON_PVT.GET_OPTION_VALUE('EGO_DEFAULT_STYLE_ALTERNATE_CATALOG');
1663 Debug_Conc_Log('Copy_New_Cat_Assgns_From_Style: l_def_style_catg_option='||l_def_style_catg_option);
1664 IF NVL(l_def_style_catg_option, 'N') <> 'Y' THEN
1665 Debug_Conc_Log('Copy_New_Cat_Assgns_From_Style: Defaulting is set to NO, so returning');
1666 RETCODE := '0';
1667 ERRBUF := NULL;
1668 RETURN;
1669 END IF;
1670
1671 INSERT INTO MTL_ITEM_CATEGORIES_INTERFACE
1672 (
1673 INVENTORY_ITEM_ID,
1674 ITEM_NUMBER,
1675 ORGANIZATION_ID,
1676 CATEGORY_SET_ID,
1677 CATEGORY_ID,
1678 PROCESS_FLAG,
1679 SET_PROCESS_ID,
1680 TRANSACTION_TYPE,
1681 SOURCE_SYSTEM_ID,
1682 CREATED_BY
1683 )
1684 SELECT
1685 msik.INVENTORY_ITEM_ID,
1686 msik.CONCATENATED_SEGMENTS AS ITEM_NUMBER,
1687 msik.ORGANIZATION_ID,
1688 mici.CATEGORY_SET_ID,
1689 mici.CATEGORY_ID,
1690 1 PROCESS_FLAG,
1691 p_batch_id,
1692 'CREATE',
1693 l_pdh_ss_id,
1694 -99
1695 FROM
1696 MTL_ITEM_CATEGORIES_INTERFACE mici,
1697 MTL_SYSTEM_ITEMS_KFV msik
1698 WHERE mici.SET_PROCESS_ID = p_batch_id
1699 AND msik.STYLE_ITEM_ID = mici.INVENTORY_ITEM_ID
1700 AND msik.ORGANIZATION_ID = mici.ORGANIZATION_ID
1701 AND mici.REQUEST_ID = l_request_id
1702 AND mici.TRANSACTION_TYPE = 'CREATE'
1703 AND mici.PROCESS_FLAG = 7
1704 AND msik.STYLE_ITEM_FLAG = 'N'
1705 AND NOT EXISTS (SELECT 1 FROM MTL_DEFAULT_CATEGORY_SETS dcs WHERE dcs.CATEGORY_SET_ID = mici.CATEGORY_SET_ID)
1706 AND NOT EXISTS (SELECT 1
1707 FROM MTL_ITEM_CATEGORIES mic
1708 WHERE mic.CATEGORY_SET_ID = mici.CATEGORY_SET_ID
1709 AND mic.CATEGORY_ID = mici.CATEGORY_ID
1710 AND mic.INVENTORY_ITEM_ID = msik.INVENTORY_ITEM_ID
1711 AND mic.ORGANIZATION_ID = msik.ORGANIZATION_ID)
1712 AND NOT EXISTS (SELECT NULL
1713 FROM MTL_ITEM_CATEGORIES_INTERFACE mici1
1714 WHERE mici1.SET_PROCESS_ID = p_batch_id
1715 AND mici1.PROCESS_FLAG = 1
1716 AND (mici1.INVENTORY_ITEM_ID = msik.INVENTORY_ITEM_ID OR mici1.ITEM_NUMBER = msik.CONCATENATED_SEGMENTS)
1717 AND mici1.ORGANIZATION_ID = msik.ORGANIZATION_ID
1718 AND (mici1.CATEGORY_SET_ID = mici.CATEGORY_SET_ID
1719 OR mici1.CATEGORY_SET_NAME = (SELECT mcs.CATEGORY_SET_NAME
1720 FROM MTL_CATEGORY_SETS_VL mcs
1721 WHERE mcs.CATEGORY_SET_ID = mici.CATEGORY_SET_ID
1722 )
1723 )
1724 AND (mici1.CATEGORY_ID = mici.CATEGORY_ID
1725 OR mici1.CATEGORY_NAME = (SELECT mc.CONCATENATED_SEGMENTS
1726 FROM MTL_CATEGORIES_KFV mc
1727 WHERE mc.CATEGORY_ID = mici.CATEGORY_ID
1728 )
1729 )
1730 );
1731
1732 Debug_Conc_Log('Copy_New_Cat_Assgns_From_Style: Inserted records count='||SQL%ROWCOUNT);
1733 EXCEPTION WHEN OTHERS THEN
1734 RETCODE := '2';
1735 ERRBUF := 'Copy_New_Cat_Assgns_From_Style: Error -'||SQLERRM;
1736 END Copy_New_Cat_Assgns_From_Style;
1737
1738
1739 PROCEDURE Copy_Category_Assignments(retcode OUT NOCOPY VARCHAR2,
1740 errbuf OUT NOCOPY VARCHAR2,
1741 p_batch_id NUMBER,
1742 p_skus_only VARCHAR2)
1743 IS
1744 l_def_style_catg_option VARCHAR2(1);
1745 BEGIN
1746 RETCODE := '0';
1747 Debug_Conc_Log('Copy_Category_Assignments: Starting p_skus_only='||p_skus_only);
1748 l_def_style_catg_option := EGO_COMMON_PVT.GET_OPTION_VALUE('EGO_DEFAULT_STYLE_ALTERNATE_CATALOG');
1749 Debug_Conc_Log('Copy_Category_Assignments: l_def_style_catg_option='||l_def_style_catg_option);
1750 IF NVL(l_def_style_catg_option, 'N') <> 'Y' AND NVL(p_skus_only, 'Y') = 'Y' THEN
1751 Debug_Conc_Log('Copy_Category_Assignments: Defaulting is set to NO, so returning');
1752 RETCODE := '0';
1753 ERRBUF := NULL;
1754 RETURN;
1755 END IF;
1756
1757 INSERT INTO MTL_ITEM_CATEGORIES_INTERFACE
1758 (
1759 INVENTORY_ITEM_ID,
1760 ITEM_NUMBER,
1761 ORGANIZATION_ID,
1762 CATEGORY_SET_ID,
1763 CATEGORY_ID,
1764 PROCESS_FLAG,
1765 SET_PROCESS_ID,
1766 TRANSACTION_TYPE
1767 )
1768 SELECT
1769 MSII.INVENTORY_ITEM_ID,
1770 MSII.ITEM_NUMBER,
1771 MSII.ORGANIZATION_ID,
1772 STYLE_CATS.CATEGORY_SET_ID,
1773 STYLE_CATS.CATEGORY_ID,
1774 1 PROCESS_FLAG,
1775 MSII.SET_PROCESS_ID,
1776 'CREATE'
1777 FROM
1778 MTL_SYSTEM_ITEMS_INTERFACE MSII,
1779 MTL_PARAMETERS O,
1780 MTL_ITEM_CATEGORIES STYLE_CATS
1781 WHERE MSII.SET_PROCESS_ID = p_batch_id
1782 AND MSII.PROCESS_FLAG = 1
1783 AND MSII.TRANSACTION_TYPE = 'CREATE'
1784 AND ((NVL(p_skus_only, 'Y') = 'Y' AND MSII.STYLE_ITEM_FLAG = 'N')
1785 OR (NVL(p_skus_only, 'Y') = 'N' AND NVL(MSII.STYLE_ITEM_FLAG, 'Y') = 'Y')
1786 )
1787 AND MSII.ORGANIZATION_ID = O.ORGANIZATION_ID
1788 AND O.ORGANIZATION_ID = O.MASTER_ORGANIZATION_ID
1789 AND NOT EXISTS (SELECT 1 FROM MTL_DEFAULT_CATEGORY_SETS DCS WHERE DCS.CATEGORY_SET_ID = STYLE_CATS.CATEGORY_SET_ID)
1790 AND STYLE_CATS.INVENTORY_ITEM_ID = MSII.COPY_ITEM_ID
1791 AND STYLE_CATS.ORGANIZATION_ID = MSII.ORGANIZATION_ID
1792 AND NOT EXISTS (SELECT NULL
1793 FROM MTL_ITEM_CATEGORIES_INTERFACE MICI
1794 WHERE MICI.SET_PROCESS_ID = MSII.SET_PROCESS_ID
1795 AND MICI.PROCESS_FLAG = MSII.PROCESS_FLAG
1796 AND (MICI.ITEM_NUMBER = MSII.ITEM_NUMBER OR MICI.INVENTORY_ITEM_ID = MSII.INVENTORY_ITEM_ID)
1797 AND MICI.ORGANIZATION_ID = MSII.ORGANIZATION_ID
1798 AND MICI.CATEGORY_SET_ID = STYLE_CATS.CATEGORY_SET_ID
1799 AND MICI.CATEGORY_ID = STYLE_CATS.CATEGORY_ID
1800 );
1801
1802 Debug_Conc_Log('Copy_Category_Assignments: Inserted records count='||SQL%ROWCOUNT);
1803 EXCEPTION WHEN OTHERS THEN
1804 RETCODE := '2';
1805 ERRBUF := 'Copy_Category_Assignments: Error -'||SQLERRM;
1806 END Copy_Category_Assignments;
1807
1808 /* Function to process copy options for Items */
1809 PROCEDURE Process_Copy_Options_For_Items(retcode OUT NOCOPY VARCHAR2,
1810 errbuf OUT NOCOPY VARCHAR2,
1811 p_batch_id NUMBER,
1812 p_copy_options_exist VARCHAR2)
1813 IS
1814 l_user_id NUMBER := FND_GLOBAL.USER_ID;
1815 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
1816 l_prog_appid NUMBER := FND_GLOBAL.PROG_APPL_ID;
1817 l_prog_id NUMBER := FND_GLOBAL.CONC_PROGRAM_ID;
1818 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
1819 l_err_msg VARCHAR2(4000);
1820 l_return_status INTEGER;
1821 l_ret_status VARCHAR2(10);
1822 l_copy_first VARCHAR2(1);
1823 l_copy_org VARCHAR2(1);
1824 l_copy_cat VARCHAR2(1);
1825 l_copy_sup VARCHAR2(1);
1826 l_copy_sup_site VARCHAR2(1);
1827 l_copy_sup_site_org VARCHAR2(1);
1828 l_data_level_names EGO_ITEM_ASSOCIATIONS_PUB.VARCHAR2_TBL_TYPE;
1829 l_src_item_id NUMBER;
1830 l_msg_count NUMBER;
1831 l_cntr NUMBER;
1832 BEGIN
1833 Debug_Conc_Log('Process_Copy_Options_For_Items: Starting p_copy_options_exist='||p_copy_options_exist);
1834 RETCODE := '0';
1835 IF l_request_id IS NULL OR l_request_id <= 0 THEN
1836 l_request_id := -1;
1837 END IF;
1838
1839 IF NVL(p_copy_options_exist, 'N') = 'N' THEN
1840 -- applying templates
1841 -- template_id/name is taken from the template_id/name
1842 -- column of MSII table
1843 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling INVPULI2.copy_template_attributes');
1844 l_return_status := INVPULI2.copy_template_attributes
1845 (
1846 org_id => NULL
1847 ,all_org => 1
1848 ,prog_appid => l_prog_appid
1849 ,prog_id => l_prog_id
1850 ,request_id => l_request_id
1851 ,user_id => l_user_id
1852 ,login_id => l_login_id
1853 ,xset_id => p_batch_id
1854 ,err_text => l_err_msg
1855 );
1856
1857 Debug_Conc_Log('Process_Copy_Options_For_Items: Done INVPULI2.copy_template_attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1858 IF l_return_status <> 0 THEN
1859 RETCODE := '2';
1860 ERRBUF := 'Error Code='||l_return_status||', Msg='||l_err_msg;
1861 RETURN;
1862 END IF;
1863
1864 -- copying MSI attributes
1865 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling INVPULI3.copy_item_attributes');
1866 l_return_status := INVPULI3.copy_item_attributes
1867 (
1868 org_id => NULL
1869 ,all_org => 1
1870 ,prog_appid => l_prog_appid
1871 ,prog_id => l_prog_id
1872 ,request_id => l_request_id
1873 ,user_id => l_user_id
1874 ,login_id => l_login_id
1875 ,xset_id => p_batch_id
1876 ,err_text => l_err_msg
1877 );
1878 Debug_Conc_Log('Process_Copy_Options_For_Items: Done INVPULI3.copy_item_attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1879 IF l_return_status <> 0 THEN
1880 RETCODE := '2';
1881 ERRBUF := 'Error Code='||l_return_status||', Msg='||l_err_msg;
1882 RETURN;
1883 END IF;
1884
1885 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling Copy_Category_Assignments for SKUs');
1886 Copy_Category_Assignments( retcode => l_ret_status
1887 ,errbuf => l_err_msg
1888 ,p_batch_id => p_batch_id
1889 ,p_skus_only => 'Y'
1890 );
1891 Debug_Conc_Log('Process_Copy_Options_For_Items: Done Copy_Category_Assignments with l_ret_status, l_err_msg='||l_ret_status||','||l_err_msg);
1892 IF l_ret_status > RETCODE THEN
1893 RETCODE := l_ret_status;
1894 ERRBUF := l_err_msg;
1895 END IF;
1896
1897 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling Copy_New_Cat_Assgns_From_Style for SKUs');
1898 Copy_New_Cat_Assgns_From_Style( retcode => l_ret_status
1899 ,errbuf => l_err_msg
1900 ,p_batch_id => p_batch_id
1901 );
1902 Debug_Conc_Log('Process_Copy_Options_For_Items: Done Copy_New_Cat_Assgns_From_Style with l_ret_status, l_err_msg='||l_ret_status||','||l_err_msg);
1903 IF l_ret_status > RETCODE THEN
1904 RETCODE := l_ret_status;
1905 ERRBUF := l_err_msg;
1906 END IF;
1907 ELSE --IF p_copy_option_exists = 'N' THEN
1908 -- get copy options here and depending on the options
1909 -- apply templates, copy, etc.
1910 BEGIN
1911 SELECT NVL(SELECTION_FLAG, 'N') INTO l_copy_first
1912 FROM EGO_IMPORT_COPY_OPTIONS
1913 WHERE BATCH_ID = p_batch_id
1914 AND COPY_OPTION = 'COPY_FIRST';
1915 EXCEPTION
1916 WHEN NO_DATA_FOUND THEN
1917 l_copy_first := 'N';
1918 END;
1919
1920 -- if user has selected copy_first='Y', then it means that
1921 -- first copy the attributes and then apply the templates
1922 -- but when applying templates overwrite the existing values
1923 -- but technically we do it reverse i.e.
1924 -- if user has selected copy_first='Y', then we will apply the
1925 -- templates first (without overwriting existing values) in the
1926 -- reverse order that user has specified, and then we will
1927 -- copy the attributes (without overwriting existing values)
1928
1929 Debug_Conc_Log('Process_Copy_Options_For_Items: l_copy_first='||l_copy_first);
1930 IF l_copy_first = 'N' THEN
1931 -- copying MSI attributes
1932 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling INVPULI3.copy_item_attributes');
1933 l_return_status := INVPULI3.copy_item_attributes
1934 (
1935 org_id => NULL
1936 ,all_org => 1
1937 ,prog_appid => l_prog_appid
1938 ,prog_id => l_prog_id
1939 ,request_id => l_request_id
1940 ,user_id => l_user_id
1941 ,login_id => l_login_id
1942 ,xset_id => p_batch_id
1943 ,err_text => l_err_msg
1944 );
1945
1946 Debug_Conc_Log('Process_Copy_Options_For_Items: Done INVPULI3.copy_item_attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1947 IF l_return_status <> 0 THEN
1948 RETCODE := '2';
1949 ERRBUF := 'Error Code='||l_return_status||', Msg='||l_err_msg;
1950 RETURN;
1951 END IF;
1952
1953 l_return_status := Apply_Templates_For_Items(p_batch_id,
1954 l_user_id,
1955 l_login_id,
1956 l_prog_appid,
1957 l_prog_id,
1958 l_request_id,
1959 l_err_msg
1960 );
1961 Debug_Conc_Log('Process_Copy_Options_For_Items: Done Apply_Templates_For_Items with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1962 IF l_return_status <> 0 THEN
1963 RETCODE := '2';
1964 ERRBUF := 'Error Code='||l_return_status||', Msg='||l_err_msg;
1965 RETURN;
1966 END IF;
1967 ELSE --IF l_copy_first = 'N' THEN
1968 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling Apply_Templates_For_Items');
1969 l_return_status := Apply_Templates_For_Items(p_batch_id,
1970 l_user_id,
1971 l_login_id,
1972 l_prog_appid,
1973 l_prog_id,
1974 l_request_id,
1975 l_err_msg
1976 );
1977 Debug_Conc_Log('Process_Copy_Options_For_Items: Done Apply_Templates_For_Items with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1978 IF l_return_status <> 0 THEN
1979 RETCODE := '2';
1980 ERRBUF := 'Error Code='||l_return_status||', Msg='||l_err_msg;
1981 RETURN;
1982 END IF;
1983
1984 -- copying MSI attributes
1985 l_return_status := INVPULI3.copy_item_attributes
1986 (
1987 org_id => NULL
1988 ,all_org => 1
1989 ,prog_appid => l_prog_appid
1990 ,prog_id => l_prog_id
1991 ,request_id => l_request_id
1992 ,user_id => l_user_id
1993 ,login_id => l_login_id
1994 ,xset_id => p_batch_id
1995 ,err_text => l_err_msg
1996 );
1997 Debug_Conc_Log('Process_Copy_Options_For_Items: Done INVPULI3.copy_item_attributes with l_return_status, l_err_msg='||l_return_status||','||l_err_msg);
1998 IF l_return_status <> 0 THEN
1999 RETCODE := '2';
2000 ERRBUF := 'Error Code='||l_return_status||', Msg='||l_err_msg;
2001 RETURN;
2002 END IF;
2003 END IF; --IF l_copy_first = 'N' THEN
2004
2005 -- copying organization assignments
2006 BEGIN
2007 SELECT NVL(SELECTION_FLAG, 'N') INTO l_copy_org
2008 FROM EGO_IMPORT_COPY_OPTIONS
2009 WHERE BATCH_ID = p_batch_id
2010 AND COPY_OPTION = 'COPY_ORG_ASSIGNMENTS';
2011 EXCEPTION
2012 WHEN NO_DATA_FOUND THEN
2013 l_copy_org := 'N';
2014 END;
2015
2016 Debug_Conc_Log('Process_Copy_Options_For_Items: l_copy_org='||l_copy_org);
2017 IF l_copy_org = 'Y' THEN
2018 INSERT INTO MTL_SYSTEM_ITEMS_INTERFACE
2019 (
2020 SET_PROCESS_ID,
2021 PROCESS_FLAG,
2022 TRANSACTION_TYPE,
2023 INVENTORY_ITEM_ID,
2024 ITEM_NUMBER,
2025 ORGANIZATION_ID,
2026 STYLE_ITEM_ID,
2027 STYLE_ITEM_FLAG,
2028 SOURCE_SYSTEM_ID,
2029 SOURCE_SYSTEM_REFERENCE,
2030 COPY_ITEM_ID
2031 )
2032 SELECT
2033 MSII.SET_PROCESS_ID,
2034 MSII.PROCESS_FLAG,
2035 'CREATE',
2036 MSII.INVENTORY_ITEM_ID,
2037 MSII.ITEM_NUMBER,
2038 MSI.ORGANIZATION_ID,
2039 MSI.STYLE_ITEM_ID,
2040 MSI.STYLE_ITEM_FLAG,
2041 MSII.SOURCE_SYSTEM_ID,
2042 MSII.SOURCE_SYSTEM_REFERENCE,
2043 MSII.COPY_ITEM_ID
2044 FROM
2045 MTL_SYSTEM_ITEMS_INTERFACE MSII,
2046 MTL_SYSTEM_ITEMS_B MSI,
2047 MTL_PARAMETERS MP
2048 WHERE MSII.SET_PROCESS_ID = p_batch_id
2049 AND MSII.PROCESS_FLAG = 1
2050 AND MSII.TRANSACTION_TYPE = 'CREATE'
2051 AND MSII.COPY_ITEM_ID = MSI.INVENTORY_ITEM_ID
2052 AND MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
2053 AND MP.MASTER_ORGANIZATION_ID <> MP.ORGANIZATION_ID
2054 AND NOT EXISTS (SELECT NULL
2055 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII2
2056 WHERE MSII2.SET_PROCESS_ID = MSII.SET_PROCESS_ID
2057 AND MSII2.PROCESS_FLAG = MSII.PROCESS_FLAG
2058 AND (MSII2.ITEM_NUMBER = MSII.ITEM_NUMBER OR MSII2.INVENTORY_ITEM_ID = MSII.INVENTORY_ITEM_ID)
2059 AND MSII2.ORGANIZATION_ID = MSI.ORGANIZATION_ID
2060 );
2061
2062 Debug_Conc_Log('Process_Copy_Options_For_Items: Done Copy Orgs., rowcount='||SQL%ROWCOUNT);
2063 END IF; -- IF l_copy_org = 'Y' THEN
2064
2065 -- copying category assignments
2066 BEGIN
2067 SELECT NVL(SELECTION_FLAG, 'N') INTO l_copy_cat
2068 FROM EGO_IMPORT_COPY_OPTIONS
2069 WHERE BATCH_ID = p_batch_id
2070 --AND REQUEST_ID = l_request_id
2071 AND COPY_OPTION = 'COPY_CAT_ASSIGNMENTS';
2072 EXCEPTION
2073 WHEN NO_DATA_FOUND THEN
2074 l_copy_cat := 'N';
2075 END;
2076
2077 Debug_Conc_Log('Process_Copy_Options_For_Items: l_copy_cat='||l_copy_cat);
2078 IF l_copy_cat = 'Y' THEN
2079 Debug_Conc_Log('Process_Copy_Options_For_Items: Calling Copy_Category_Assignments');
2080 Copy_Category_Assignments( retcode => l_ret_status
2081 ,errbuf => l_err_msg
2082 ,p_batch_id => p_batch_id
2083 ,p_skus_only => 'N'
2084 );
2085 Debug_Conc_Log('Process_Copy_Options_For_Items: Done Copy_Category_Assignments with l_ret_status, l_err_msg='||l_ret_status||','||l_err_msg);
2086 IF l_ret_status > RETCODE THEN
2087 RETCODE := l_ret_status;
2088 ERRBUF := l_err_msg;
2089 END IF;
2090 END IF; -- IF l_copy_cat = 'Y' THEN
2091
2092 -- copying intersections
2093 l_copy_sup := 'N';
2094 l_copy_sup_site := 'N';
2095 l_copy_sup_site_org := 'N';
2096 l_cntr := 1;
2097 FOR i IN ( SELECT COPY_OPTION, NVL(SELECTION_FLAG, 'N') SELECTION_FLAG
2098 FROM EGO_IMPORT_COPY_OPTIONS
2099 WHERE BATCH_ID = p_batch_id
2100 AND COPY_OPTION IN ('COPY_SUPPLIER_ASSIGNMENTS',
2101 'COPY_SUPPLIER_SITE_ASSIGNMENTS',
2102 'COPY_SUPPLIER_SITE_ORG_ASSIGNMENTS')
2103 )
2104 LOOP
2105 IF i.COPY_OPTION = 'COPY_SUPPLIER_ASSIGNMENTS' THEN
2106 l_copy_sup := i.SELECTION_FLAG;
2107 IF l_copy_sup = 'Y' THEN
2108 l_data_level_names(l_cntr) := 'ITEM_SUP';
2109 l_cntr := l_cntr + 1;
2110 END IF;
2111 ELSIF i.COPY_OPTION = 'COPY_SUPPLIER_SITE_ASSIGNMENTS' THEN
2112 l_copy_sup_site := i.SELECTION_FLAG;
2113 IF l_copy_sup_site = 'Y' THEN
2114 l_data_level_names(l_cntr) := 'ITEM_SUP_SITE';
2115 l_cntr := l_cntr + 1;
2116 END IF;
2117 ELSIF i.COPY_OPTION = 'COPY_SUPPLIER_SITE_ORG_ASSIGNMENTS' THEN
2118 l_copy_sup_site_org := i.SELECTION_FLAG;
2119 IF l_copy_sup_site_org = 'Y' THEN
2120 l_data_level_names(l_cntr) := 'ITEM_SUP_SITE_ORG';
2121 l_cntr := l_cntr + 1;
2122 END IF;
2123 END IF;
2124 END LOOP;
2125
2126 Debug_Conc_Log('Process_Copy_Options_For_Items: l_copy_sup,l_copy_sup_site,l_copy_sup_site_org='||l_copy_sup||','||l_copy_sup_site||','||l_copy_sup_site_org);
2127 IF (l_copy_sup = 'Y' OR l_copy_sup_site = 'Y' OR l_copy_sup_site_org = 'Y') THEN
2128 BEGIN
2129 SELECT COPY_ITEM_ID INTO l_src_item_id
2130 FROM MTL_SYSTEM_ITEMS_INTERFACE
2131 WHERE SET_PROCESS_ID = p_batch_id
2132 AND PROCESS_FLAG = 1
2133 AND COPY_ITEM_ID IS NOT NULL
2134 AND ROWNUM = 1;
2135
2136 Debug_Conc_Log('Process_Copy_Options_For_Items: l_src_item_id='||l_src_item_id);
2137 EGO_ITEM_ASSOCIATIONS_PUB.copy_associations_to_items
2138 (
2139 p_api_version => 1.0
2140 ,p_batch_id => p_batch_id
2141 ,p_src_item_id => l_src_item_id
2142 ,p_data_level_names => l_data_level_names
2143 ,x_return_status => l_ret_status
2144 ,x_msg_count => l_msg_count
2145 ,x_msg_data => l_err_msg
2146 );
2147 Debug_Conc_Log('Process_Copy_Options_For_Items: Done EGO_ITEM_ASSOCIATIONS_PUB.copy_associations_to_items - l_return_status, l_msg_data='||l_ret_status||','||l_err_msg);
2148 IF l_ret_status = 'S' THEN
2149 RETCODE := '0';
2150 ERRBUF := NULL;
2151 ELSIF l_ret_status = 'E' THEN
2152 RETCODE := '1';
2153 ERRBUF := l_err_msg;
2154 ELSE
2155 RETCODE := '2';
2156 ERRBUF := l_err_msg;
2157 RETURN;
2158 END IF;
2159 EXCEPTION WHEN NO_DATA_FOUND THEN
2160 Debug_Conc_Log('Process_Copy_Options_For_Items: Done No Item found to copy from ');
2161 NULL;
2162 END;
2163 END IF; -- IF (l_copy_sup = 'Y' OR
2164 END IF; --IF p_copy_option_exists = 'N' THEN
2165 RETCODE := '0';
2166 ERRBUF := NULL;
2167 Debug_Conc_Log('Process_Copy_Options_For_Items: Done - retcode, errbuf='||retcode||','||errbuf);
2168 EXCEPTION WHEN OTHERS THEN
2169 RETCODE := '2';
2170 ERRBUF := SQLERRM;
2171 Debug_Conc_Log('Process_Copy_Options_For_Items: Error - retcode, errbuf='||retcode||','||errbuf);
2172 END Process_Copy_Options_For_Items;
2173
2174 /*
2175 * This method does the defaulting of Supplier Intersections
2176 */
2177 PROCEDURE Default_Supplier_Intersections( retcode OUT NOCOPY VARCHAR2
2178 ,errbuf OUT NOCOPY VARCHAR2
2179 ,p_batch_id NUMBER
2180 ,p_msii_miri_process_flag IN NUMBER DEFAULT 1 -- Bug 12635842
2181 )
2182 IS
2183 l_return_status VARCHAR2(10);
2184 l_msg_count NUMBER;
2185 l_msg_data VARCHAR2(4000);
2186 BEGIN
2187 -- call defaulting API for Supplier Intersections
2188 Debug_Conc_Log('Default_Supplier_Intersections: Starting copy_from_style_to_SKUs');
2189 EGO_ITEM_ASSOCIATIONS_PUB.copy_from_style_to_SKUs
2190 (
2191 p_api_version => 1.0
2192 ,p_batch_id => p_batch_id
2193 ,x_return_status => l_return_status
2194 ,x_msg_count => l_msg_count
2195 ,x_msg_data => l_msg_data
2196 ,p_msii_miri_process_flag => p_msii_miri_process_flag -- Bug 12635842
2197 );
2198
2199 Debug_Conc_Log('Default_Supplier_Intersections: Done copy_from_style_to_SKUs - l_return_status, l_msg_data='||l_return_status||','||l_msg_data);
2200 IF l_return_status = 'S' THEN
2201 RETCODE := '0';
2202 ERRBUF := NULL;
2203 ELSIF l_return_status = 'E' THEN
2204 RETCODE := '1';
2205 ERRBUF := l_msg_data;
2206 ELSE
2207 RETCODE := '2';
2208 ERRBUF := l_msg_data;
2209 RETURN;
2210 END IF;
2211
2212 Debug_Conc_Log('Default_Supplier_Intersections: Calling Copy_To_Packs');
2213 EGO_ITEM_ASSOCIATIONS_PUB.Copy_To_Packs
2214 (
2215 p_api_version => 1.0
2216 ,p_batch_id => p_batch_id
2217 ,x_return_status => l_return_status
2218 ,x_msg_count => l_msg_count
2219 ,x_msg_data => l_msg_data
2220 );
2221
2222 Debug_Conc_Log('Default_Supplier_Intersections: Done Copy_To_Packs - l_return_status, l_msg_data='||l_return_status||','||l_msg_data);
2223 IF l_return_status = 'S' AND RETCODE = '0' THEN
2224 RETCODE := '0';
2225 ERRBUF := NULL;
2226 ELSIF l_return_status = 'E' AND RETCODE IN ('0', '1') THEN
2227 RETCODE := '1';
2228 ERRBUF := l_msg_data;
2229 ELSE
2230 RETCODE := '2';
2231 ERRBUF := l_msg_data;
2232 END IF;
2233 Debug_Conc_Log('Default_Supplier_Intersections: Done - l_return_status, l_msg_data='||RETCODE||','||ERRBUF);
2234 EXCEPTION WHEN OTHERS THEN
2235 RETCODE := '2';
2236 ERRBUF := SQLERRM;
2237 Debug_Conc_Log('Default_Supplier_Intersections: Error - retcode, errbuf='||retcode||','||errbuf);
2238 END Default_Supplier_Intersections;
2239
2240 /*
2241 * This method does the defaulting of User Defined Attributes
2242 * at each data level from Production table
2243 */
2244 PROCEDURE Default_User_Attrs_From_Prod( retcode OUT NOCOPY VARCHAR2
2245 ,errbuf OUT NOCOPY VARCHAR2
2246 ,p_batch_id NUMBER
2247 ,p_msii_miri_process_flag IN NUMBER DEFAULT 1 -- Bug 12635842
2248 )
2249 IS
2250 CURSOR c_data_levels IS
2251 SELECT DATA_LEVEL_ID, DATA_LEVEL_NAME
2252 FROM EGO_DATA_LEVEL_B
2253 WHERE ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
2254 AND APPLICATION_ID = 431
2255 AND DATA_LEVEL_NAME IN ('ITEM_LEVEL', 'ITEM_ORG', 'ITEM_SUP', 'ITEM_SUP_SITE', 'ITEM_SUP_SITE_ORG', 'ITEM_REVISION_LEVEL');
2256
2257 l_item_dl_id NUMBER;
2258 l_item_org_dl_id NUMBER;
2259 l_item_sup_dl_id NUMBER;
2260 l_item_sup_site_dl_id NUMBER;
2261 l_item_sup_site_org_dl_id NUMBER;
2262 l_item_rev_dl_id NUMBER;
2263 l_src_sql VARCHAR2(32000);
2264 l_ag_sql VARCHAR2(32000);
2265 l_dest_sql VARCHAR2(32000);
2266 l_join_condition VARCHAR2(32000);
2267 l_return_status VARCHAR2(10);
2268 l_msg_count NUMBER;
2269 l_msg_data VARCHAR2(4000);
2270 l_add_all_to_cm VARCHAR2(1); --for ER 9489112
2271 BEGIN
2272 Debug_Conc_Log('Default_User_Attrs_From_Prod: Starting ');
2273 -- getting data level ids for all intersections into local variables
2274 FOR i IN c_data_levels LOOP
2275 IF i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
2276 l_item_dl_id := i.DATA_LEVEL_ID;
2277 ELSIF i.DATA_LEVEL_NAME = 'ITEM_ORG' THEN
2278 l_item_org_dl_id := i.DATA_LEVEL_ID;
2279 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP' THEN
2280 l_item_sup_dl_id := i.DATA_LEVEL_ID;
2281 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP_SITE' THEN
2282 l_item_sup_site_dl_id := i.DATA_LEVEL_ID;
2283 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP_SITE_ORG' THEN
2284 l_item_sup_site_org_dl_id := i.DATA_LEVEL_ID;
2285 ELSIF i.DATA_LEVEL_NAME = 'ITEM_REVISION_LEVEL' THEN
2286 l_item_rev_dl_id := i.DATA_LEVEL_ID;
2287 END IF; -- IF i.DATA_LEVEL_NAME
2288 END LOOP; -- FOR i IN c_data_levels LOOP
2289
2290 Debug_Conc_Log('Default_User_Attrs_From_Prod: After getting Data Level IDs');
2291 -- building SQLs for Defaulting of Item Level UDAs from Style to SKUs
2292 l_src_sql := q'#
2293 SELECT
2294 ROWNUM AS ROW_IDENTIFIER,
2295 msii.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
2296 msii.ORGANIZATION_ID AS ORGANIZATION_ID,
2297 msii.SET_PROCESS_ID AS DATA_SET_ID,
2298 msii.ITEM_NUMBER,
2299 msii.ORGANIZATION_CODE,
2300 ext_prod.ITEM_CATALOG_GROUP_ID,
2301 ext_prod.ATTR_GROUP_ID,
2302 ext_prod.DATA_LEVEL_ID,
2303 NULL AS REVISION_ID,
2304 NULL AS REVISION,
2305 NULL AS PK1_VALUE,
2306 NULL AS PK2_VALUE,
2307 NULL AS PK3_VALUE,
2308 NULL AS PK4_VALUE,
2309 NULL AS PK5_VALUE,
2310 NULL AS CHANGE_ID,
2311 NULL AS CHANGE_LINE_ID,
2312 msii.SOURCE_SYSTEM_ID,
2313 msii.SOURCE_SYSTEM_REFERENCE,
2314 msii.BUNDLE_ID,
2315 msii.TRANSACTION_ID,
2316 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
2317 FROM MTL_SYSTEM_ITEMS_INTERFACE msii,
2318 EGO_MTL_SY_ITEMS_EXT_VL ext_prod,
2319 MTL_PARAMETERS mp
2320 WHERE msii.STYLE_ITEM_FLAG = 'N'
2321 AND msii.SET_PROCESS_ID = #' || p_batch_id || q'#
2322 AND msii.TRANSACTION_TYPE = 'CREATE'
2323 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2324 AND msii.STYLE_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2325 AND msii.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2326 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
2327 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
2328 AND ext_prod.DATA_LEVEL_ID = #' || l_item_dl_id || q'#
2329 AND EXISTS (SELECT NULL
2330 FROM EGO_ATTR_GROUP_DL eagd
2331 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2332 AND eagd.DATA_LEVEL_ID = ext_prod.DATA_LEVEL_ID
2333 AND NVL(eagd.DEFAULTING, 'D') = 'D'
2334 ) #';
2335 l_ag_sql := q'#
2336 SELECT
2337 ext_prod.ATTR_GROUP_ID
2338 FROM MTL_SYSTEM_ITEMS_INTERFACE msii,
2339 EGO_MTL_SY_ITEMS_EXT_B ext_prod,
2340 MTL_PARAMETERS mp
2341 WHERE msii.STYLE_ITEM_FLAG = 'N'
2342 AND msii.SET_PROCESS_ID = #' || p_batch_id || q'#
2343 AND msii.TRANSACTION_TYPE = 'CREATE'
2344 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2345 AND msii.STYLE_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2346 AND msii.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2347 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
2348 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
2349 AND ext_prod.DATA_LEVEL_ID = #' || l_item_dl_id || q'#
2350 AND EXISTS (SELECT NULL
2351 FROM EGO_ATTR_GROUP_DL eagd
2352 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2353 AND eagd.DATA_LEVEL_ID = ext_prod.DATA_LEVEL_ID
2354 AND NVL(eagd.DEFAULTING, 'D') = 'D'
2355 ) #';
2356
2357 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Level UDAs from Style to SKUs');
2358
2359 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
2360 (
2361 p_api_version => 1.0
2362 ,p_commit => 'F'
2363 ,p_copy_from_intf_table => 'F'
2364 ,p_source_entity_sql => l_src_sql
2365 ,p_source_attr_groups_sql => l_ag_sql
2366 ,p_dest_process_status => '2'
2367 ,p_dest_data_set_id => p_batch_id
2368 ,p_dest_transaction_type => 'CREATE'
2369 ,p_cleanup_row_identifiers => FND_API.G_FALSE
2370 ,x_return_status => l_return_status
2371 ,x_msg_count => l_msg_count
2372 ,x_msg_data => l_msg_data
2373 );
2374
2375 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
2376 IF l_return_status = 'S' THEN
2377 RETCODE := '0';
2378 ERRBUF := NULL;
2379 ELSIF l_return_status = 'E' THEN
2380 RETCODE := '1';
2381 ERRBUF := l_msg_data;
2382 ELSE
2383 RETCODE := '2';
2384 ERRBUF := l_msg_data;
2385 RETURN;
2386 END IF;
2387
2388 -- building SQLs for Defaulting of Item Revision Level UDAs from Style to SKUs
2389 --pnagasur:Modified below query for Bug 13394823
2390 l_src_sql := q'#
2391 SELECT
2392 ROWNUM AS ROW_IDENTIFIER,
2393 msii.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
2394 msii.ORGANIZATION_ID AS ORGANIZATION_ID,
2395 msii.SET_PROCESS_ID AS DATA_SET_ID,
2396 msii.ITEM_NUMBER,
2397 msii.ORGANIZATION_CODE,
2398 ext_prod.ITEM_CATALOG_GROUP_ID,
2399 ext_prod.ATTR_GROUP_ID,
2400 ext_prod.DATA_LEVEL_ID,
2401 (SELECT MAX(miri.REVISION_ID) KEEP (DENSE_RANK FIRST ORDER BY miri.REVISION)
2402 FROM MTL_ITEM_REVISIONS_INTERFACE miri
2403 WHERE miri.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
2404 AND miri.ORGANIZATION_ID = msii.ORGANIZATION_ID
2405 AND miri.SET_PROCESS_ID = msii.SET_PROCESS_ID
2406 AND miri.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2407 ) AS REVISION_ID,
2408 NULL AS REVISION,
2409 NULL AS PK1_VALUE,
2410 NULL AS PK2_VALUE,
2411 NULL AS PK3_VALUE,
2412 NULL AS PK4_VALUE,
2413 NULL AS PK5_VALUE,
2414 NULL AS CHANGE_ID,
2415 NULL AS CHANGE_LINE_ID,
2416 msii.SOURCE_SYSTEM_ID,
2417 msii.SOURCE_SYSTEM_REFERENCE,
2418 msii.BUNDLE_ID,
2419 msii.TRANSACTION_ID,
2420 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
2421 FROM MTL_SYSTEM_ITEMS_INTERFACE msii,
2422 EGO_MTL_SY_ITEMS_EXT_VL ext_prod,
2423 MTL_PARAMETERS mp
2424 WHERE msii.STYLE_ITEM_FLAG = 'N'
2425 AND msii.SET_PROCESS_ID = #' || p_batch_id || q'#
2426 AND msii.TRANSACTION_TYPE = 'CREATE'
2427 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2428 AND msii.STYLE_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2429 AND msii.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2430 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
2431 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
2432 AND ext_prod.DATA_LEVEL_ID = #' || l_item_rev_dl_id || q'#
2433 AND ext_prod.REVISION_ID = (SELECT Max(revision_id) FROM
2434 (SELECT revision_id, INVENTORY_ITEM_ID, ORGANIZATION_ID, dense_rank() over (PARTITION BY INVENTORY_ITEM_ID, ORGANIZATION_ID ORDER BY EFFECTIVITY_DATE DESC ) dr
2435 FROM MTL_ITEM_REVISIONS_B mirb1
2436 WHERE mirb1.EFFECTIVITY_DATE <= SYSDATE )
2437 WHERE INVENTORY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2438 AND ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2439 AND dr =1
2440 )
2441 AND EXISTS (SELECT NULL
2442 FROM EGO_ATTR_GROUP_DL eagd
2443 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2444 AND eagd.DATA_LEVEL_ID = ext_prod.DATA_LEVEL_ID
2445 AND NVL(eagd.DEFAULTING, 'D') = 'D'
2446 ) #';
2447
2448 l_ag_sql := q'#
2449 SELECT
2450 ext_prod.ATTR_GROUP_ID
2451 FROM MTL_SYSTEM_ITEMS_INTERFACE msii,
2452 EGO_MTL_SY_ITEMS_EXT_B ext_prod,
2453 MTL_PARAMETERS mp
2454 WHERE msii.STYLE_ITEM_FLAG = 'N'
2455 AND msii.SET_PROCESS_ID = #' || p_batch_id || q'#
2456 AND msii.TRANSACTION_TYPE = 'CREATE'
2457 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2458 AND msii.STYLE_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2459 AND msii.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2460 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
2461 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
2462 AND ext_prod.DATA_LEVEL_ID = #' || l_item_rev_dl_id || q'#
2463 AND ext_prod.REVISION_ID = (SELECT Max(revision_id) FROM
2464 (SELECT revision_id, INVENTORY_ITEM_ID, ORGANIZATION_ID, dense_rank() over (PARTITION BY INVENTORY_ITEM_ID, ORGANIZATION_ID ORDER BY EFFECTIVITY_DATE DESC ) dr
2465 FROM MTL_ITEM_REVISIONS_B mirb1
2466 WHERE mirb1.EFFECTIVITY_DATE <= SYSDATE )
2467 WHERE INVENTORY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2468 AND ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2469 AND dr =1
2470
2471 )
2472 AND EXISTS (SELECT NULL
2473 FROM EGO_ATTR_GROUP_DL eagd
2474 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2475 AND eagd.DATA_LEVEL_ID = ext_prod.DATA_LEVEL_ID
2476 AND NVL(eagd.DEFAULTING, 'D') = 'D'
2477 ) #';
2478
2479 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Revision Level UDAs from Style to SKUs');
2480
2481 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
2482 (
2483 p_api_version => 1.0
2484 ,p_commit => 'F'
2485 ,p_copy_from_intf_table => 'F'
2486 ,p_source_entity_sql => l_src_sql
2487 ,p_source_attr_groups_sql => l_ag_sql
2488 ,p_dest_process_status => '2'
2489 ,p_dest_data_set_id => p_batch_id
2490 ,p_dest_transaction_type => 'CREATE'
2491 ,p_cleanup_row_identifiers => FND_API.G_FALSE
2492 ,x_return_status => l_return_status
2493 ,x_msg_count => l_msg_count
2494 ,x_msg_data => l_msg_data
2495 );
2496
2497 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
2498 IF l_return_status = 'S' THEN
2499 RETCODE := '0';
2500 ERRBUF := NULL;
2501 ELSIF l_return_status = 'E' THEN
2502 RETCODE := '1';
2503 ERRBUF := l_msg_data;
2504 ELSE
2505 RETCODE := '2';
2506 ERRBUF := l_msg_data;
2507 RETURN;
2508 END IF;
2509
2510 -- building SQLs for Defaulting of Item Revision Level UDAs for newly created revisions
2511 -- ER 9489112, only Defaulting of Item Rev level UDAs when Change Order enabled and AddAllItemToChangeOrder option = Y
2512 -- since java code will default Item Rev level UDAs later
2513 --pnagasur:Modified below query for Bug 13394823
2514 l_add_all_to_cm := EGO_IMPORT_PVT.getAddAllToChangeFlag(p_batch_id => p_batch_id);
2515 IF l_add_all_to_cm <> 'Y' THEN
2516 l_src_sql := q'#
2517 SELECT
2518 ROWNUM AS ROW_IDENTIFIER,
2519 miri.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
2520 miri.ORGANIZATION_ID AS ORGANIZATION_ID,
2521 miri.SET_PROCESS_ID AS DATA_SET_ID,
2522 miri.ITEM_NUMBER,
2523 miri.ORGANIZATION_CODE,
2524 ext_prod.ITEM_CATALOG_GROUP_ID,
2525 ext_prod.ATTR_GROUP_ID,
2526 ext_prod.DATA_LEVEL_ID,
2527 miri.REVISION_ID,
2528 miri.REVISION,
2529 NULL AS PK1_VALUE,
2530 NULL AS PK2_VALUE,
2531 NULL AS PK3_VALUE,
2532 NULL AS PK4_VALUE,
2533 NULL AS PK5_VALUE,
2534 NULL AS CHANGE_ID,
2535 NULL AS CHANGE_LINE_ID,
2536 miri.SOURCE_SYSTEM_ID,
2537 miri.SOURCE_SYSTEM_REFERENCE,
2538 NULL AS BUNDLE_ID,
2539 miri.TRANSACTION_ID,
2540 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
2541 FROM MTL_ITEM_REVISIONS_INTERFACE miri,
2542 EGO_MTL_SY_ITEMS_EXT_VL ext_prod
2543 WHERE miri.SET_PROCESS_ID = #' || p_batch_id || q'#
2544 AND miri.TRANSACTION_TYPE = 'CREATE'
2545 AND miri.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2546 AND miri.INVENTORY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2547 AND miri.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2548 AND ext_prod.DATA_LEVEL_ID = #' || l_item_rev_dl_id || q'#
2549 AND ext_prod.REVISION_ID = (SELECT Max(revision_id) FROM
2550 (SELECT revision_id, INVENTORY_ITEM_ID, ORGANIZATION_ID, dense_rank() over (PARTITION BY INVENTORY_ITEM_ID, ORGANIZATION_ID ORDER BY EFFECTIVITY_DATE DESC ) dr
2551 FROM MTL_ITEM_REVISIONS_B mirb1
2552 WHERE mirb1.EFFECTIVITY_DATE <= SYSDATE )
2553 WHERE INVENTORY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2554 AND ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2555 AND dr =1
2556 )
2557 AND NOT EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
2558 WHERE msii.SET_PROCESS_ID = miri.SET_PROCESS_ID
2559 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2560 AND msii.TRANSACTION_TYPE = 'CREATE'
2561 AND msii.INVENTORY_ITEM_ID = miri.INVENTORY_ITEM_ID
2562 AND msii.ORGANIZATION_ID = miri.ORGANIZATION_ID
2563 ) #';
2564
2565 l_ag_sql := q'#
2566 SELECT
2567 ext_prod.ATTR_GROUP_ID
2568 FROM MTL_ITEM_REVISIONS_INTERFACE miri,
2569 EGO_MTL_SY_ITEMS_EXT_B ext_prod
2570 WHERE miri.SET_PROCESS_ID = #' || p_batch_id || q'#
2571 AND miri.TRANSACTION_TYPE = 'CREATE'
2572 AND miri.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2573 AND miri.INVENTORY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2574 AND miri.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2575 AND ext_prod.DATA_LEVEL_ID = #' || l_item_rev_dl_id || q'#
2576 AND ext_prod.REVISION_ID = (SELECT Max(revision_id) FROM
2577 (SELECT revision_id, INVENTORY_ITEM_ID, ORGANIZATION_ID, dense_rank() over (PARTITION BY INVENTORY_ITEM_ID, ORGANIZATION_ID ORDER BY EFFECTIVITY_DATE DESC ) dr
2578 FROM MTL_ITEM_REVISIONS_B mirb1
2579 WHERE mirb1.EFFECTIVITY_DATE <= SYSDATE )
2580 WHERE INVENTORY_ITEM_ID = ext_prod.INVENTORY_ITEM_ID
2581 AND ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2582 AND dr =1
2583 )
2584 AND NOT EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
2585 WHERE msii.SET_PROCESS_ID = miri.SET_PROCESS_ID
2586 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2587 AND msii.TRANSACTION_TYPE = 'CREATE'
2588 AND msii.INVENTORY_ITEM_ID = miri.INVENTORY_ITEM_ID
2589 AND msii.ORGANIZATION_ID = miri.ORGANIZATION_ID
2590 ) #';
2591
2592 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Revision Level UDAs for newly created revisions-'||l_src_sql);
2593
2594 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
2595 (
2596 p_api_version => 1.0
2597 ,p_commit => 'F'
2598 ,p_copy_from_intf_table => 'F'
2599 ,p_source_entity_sql => l_src_sql
2600 ,p_source_attr_groups_sql => l_ag_sql
2601 ,p_dest_process_status => '2'
2602 ,p_dest_data_set_id => p_batch_id
2603 ,p_dest_transaction_type => 'CREATE'
2604 ,p_cleanup_row_identifiers => FND_API.G_FALSE
2605 ,x_return_status => l_return_status
2606 ,x_msg_count => l_msg_count
2607 ,x_msg_data => l_msg_data
2608 );
2609
2610 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
2611 IF l_return_status = 'S' THEN
2612 RETCODE := '0';
2613 ERRBUF := NULL;
2614 ELSIF l_return_status = 'E' THEN
2615 RETCODE := '1';
2616 ERRBUF := l_msg_data;
2617 ELSE
2618 RETCODE := '2';
2619 ERRBUF := l_msg_data;
2620 RETURN;
2621 END IF;
2622 END IF; --l_add_all_to_cm <> 'Y'
2623
2624 -- building SQLs for Defaulting of UDAs for Org Assignments (SKU + Style + Std. Item)
2625 -- 6468564 : Removed the check on msi.
2626 l_src_sql := q'#
2627 SELECT
2628 ROWNUM AS ROW_IDENTIFIER,
2629 msii.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
2630 msii.ORGANIZATION_ID AS ORGANIZATION_ID,
2631 msii.SET_PROCESS_ID AS DATA_SET_ID,
2632 msii.ITEM_NUMBER,
2633 msii.ORGANIZATION_CODE,
2634 ext_prod.ITEM_CATALOG_GROUP_ID,
2635 ext_prod.ATTR_GROUP_ID,
2636 ext_prod.DATA_LEVEL_ID,
2637 NULL AS REVISION_ID,
2638 NULL AS REVISION,
2639 NULL AS PK1_VALUE,
2640 NULL AS PK2_VALUE,
2641 NULL AS PK3_VALUE,
2642 NULL AS PK4_VALUE,
2643 NULL AS PK5_VALUE,
2644 NULL AS CHANGE_ID,
2645 NULL AS CHANGE_LINE_ID,
2646 msii.SOURCE_SYSTEM_ID,
2647 msii.SOURCE_SYSTEM_REFERENCE,
2648 msii.BUNDLE_ID,
2649 msii.TRANSACTION_ID,
2650 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
2651 FROM
2652 MTL_SYSTEM_ITEMS_INTERFACE msii,
2653 EGO_MTL_SY_ITEMS_EXT_VL ext_prod,
2654 MTL_PARAMETERS mp
2655 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
2656 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2657 AND msii.TRANSACTION_TYPE = 'CREATE'
2658 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
2659 AND ext_prod.DATA_LEVEL_ID = #' || l_item_org_dl_id || q'#
2660 AND ext_prod.INVENTORY_ITEM_ID = NVL(msii.STYLE_ITEM_ID,msii.INVENTORY_ITEM_ID)
2661 AND ext_prod.ORGANIZATION_ID = NVL2(msii.STYLE_ITEM_ID,msii.ORGANIZATION_ID,mp.MASTER_ORGANIZATION_ID)
2662 AND EXISTS (SELECT 1
2663 FROM EGO_ATTR_GROUP_DL eagd
2664 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2665 AND eagd.DATA_LEVEL_ID = ext_prod.DATA_LEVEL_ID
2666 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR msii.STYLE_ITEM_ID IS NULL )
2667 )
2668 AND NOT EXISTS (SELECT 1
2669 FROM EGO_FND_DSC_FLX_CTX_EXT fl_ctx
2670 WHERE fl_ctx.DESCRIPTIVE_FLEXFIELD_NAME = 'EGO_ITEMMGMT_GROUP'
2671 AND fl_ctx.DESCRIPTIVE_FLEX_CONTEXT_CODE IN ('ItemDetailImage', 'ItemDetailDesc')
2672 AND ext_prod.ATTR_GROUP_ID = fl_ctx.ATTR_GROUP_ID
2673 )#';
2674
2675 l_ag_sql := q'#
2676 SELECT
2677 ext_prod.ATTR_GROUP_ID
2678 FROM
2679 MTL_SYSTEM_ITEMS_INTERFACE msii,
2680 EGO_MTL_SY_ITEMS_EXT_B ext_prod,
2681 MTL_PARAMETERS mp
2682 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
2683 AND msii.PROCESS_FLAG = #' || p_msii_miri_process_flag || q'#
2684 AND msii.TRANSACTION_TYPE = 'CREATE'
2685 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
2686 AND ext_prod.DATA_LEVEL_ID = #' || l_item_org_dl_id || q'#
2687 AND ext_prod.INVENTORY_ITEM_ID = NVL(msii.STYLE_ITEM_ID,msii.INVENTORY_ITEM_ID)
2688 AND ext_prod.ORGANIZATION_ID = NVL2(msii.STYLE_ITEM_ID,msii.ORGANIZATION_ID,mp.MASTER_ORGANIZATION_ID)
2689 AND EXISTS (SELECT 1
2690 FROM EGO_ATTR_GROUP_DL eagd
2691 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2692 AND eagd.DATA_LEVEL_ID = ext_prod.DATA_LEVEL_ID
2693 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR msii.STYLE_ITEM_ID IS NULL )
2694 )
2695 AND NOT EXISTS (SELECT 1
2696 FROM EGO_FND_DSC_FLX_CTX_EXT fl_ctx
2697 WHERE fl_ctx.DESCRIPTIVE_FLEXFIELD_NAME = 'EGO_ITEMMGMT_GROUP'
2698 AND fl_ctx.DESCRIPTIVE_FLEX_CONTEXT_CODE IN ('ItemDetailImage', 'ItemDetailDesc')
2699 AND ext_prod.ATTR_GROUP_ID = fl_ctx.ATTR_GROUP_ID
2700 )#';
2701
2702 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Org Level UDAs ');
2703
2704 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
2705 (
2706 p_api_version => 1.0
2707 ,p_commit => 'F'
2708 ,p_copy_from_intf_table => 'F'
2709 ,p_source_entity_sql => l_src_sql
2710 ,p_source_attr_groups_sql => l_ag_sql
2711 ,p_dest_process_status => '2'
2712 ,p_dest_data_set_id => p_batch_id
2713 ,p_dest_transaction_type => 'CREATE'
2714 ,p_cleanup_row_identifiers => FND_API.G_FALSE
2715 ,x_return_status => l_return_status
2716 ,x_msg_count => l_msg_count
2717 ,x_msg_data => l_msg_data
2718 );
2719
2720 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
2721
2722 IF l_return_status = 'S' THEN
2723 RETCODE := '0';
2724 ERRBUF := NULL;
2725 ELSIF l_return_status = 'E' THEN
2726 RETCODE := '1';
2727 ERRBUF := l_msg_data;
2728 ELSE
2729 RETCODE := '2';
2730 ERRBUF := l_msg_data;
2731 RETURN;
2732 END IF;
2733
2734 -- For Defaulting of UDAs for Item Supplier Intersections (SKU + Style + Std. Item), updating
2735 -- the Style_item_flag and Style_item_id in the associations interface table.
2736 Debug_Conc_Log('Default_User_Attrs_From_Prod: Updating Style_item_id, Style_item_flag in EGO_ITEM_ASSOCIATIONS_INTF');
2737 UPDATE EGO_ITEM_ASSOCIATIONS_INTF eiai
2738 SET (STYLE_ITEM_FLAG, STYLE_ITEM_ID) = (SELECT
2739 msi.STYLE_ITEM_FLAG,
2740 msi.STYLE_ITEM_ID
2741 FROM MTL_SYSTEM_ITEMS_B msi, MTL_PARAMETERS mp
2742 WHERE msi.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID
2743 AND eiai.ORGANIZATION_ID = mp.ORGANIZATION_ID
2744 AND msi.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
2745 )
2746 WHERE eiai.BATCH_ID = p_batch_id
2747 AND eiai.PROCESS_FLAG = 1
2748 AND eiai.TRANSACTION_TYPE = 'CREATE'
2749 AND EXISTS (SELECT NULL
2750 FROM MTL_SYSTEM_ITEMS_B msi2, MTL_PARAMETERS mp2
2751 WHERE msi2.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID
2752 AND eiai.ORGANIZATION_ID = mp2.ORGANIZATION_ID
2753 AND msi2.ORGANIZATION_ID = mp2.MASTER_ORGANIZATION_ID
2754 );
2755
2756 UPDATE EGO_ITEM_ASSOCIATIONS_INTF eiai
2757 SET (STYLE_ITEM_FLAG, STYLE_ITEM_ID) = (SELECT msii.STYLE_ITEM_FLAG , msii.STYLE_ITEM_ID
2758 FROM MTL_SYSTEM_ITEMS_INTERFACE msii, MTL_PARAMETERS mp
2759 WHERE msii.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID
2760 AND eiai.ORGANIZATION_ID = mp.ORGANIZATION_ID
2761 AND msii.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
2762 AND msii.SET_PROCESS_ID = eiai.BATCH_ID
2763 AND msii.PROCESS_FLAG = p_msii_miri_process_flag
2764 AND ROWNUM = 1)
2765 WHERE eiai.BATCH_ID = p_batch_id
2766 AND eiai.PROCESS_FLAG = 1
2767 AND eiai.TRANSACTION_TYPE = 'CREATE'
2768 AND EXISTS (SELECT 1
2769 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII2, MTL_PARAMETERS mp2
2770 WHERE MSII2.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID
2771 AND MSII2.ORGANIZATION_ID = mp2.MASTER_ORGANIZATION_ID
2772 AND eiai.ORGANIZATION_ID = mp2.ORGANIZATION_ID
2773 AND MSII2.SET_PROCESS_ID = eiai.BATCH_ID
2774 AND MSII2.PROCESS_FLAG = p_msii_miri_process_flag );
2775
2776 Debug_Conc_Log('Default_User_Attrs_From_Prod: Updated Style_item_id, Style_item_flag in EGO_ITEM_ASSOCIATIONS_INTF');
2777 -- building SQLs for Defaulting of UDAs for Item Supplier Intersections (SKU + Style + Std. Item)
2778 l_src_sql := q'#
2779 SELECT
2780 ROWNUM AS ROW_IDENTIFIER,
2781 eiai.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
2782 eiai.ORGANIZATION_ID AS ORGANIZATION_ID,
2783 eiai.BATCH_ID AS DATA_SET_ID,
2784 eiai.ITEM_NUMBER,
2785 eiai.ORGANIZATION_CODE,
2786 ext_prod.ITEM_CATALOG_GROUP_ID,
2787 ext_prod.ATTR_GROUP_ID,
2788 eiai.DATA_LEVEL_ID,
2789 NULL AS REVISION_ID,
2790 NULL AS REVISION,
2791 eiai.PK1_VALUE,
2792 eiai.PK2_VALUE,
2793 eiai.PK3_VALUE,
2794 eiai.PK4_VALUE,
2795 eiai.PK5_VALUE,
2796 NULL AS CHANGE_ID,
2797 NULL AS CHANGE_LINE_ID,
2798 eiai.SOURCE_SYSTEM_ID,
2799 eiai.SOURCE_SYSTEM_REFERENCE,
2800 eiai.BUNDLE_ID,
2801 eiai.TRANSACTION_ID,
2802 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
2803 FROM
2804 EGO_ITEM_ASSOCIATIONS_INTF eiai,
2805 EGO_MTL_SY_ITEMS_EXT_VL ext_prod
2806 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
2807 AND eiai.TRANSACTION_TYPE = 'CREATE'
2808 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
2809 AND eiai.PROCESS_FLAG = 1
2810 AND eiai.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2811 AND (ext_prod.INVENTORY_ITEM_ID, ext_prod.DATA_LEVEL_ID, NVL(ext_prod.PK1_VALUE, -99)) IN
2812 (SELECT
2813 Nvl(MAX(eia.INVENTORY_ITEM_ID), eiai.INVENTORY_ITEM_ID),
2814 NVL(MAX(eia.DATA_LEVEL_ID), #' || l_item_dl_id || q'#),
2815 NVL(MAX(eia.PK1_VALUE), -99)
2816 FROM EGO_ITEM_ASSOCIATIONS eia
2817 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
2818 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
2819 AND eia.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
2820 AND eia.PK1_VALUE = eiai.PK1_VALUE
2821 )
2822 AND EXISTS (SELECT 1
2823 FROM EGO_ATTR_GROUP_DL eagd
2824 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2825 AND eagd.DATA_LEVEL_ID = eiai.DATA_LEVEL_ID
2826 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL )
2827 ) #';
2828
2829 l_ag_sql := q'#
2830 SELECT
2831 ext_prod.ATTR_GROUP_ID
2832 FROM
2833 EGO_ITEM_ASSOCIATIONS_INTF eiai,
2834 EGO_MTL_SY_ITEMS_EXT_B ext_prod
2835 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
2836 AND eiai.TRANSACTION_TYPE = 'CREATE'
2837 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
2838 AND eiai.PROCESS_FLAG = 1
2839 AND eiai.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2840 AND (ext_prod.INVENTORY_ITEM_ID, ext_prod.DATA_LEVEL_ID, NVL(ext_prod.PK1_VALUE, -99)) IN
2841 (SELECT
2842 Nvl(MAX(eia.INVENTORY_ITEM_ID), eiai.INVENTORY_ITEM_ID),
2843 NVL(MAX(eia.DATA_LEVEL_ID), #' || l_item_dl_id || q'#),
2844 NVL(MAX(eia.PK1_VALUE), -99)
2845 FROM EGO_ITEM_ASSOCIATIONS eia
2846 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
2847 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
2848 AND eia.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
2849 AND eia.PK1_VALUE = eiai.PK1_VALUE
2850 )
2851 AND EXISTS (SELECT 1
2852 FROM EGO_ATTR_GROUP_DL eagd
2853 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2854 AND eagd.DATA_LEVEL_ID = eiai.DATA_LEVEL_ID
2855 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL )
2856 ) #';
2857
2858 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Supplier Level UDAs ');
2859
2860 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
2861 (
2862 p_api_version => 1.0
2863 ,p_commit => 'F'
2864 ,p_copy_from_intf_table => 'F'
2865 ,p_source_entity_sql => l_src_sql
2866 ,p_source_attr_groups_sql => l_ag_sql
2867 ,p_dest_process_status => '2'
2868 ,p_dest_data_set_id => p_batch_id
2869 ,p_dest_transaction_type => 'CREATE'
2870 ,p_cleanup_row_identifiers => FND_API.G_FALSE
2871 ,x_return_status => l_return_status
2872 ,x_msg_count => l_msg_count
2873 ,x_msg_data => l_msg_data
2874 );
2875
2876 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
2877
2878 IF l_return_status = 'S' THEN
2879 RETCODE := '0';
2880 ERRBUF := NULL;
2881 ELSIF l_return_status = 'E' THEN
2882 RETCODE := '1';
2883 ERRBUF := l_msg_data;
2884 ELSE
2885 RETCODE := '2';
2886 ERRBUF := l_msg_data;
2887 RETURN;
2888 END IF;
2889
2890 -- building SQLs for Defaulting of UDAs for Item Supplier Site Intersections (SKU + Style + Std. Item)
2891 l_src_sql := q'#
2892 SELECT
2893 ROWNUM AS ROW_IDENTIFIER,
2894 eiai.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
2895 eiai.ORGANIZATION_ID AS ORGANIZATION_ID,
2896 eiai.BATCH_ID AS DATA_SET_ID,
2897 eiai.ITEM_NUMBER,
2898 eiai.ORGANIZATION_CODE,
2899 ext_prod.ITEM_CATALOG_GROUP_ID,
2900 ext_prod.ATTR_GROUP_ID,
2901 eiai.DATA_LEVEL_ID,
2902 NULL AS REVISION_ID,
2903 NULL AS REVISION,
2904 eiai.PK1_VALUE,
2905 eiai.PK2_VALUE,
2906 eiai.PK3_VALUE,
2907 eiai.PK4_VALUE,
2908 eiai.PK5_VALUE,
2909 NULL AS CHANGE_ID,
2910 NULL AS CHANGE_LINE_ID,
2911 eiai.SOURCE_SYSTEM_ID,
2912 eiai.SOURCE_SYSTEM_REFERENCE,
2913 eiai.BUNDLE_ID,
2914 eiai.TRANSACTION_ID,
2915 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
2916 FROM
2917 EGO_ITEM_ASSOCIATIONS_INTF eiai,
2918 EGO_MTL_SY_ITEMS_EXT_VL ext_prod
2919 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
2920 AND eiai.TRANSACTION_TYPE = 'CREATE'
2921 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
2922 AND eiai.PROCESS_FLAG = 1
2923 AND eiai.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2924 AND (ext_prod.INVENTORY_ITEM_ID,
2925 ext_prod.DATA_LEVEL_ID,
2926 ext_prod.PK1_VALUE,
2927 NVL(ext_prod.PK2_VALUE, -99)) IN
2928 (SELECT
2929 NVL(MAX(eia.INVENTORY_ITEM_ID), eiai.INVENTORY_ITEM_ID),
2930 NVL(MAX(eia.DATA_LEVEL_ID), #' || l_item_sup_dl_id || q'#),
2931 NVL(MAX(eia.PK1_VALUE), eiai.PK1_VALUE),
2932 NVL(MAX(eia.PK2_VALUE), -99)
2933 FROM EGO_ITEM_ASSOCIATIONS eia
2934 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
2935 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
2936 AND eia.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
2937 AND eia.PK1_VALUE = eiai.PK1_VALUE
2938 AND eia.PK2_VALUE = eiai.PK2_VALUE
2939 )
2940 AND EXISTS (SELECT 1
2941 FROM EGO_ATTR_GROUP_DL eagd
2942 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2943 AND eagd.DATA_LEVEL_ID = eiai.DATA_LEVEL_ID
2944 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL )
2945 ) #';
2946
2947 l_ag_sql := q'#
2948 SELECT
2949 ext_prod.ATTR_GROUP_ID
2950 FROM
2951 EGO_ITEM_ASSOCIATIONS_INTF eiai,
2952 EGO_MTL_SY_ITEMS_EXT_B ext_prod
2953 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
2954 AND eiai.TRANSACTION_TYPE = 'CREATE'
2955 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
2956 AND eiai.PROCESS_FLAG = 1
2957 AND eiai.ORGANIZATION_ID = ext_prod.ORGANIZATION_ID
2958 AND (ext_prod.INVENTORY_ITEM_ID,
2959 ext_prod.DATA_LEVEL_ID,
2960 ext_prod.PK1_VALUE,
2961 NVL(ext_prod.PK2_VALUE, -99)) IN
2962 (SELECT
2963 NVL(MAX(eia.INVENTORY_ITEM_ID), eiai.INVENTORY_ITEM_ID),
2964 NVL(MAX(eia.DATA_LEVEL_ID), #' || l_item_sup_dl_id || q'#),
2965 NVL(MAX(eia.PK1_VALUE), eiai.PK1_VALUE),
2966 NVL(MAX(eia.PK2_VALUE), -99)
2967 FROM EGO_ITEM_ASSOCIATIONS eia
2968 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
2969 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
2970 AND eia.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
2971 AND eia.PK1_VALUE = eiai.PK1_VALUE
2972 AND eia.PK2_VALUE = eiai.PK2_VALUE
2973 )
2974 AND EXISTS (SELECT 1
2975 FROM EGO_ATTR_GROUP_DL eagd
2976 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
2977 AND eagd.DATA_LEVEL_ID = eiai.DATA_LEVEL_ID
2978 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL )
2979 ) #';
2980
2981 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Supplier Site Level UDAs');
2982
2983 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
2984 (
2985 p_api_version => 1.0
2986 ,p_commit => 'F'
2987 ,p_copy_from_intf_table => 'F'
2988 ,p_source_entity_sql => l_src_sql
2989 ,p_source_attr_groups_sql => l_ag_sql
2990 ,p_dest_process_status => '2'
2991 ,p_dest_data_set_id => p_batch_id
2992 ,p_dest_transaction_type => 'CREATE'
2993 ,p_cleanup_row_identifiers => FND_API.G_FALSE
2994 ,x_return_status => l_return_status
2995 ,x_msg_count => l_msg_count
2996 ,x_msg_data => l_msg_data
2997 );
2998
2999 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
3000
3001 IF l_return_status = 'S' THEN
3002 RETCODE := '0';
3003 ERRBUF := NULL;
3004 ELSIF l_return_status = 'E' THEN
3005 RETCODE := '1';
3006 ERRBUF := l_msg_data;
3007 ELSE
3008 RETCODE := '2';
3009 ERRBUF := l_msg_data;
3010 RETURN;
3011 END IF;
3012
3013 -- building SQLs for Defaulting of UDAs for Item Supplier Site Org Intersections (SKU + Style + Std. Item)
3014 l_src_sql := q'#
3015 SELECT
3016 ROWNUM AS ROW_IDENTIFIER,
3017 eiai.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
3018 eiai.ORGANIZATION_ID AS ORGANIZATION_ID,
3019 eiai.BATCH_ID AS DATA_SET_ID,
3020 eiai.ITEM_NUMBER,
3021 eiai.ORGANIZATION_CODE,
3022 ext_prod.ITEM_CATALOG_GROUP_ID,
3023 ext_prod.ATTR_GROUP_ID,
3024 eiai.DATA_LEVEL_ID,
3025 NULL AS REVISION_ID,
3026 NULL AS REVISION,
3027 eiai.PK1_VALUE,
3028 eiai.PK2_VALUE,
3029 eiai.PK3_VALUE,
3030 eiai.PK4_VALUE,
3031 eiai.PK5_VALUE,
3032 NULL AS CHANGE_ID,
3033 NULL AS CHANGE_LINE_ID,
3034 eiai.SOURCE_SYSTEM_ID,
3035 eiai.SOURCE_SYSTEM_REFERENCE,
3036 eiai.BUNDLE_ID,
3037 eiai.TRANSACTION_ID,
3038 ext_prod.EXTENSION_ID, #' || G_PROD_COL_LIST || q'#
3039 FROM
3040 EGO_ITEM_ASSOCIATIONS_INTF eiai,
3041 EGO_MTL_SY_ITEMS_EXT_VL ext_prod,
3042 MTL_PARAMETERS mp
3043 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
3044 AND eiai.TRANSACTION_TYPE = 'CREATE'
3045 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3046 AND eiai.PROCESS_FLAG = 1
3047 AND ext_prod.INVENTORY_ITEM_ID = NVL(eiai.STYLE_ITEM_ID, eiai.INVENTORY_ITEM_ID)
3048 AND eiai.ORGANIZATION_ID = mp.ORGANIZATION_ID
3049 AND (ext_prod.INVENTORY_ITEM_ID,
3050 ext_prod.DATA_LEVEL_ID,
3051 ext_prod.PK1_VALUE,
3052 ext_prod.PK2_VALUE,
3053 ext_prod.ORGANIZATION_ID) IN
3054 (SELECT
3055 NVL(MAX(eia.INVENTORY_ITEM_ID), eiai.INVENTORY_ITEM_ID),
3056 NVL(MAX(eia.DATA_LEVEL_ID), #' || l_item_sup_site_dl_id || q'#),
3057 NVL(MAX(eia.PK1_VALUE), eiai.PK1_VALUE),
3058 NVL(MAX(eia.PK2_VALUE), eiai.PK2_VALUE),
3059 DECODE(MAX(eia.DATA_LEVEL_ID), NULL, mp.MASTER_ORGANIZATION_ID, eiai.ORGANIZATION_ID)
3060 FROM EGO_ITEM_ASSOCIATIONS eia
3061 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
3062 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
3063 AND eia.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3064 AND eia.PK1_VALUE = eiai.PK1_VALUE
3065 AND eia.PK2_VALUE = eiai.PK2_VALUE
3066 )
3067 AND EXISTS (SELECT 1
3068 FROM EGO_ATTR_GROUP_DL eagd
3069 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
3070 AND eagd.DATA_LEVEL_ID = eiai.DATA_LEVEL_ID
3071 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL )
3072 ) #';
3073
3074 l_ag_sql := q'#
3075 SELECT
3076 ext_prod.ATTR_GROUP_ID
3077 FROM
3078 EGO_ITEM_ASSOCIATIONS_INTF eiai,
3079 EGO_MTL_SY_ITEMS_EXT_B ext_prod,
3080 MTL_PARAMETERS mp
3081 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
3082 AND eiai.TRANSACTION_TYPE = 'CREATE'
3083 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3084 AND eiai.PROCESS_FLAG = 1
3085 AND ext_prod.INVENTORY_ITEM_ID = NVL(eiai.STYLE_ITEM_ID, eiai.INVENTORY_ITEM_ID)
3086 AND eiai.ORGANIZATION_ID = mp.ORGANIZATION_ID
3087 AND (ext_prod.INVENTORY_ITEM_ID,
3088 ext_prod.DATA_LEVEL_ID,
3089 ext_prod.PK1_VALUE,
3090 ext_prod.PK2_VALUE,
3091 ext_prod.ORGANIZATION_ID) IN
3092 (SELECT
3093 NVL(MAX(eia.INVENTORY_ITEM_ID), eiai.INVENTORY_ITEM_ID),
3094 NVL(MAX(eia.DATA_LEVEL_ID), #' || l_item_sup_site_dl_id || q'#),
3095 NVL(MAX(eia.PK1_VALUE), eiai.PK1_VALUE),
3096 NVL(MAX(eia.PK2_VALUE), eiai.PK2_VALUE),
3097 DECODE(MAX(eia.DATA_LEVEL_ID), NULL, mp.MASTER_ORGANIZATION_ID, eiai.ORGANIZATION_ID)
3098 FROM EGO_ITEM_ASSOCIATIONS eia
3099 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
3100 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
3101 AND eia.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3102 AND eia.PK1_VALUE = eiai.PK1_VALUE
3103 AND eia.PK2_VALUE = eiai.PK2_VALUE
3104 )
3105 AND EXISTS (SELECT 1
3106 FROM EGO_ATTR_GROUP_DL eagd
3107 WHERE eagd.ATTR_GROUP_ID = ext_prod.ATTR_GROUP_ID
3108 AND eagd.DATA_LEVEL_ID = eiai.DATA_LEVEL_ID
3109 AND ( NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL )
3110 ) #';
3111
3112 Debug_Conc_Log('Default_User_Attrs_From_Prod: Defaulting Item Supplier Site Org Level UDAs');
3113
3114 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
3115 (
3116 p_api_version => 1.0
3117 ,p_commit => 'F'
3118 ,p_copy_from_intf_table => 'F'
3119 ,p_source_entity_sql => l_src_sql
3120 ,p_source_attr_groups_sql => l_ag_sql
3121 ,p_dest_process_status => '2'
3122 ,p_dest_data_set_id => p_batch_id
3123 ,p_dest_transaction_type => 'CREATE'
3124 ,p_cleanup_row_identifiers => FND_API.G_FALSE -- FND_API.G_TRUE -- Bug 9678667
3125 ,x_return_status => l_return_status
3126 ,x_msg_count => l_msg_count
3127 ,x_msg_data => l_msg_data
3128 );
3129
3130 Debug_Conc_Log('Default_User_Attrs_From_Prod: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
3131
3132 IF l_return_status = 'S' THEN
3133 RETCODE := '0';
3134 ERRBUF := NULL;
3135 ELSIF l_return_status = 'E' THEN
3136 RETCODE := '1';
3137 ERRBUF := l_msg_data;
3138 ELSE
3139 RETCODE := '2';
3140 ERRBUF := l_msg_data;
3141 RETURN;
3142 END IF;
3143 Debug_Conc_Log('Default_User_Attrs_From_Prod: Done - retcode, errbuf='||retcode||','||errbuf);
3144 EXCEPTION WHEN OTHERS THEN
3145 RETCODE := '2';
3146 ERRBUF := SQLERRM;
3147 Debug_Conc_Log('Default_User_Attrs_From_Prod: Error - retcode, errbuf='||retcode||','||errbuf);
3148 END Default_User_Attrs_From_Prod;
3149
3150 /*
3151 * This method does the defaulting of User Defined Attributes
3152 * at each data level from Interface table
3153 */
3154 PROCEDURE Default_User_Attrs_From_Intf( retcode OUT NOCOPY VARCHAR2
3155 ,errbuf OUT NOCOPY VARCHAR2
3156 ,p_batch_id NUMBER
3157 )
3158 IS
3159 CURSOR c_data_levels IS
3160 SELECT DATA_LEVEL_ID, DATA_LEVEL_NAME
3161 FROM EGO_DATA_LEVEL_B
3162 WHERE ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
3163 AND APPLICATION_ID = 431
3164 AND DATA_LEVEL_NAME IN ('ITEM_LEVEL', 'ITEM_ORG', 'ITEM_SUP', 'ITEM_SUP_SITE', 'ITEM_SUP_SITE_ORG');
3165
3166 l_item_dl_id NUMBER;
3167 l_item_org_dl_id NUMBER;
3168 l_item_sup_dl_id NUMBER;
3169 l_item_sup_site_dl_id NUMBER;
3170 l_item_sup_site_org_dl_id NUMBER;
3171 l_src_sql VARCHAR2(32000);
3172 l_ag_sql VARCHAR2(32000);
3173 l_dest_sql VARCHAR2(32000);
3174 l_join_condition VARCHAR2(32000);
3175 l_return_status VARCHAR2(10);
3176 l_msg_count NUMBER;
3177 l_msg_data VARCHAR2(4000);
3178 BEGIN
3179 Debug_Conc_Log('Default_User_Attrs_From_Intf: Starting ');
3180 -- getting data level ids for all intersections into local variables
3181 FOR i IN c_data_levels LOOP
3182 IF i.DATA_LEVEL_NAME = 'ITEM_LEVEL' THEN
3183 l_item_dl_id := i.DATA_LEVEL_ID;
3184 ELSIF i.DATA_LEVEL_NAME = 'ITEM_ORG' THEN
3185 l_item_org_dl_id := i.DATA_LEVEL_ID;
3186 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP' THEN
3187 l_item_sup_dl_id := i.DATA_LEVEL_ID;
3188 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP_SITE' THEN
3189 l_item_sup_site_dl_id := i.DATA_LEVEL_ID;
3190 ELSIF i.DATA_LEVEL_NAME = 'ITEM_SUP_SITE_ORG' THEN
3191 l_item_sup_site_org_dl_id := i.DATA_LEVEL_ID;
3192 END IF; -- IF i.DATA_LEVEL_NAME
3193 END LOOP; -- FOR i IN c_data_levels LOOP
3194
3195 Debug_Conc_Log('Default_User_Attrs_From_Intf: After getting Data Level IDs');
3196
3197 -- building SQLs for Defaulting of UDAs for Org Assignments (Style + Std. Item)
3198 -- fix for bug#9660659
3199 l_src_sql := q'#
3200 SELECT /*+ leading(msii) use_nl_with_index(ext_intf, EGO_ITM_USR_ATTR_INTRFC_N2) */
3201 ext_intf.TRANSACTION_ID,
3202 msii.SET_PROCESS_ID AS DATA_SET_ID,
3203 msii.ORGANIZATION_ID,
3204 msii.ORGANIZATION_CODE,
3205 msii.INVENTORY_ITEM_ID,
3206 msii.ITEM_NUMBER,
3207 ext_intf.ITEM_CATALOG_GROUP_ID,
3208 NULL AS REVISION_ID,
3209 NULL AS REVISION,
3210 NULL AS PK1_VALUE,
3211 NULL AS PK2_VALUE,
3212 NULL AS PK3_VALUE,
3213 NULL AS PK4_VALUE,
3214 NULL AS PK5_VALUE,
3215 ext_intf.ROW_IDENTIFIER + msii.ORGANIZATION_ID AS ROW_IDENTIFIER,
3216 ext_intf.ATTR_GROUP_TYPE,
3217 ext_intf.ATTR_GROUP_INT_NAME,
3218 ext_intf.ATTR_GROUP_ID,
3219 ext_intf.ATTR_INT_NAME,
3220 ext_intf.ATTR_VALUE_STR,
3221 ext_intf.ATTR_VALUE_NUM,
3222 ext_intf.ATTR_VALUE_DATE,
3223 ext_intf.ATTR_VALUE_UOM,
3224 ext_intf.CHANGE_ID,
3225 ext_intf.CHANGE_LINE_ID,
3226 ext_intf.SOURCE_SYSTEM_ID,
3227 ext_intf.SOURCE_SYSTEM_REFERENCE,
3228 ext_intf.BUNDLE_ID,
3229 ext_intf.DATA_LEVEL_ID
3230 FROM
3231 MTL_SYSTEM_ITEMS_INTERFACE msii,
3232 EGO_ITM_USR_ATTR_INTRFC ext_intf,
3233 MTL_PARAMETERS mp,
3234 EGO_FND_DSC_FLX_CTX_EXT ag_ext
3235 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
3236 AND msii.PROCESS_FLAG = 1
3237 AND msii.TRANSACTION_TYPE = 'CREATE'
3238 AND msii.STYLE_ITEM_ID IS NULL
3239 AND EXISTS (SELECT /*+ push_subq */ 1 FROM MTL_PARAMETERS mp1
3240 WHERE mp1.ORGANIZATION_ID = msii.ORGANIZATION_ID
3241 AND mp1.ORGANIZATION_ID <> mp1.MASTER_ORGANIZATION_ID
3242 )
3243 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
3244 AND msii.SET_PROCESS_ID = ext_intf.DATA_SET_ID
3245 AND ext_intf.PROCESS_STATUS in (1,2) /* Bug 9923555 */
3246 AND ext_intf.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
3247 AND ext_intf.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
3248 AND ag_ext.DESCRIPTIVE_FLEXFIELD_NAME = NVL(ext_intf.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
3249 AND ag_ext.DESCRIPTIVE_FLEX_CONTEXT_CODE = ext_intf.ATTR_GROUP_INT_NAME
3250 AND ag_ext.APPLICATION_ID = 431
3251 AND NVL(ag_ext.VARIANT, 'N') = 'N'
3252 AND ext_intf.DATA_LEVEL_ID = #' || l_item_org_dl_id;
3253
3254 -- when copying from interface to interface, we do not need l_ag_sql, so passing dummy value
3255 l_ag_sql := 'SELECT NULL AS ATTR_GROUP_ID FROM DUAL WHERE 1 = 2';
3256 Debug_Conc_Log('Default_User_Attrs_From_Intf: Defaulting Item Org Level UDAs');
3257
3258 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
3259 (
3260 p_api_version => 1.0
3261 ,p_commit => 'F'
3262 ,p_copy_from_intf_table => 'T'
3263 ,p_source_entity_sql => l_src_sql
3264 ,p_source_attr_groups_sql => l_ag_sql
3265 ,p_dest_process_status => '2'
3266 ,p_dest_data_set_id => p_batch_id
3267 ,p_dest_transaction_type => 'CREATE'
3268 ,p_cleanup_row_identifiers => FND_API.G_FALSE
3269 ,x_return_status => l_return_status
3270 ,x_msg_count => l_msg_count
3271 ,x_msg_data => l_msg_data
3272 );
3273
3274 Debug_Conc_Log('Default_User_Attrs_From_Intf: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
3275
3276 IF l_return_status = 'S' THEN
3277 RETCODE := '0';
3278 ERRBUF := NULL;
3279 ELSIF l_return_status = 'E' THEN
3280 RETCODE := '1';
3281 ERRBUF := l_msg_data;
3282 ELSE
3283 RETCODE := '2';
3284 ERRBUF := l_msg_data;
3285 RETURN;
3286 END IF;
3287
3288 -- building SQLs for Defaulting of UDAs for Item Supplier Intersections (SKU + Style + Std. Item)
3289 l_src_sql := q'#
3290 SELECT
3291 ext_intf.TRANSACTION_ID,
3292 eiai.BATCH_ID AS DATA_SET_ID,
3293 eiai.ORGANIZATION_ID,
3294 eiai.ORGANIZATION_CODE,
3295 eiai.INVENTORY_ITEM_ID,
3296 eiai.ITEM_NUMBER,
3297 ext_intf.ITEM_CATALOG_GROUP_ID,
3298 NULL AS REVISION_ID,
3299 NULL AS REVISION,
3300 eiai.PK1_VALUE,
3301 eiai.PK2_VALUE,
3302 eiai.PK3_VALUE,
3303 eiai.PK4_VALUE,
3304 eiai.PK5_VALUE,
3305 ext_intf.ROW_IDENTIFIER + eiai.PK1_VALUE AS ROW_IDENTIFIER,
3306 ext_intf.ATTR_GROUP_TYPE,
3307 ext_intf.ATTR_GROUP_INT_NAME,
3308 ext_intf.ATTR_GROUP_ID,
3309 ext_intf.ATTR_INT_NAME,
3310 ext_intf.ATTR_VALUE_STR,
3311 ext_intf.ATTR_VALUE_NUM,
3312 ext_intf.ATTR_VALUE_DATE,
3313 ext_intf.ATTR_VALUE_UOM,
3314 ext_intf.CHANGE_ID,
3315 ext_intf.CHANGE_LINE_ID,
3316 ext_intf.SOURCE_SYSTEM_ID,
3317 ext_intf.SOURCE_SYSTEM_REFERENCE,
3318 ext_intf.BUNDLE_ID,
3319 eiai.DATA_LEVEL_ID
3320 FROM
3321 EGO_ITEM_ASSOCIATIONS_INTF eiai,
3322 EGO_ITM_USR_ATTR_INTRFC ext_intf,
3323 EGO_FND_DSC_FLX_CTX_EXT ag_ext
3324 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
3325 AND eiai.TRANSACTION_TYPE = 'CREATE'
3326 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
3327 AND eiai.PROCESS_FLAG = 1
3328 AND eiai.BATCH_ID = ext_intf.DATA_SET_ID
3329 AND ext_intf.PROCESS_STATUS in (1,2) /* Bug 9923555 */
3330 AND eiai.INVENTORY_ITEM_ID = ext_intf.INVENTORY_ITEM_ID
3331 AND eiai.ORGANIZATION_ID = ext_intf.ORGANIZATION_ID
3332 AND ag_ext.DESCRIPTIVE_FLEXFIELD_NAME = NVL(ext_intf.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
3333 AND ag_ext.DESCRIPTIVE_FLEX_CONTEXT_CODE = ext_intf.ATTR_GROUP_INT_NAME
3334 AND ag_ext.APPLICATION_ID = 431
3335 AND NVL(ag_ext.VARIANT, 'N') = 'N'
3336 AND ext_intf.DATA_LEVEL_ID = #' || l_item_dl_id || q'#
3337 AND EXISTS (SELECT NULL
3338 FROM EGO_ATTR_GROUP_DL eagd
3339 WHERE eagd.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
3340 AND eagd.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
3341 AND (NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL)
3342 )
3343 AND NOT EXISTS (SELECT NULL
3344 FROM EGO_ITEM_ASSOCIATIONS eia
3345 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
3346 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
3347 AND eia.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
3348 AND eia.PK1_VALUE = eiai.PK1_VALUE
3349 )#';
3350
3351 -- when copying from interface to interface, we do not need l_ag_sql, so passing dummy value
3352 l_ag_sql := 'SELECT NULL AS ATTR_GROUP_ID FROM DUAL WHERE 1 = 2';
3353 Debug_Conc_Log('Default_User_Attrs_From_Intf: Defaulting Item Supplier Level UDAs');
3354
3355 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
3356 (
3357 p_api_version => 1.0
3358 ,p_commit => 'F'
3359 ,p_copy_from_intf_table => 'T'
3360 ,p_source_entity_sql => l_src_sql
3361 ,p_source_attr_groups_sql => l_ag_sql
3362 ,p_dest_process_status => '2'
3363 ,p_dest_data_set_id => p_batch_id
3364 ,p_dest_transaction_type => 'CREATE'
3365 ,p_cleanup_row_identifiers => FND_API.G_FALSE
3366 ,x_return_status => l_return_status
3367 ,x_msg_count => l_msg_count
3368 ,x_msg_data => l_msg_data
3369 );
3370
3371 Debug_Conc_Log('Default_User_Attrs_From_Intf: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
3372
3373 IF l_return_status = 'S' THEN
3374 RETCODE := '0';
3375 ERRBUF := NULL;
3376 ELSIF l_return_status = 'E' THEN
3377 RETCODE := '1';
3378 ERRBUF := l_msg_data;
3379 ELSE
3380 RETCODE := '2';
3381 ERRBUF := l_msg_data;
3382 RETURN;
3383 END IF;
3384
3385 -- building SQLs for Defaulting of UDAs for Item Supplier Site Intersections (SKU + Style + Std. Item)
3386 l_src_sql := q'#
3387 SELECT
3388 ext_intf.TRANSACTION_ID,
3389 eiai.BATCH_ID AS DATA_SET_ID,
3390 eiai.ORGANIZATION_ID,
3391 eiai.ORGANIZATION_CODE,
3392 eiai.INVENTORY_ITEM_ID,
3393 eiai.ITEM_NUMBER,
3394 ext_intf.ITEM_CATALOG_GROUP_ID,
3395 NULL AS REVISION_ID,
3396 NULL AS REVISION,
3397 eiai.PK1_VALUE,
3398 eiai.PK2_VALUE,
3399 eiai.PK3_VALUE,
3400 eiai.PK4_VALUE,
3401 eiai.PK5_VALUE,
3402 ext_intf.ROW_IDENTIFIER + eiai.PK2_VALUE AS ROW_IDENTIFIER,
3403 ext_intf.ATTR_GROUP_TYPE,
3404 ext_intf.ATTR_GROUP_INT_NAME,
3405 ext_intf.ATTR_GROUP_ID,
3406 ext_intf.ATTR_INT_NAME,
3407 ext_intf.ATTR_VALUE_STR,
3408 ext_intf.ATTR_VALUE_NUM,
3409 ext_intf.ATTR_VALUE_DATE,
3410 ext_intf.ATTR_VALUE_UOM,
3411 ext_intf.CHANGE_ID,
3412 ext_intf.CHANGE_LINE_ID,
3413 ext_intf.SOURCE_SYSTEM_ID,
3414 ext_intf.SOURCE_SYSTEM_REFERENCE,
3415 ext_intf.BUNDLE_ID,
3416 eiai.DATA_LEVEL_ID
3417 FROM
3418 EGO_ITEM_ASSOCIATIONS_INTF eiai,
3419 EGO_ITM_USR_ATTR_INTRFC ext_intf,
3420 EGO_FND_DSC_FLX_CTX_EXT ag_ext
3421 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
3422 AND eiai.TRANSACTION_TYPE = 'CREATE'
3423 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
3424 AND eiai.PROCESS_FLAG = 1
3425 AND eiai.BATCH_ID = ext_intf.DATA_SET_ID
3426 AND ext_intf.PROCESS_STATUS in (1,2) /* Bug 9923555 */
3427 AND eiai.INVENTORY_ITEM_ID = ext_intf.INVENTORY_ITEM_ID
3428 AND eiai.ORGANIZATION_ID = ext_intf.ORGANIZATION_ID
3429 AND ext_intf.DATA_LEVEL_ID = #' || l_item_sup_dl_id || q'#
3430 AND ext_intf.PK1_VALUE = eiai.PK1_VALUE
3431 AND ext_intf.PK2_VALUE IS NULL
3432 AND ag_ext.DESCRIPTIVE_FLEXFIELD_NAME = NVL(ext_intf.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
3433 AND ag_ext.DESCRIPTIVE_FLEX_CONTEXT_CODE = ext_intf.ATTR_GROUP_INT_NAME
3434 AND ag_ext.APPLICATION_ID = 431
3435 AND NVL(ag_ext.VARIANT, 'N') = 'N'
3436 AND EXISTS (SELECT NULL
3437 FROM EGO_ATTR_GROUP_DL eagd
3438 WHERE eagd.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
3439 AND eagd.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
3440 AND (NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL)
3441 )
3442 AND NOT EXISTS (SELECT NULL
3443 FROM EGO_ITEM_ASSOCIATIONS eia
3444 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
3445 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
3446 AND eia.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
3447 AND eia.PK1_VALUE = eiai.PK1_VALUE
3448 AND eia.PK2_VALUE = eiai.PK2_VALUE
3449 )#';
3450
3451 -- when copying from interface to interface, we do not need l_ag_sql, so passing dummy value
3452 l_ag_sql := 'SELECT NULL AS ATTR_GROUP_ID FROM DUAL WHERE 1 = 2';
3453 Debug_Conc_Log('Default_User_Attrs_From_Intf: Defaulting Item Supplier Site Level UDAs');
3454
3455 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
3456 (
3457 p_api_version => 1.0
3458 ,p_commit => 'F'
3459 ,p_copy_from_intf_table => 'T'
3460 ,p_source_entity_sql => l_src_sql
3461 ,p_source_attr_groups_sql => l_ag_sql
3462 ,p_dest_process_status => '2'
3463 ,p_dest_data_set_id => p_batch_id
3464 ,p_dest_transaction_type => 'CREATE'
3465 ,p_cleanup_row_identifiers => FND_API.G_FALSE
3466 ,x_return_status => l_return_status
3467 ,x_msg_count => l_msg_count
3468 ,x_msg_data => l_msg_data
3469 );
3470
3471 Debug_Conc_Log('Default_User_Attrs_From_Intf: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
3472
3473 IF l_return_status = 'S' THEN
3474 RETCODE := '0';
3475 ERRBUF := NULL;
3476 ELSIF l_return_status = 'E' THEN
3477 RETCODE := '1';
3478 ERRBUF := l_msg_data;
3479 ELSE
3480 RETCODE := '2';
3481 ERRBUF := l_msg_data;
3482 RETURN;
3483 END IF;
3484
3485 -- building SQLs for Defaulting of UDAs for Item Supplier Site Org Intersections (SKU + Style + Std. Item)
3486 l_src_sql := q'#
3487 SELECT
3488 ext_intf.TRANSACTION_ID,
3489 eiai.BATCH_ID AS DATA_SET_ID,
3490 eiai.ORGANIZATION_ID,
3491 eiai.ORGANIZATION_CODE,
3492 eiai.INVENTORY_ITEM_ID,
3493 eiai.ITEM_NUMBER,
3494 ext_intf.ITEM_CATALOG_GROUP_ID,
3495 NULL AS REVISION_ID,
3496 NULL AS REVISION,
3497 eiai.PK1_VALUE,
3498 eiai.PK2_VALUE,
3499 eiai.PK3_VALUE,
3500 eiai.PK4_VALUE,
3501 eiai.PK5_VALUE,
3502 ext_intf.ROW_IDENTIFIER + eiai.PK2_VALUE + eiai.ORGANIZATION_ID AS ROW_IDENTIFIER,
3503 ext_intf.ATTR_GROUP_TYPE,
3504 ext_intf.ATTR_GROUP_INT_NAME,
3505 ext_intf.ATTR_GROUP_ID,
3506 ext_intf.ATTR_INT_NAME,
3507 ext_intf.ATTR_VALUE_STR,
3508 ext_intf.ATTR_VALUE_NUM,
3509 ext_intf.ATTR_VALUE_DATE,
3510 ext_intf.ATTR_VALUE_UOM,
3511 ext_intf.CHANGE_ID,
3512 ext_intf.CHANGE_LINE_ID,
3513 ext_intf.SOURCE_SYSTEM_ID,
3514 ext_intf.SOURCE_SYSTEM_REFERENCE,
3515 ext_intf.BUNDLE_ID,
3516 eiai.DATA_LEVEL_ID
3517 FROM
3518 EGO_ITEM_ASSOCIATIONS_INTF eiai,
3519 EGO_ITM_USR_ATTR_INTRFC ext_intf,
3520 MTL_PARAMETERS mp,
3521 EGO_FND_DSC_FLX_CTX_EXT ag_ext
3522 WHERE eiai.BATCH_ID = #' || p_batch_id || q'#
3523 AND eiai.TRANSACTION_TYPE = 'CREATE'
3524 AND eiai.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3525 AND eiai.PROCESS_FLAG = 1
3526 AND eiai.BATCH_ID = ext_intf.DATA_SET_ID
3527 AND ext_intf.PROCESS_STATUS in (1,2) /* Bug 9923555 */
3528 AND eiai.INVENTORY_ITEM_ID = ext_intf.INVENTORY_ITEM_ID
3529 AND eiai.ORGANIZATION_ID = mp.ORGANIZATION_ID
3530 AND mp.MASTER_ORGANIZATION_ID = ext_intf.ORGANIZATION_ID
3531 AND ext_intf.DATA_LEVEL_ID = #' || l_item_sup_site_dl_id || q'#
3532 AND ext_intf.PK1_VALUE = eiai.PK1_VALUE
3533 AND ext_intf.PK2_VALUE = eiai.PK2_VALUE
3534 AND ag_ext.DESCRIPTIVE_FLEXFIELD_NAME = NVL(ext_intf.ATTR_GROUP_TYPE, 'EGO_ITEMMGMT_GROUP')
3535 AND ag_ext.DESCRIPTIVE_FLEX_CONTEXT_CODE = ext_intf.ATTR_GROUP_INT_NAME
3536 AND ag_ext.APPLICATION_ID = 431
3537 AND NVL(ag_ext.VARIANT, 'N') = 'N'
3538 AND EXISTS (SELECT NULL
3539 FROM EGO_ATTR_GROUP_DL eagd
3540 WHERE eagd.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
3541 AND eagd.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3542 AND (NVL(eagd.DEFAULTING, 'D') = 'D' OR eiai.STYLE_ITEM_ID IS NULL)
3543 )
3544 AND NOT EXISTS (SELECT NULL
3545 FROM EGO_ITEM_ASSOCIATIONS eia
3546 WHERE eia.INVENTORY_ITEM_ID = eiai.STYLE_ITEM_ID
3547 AND eia.ORGANIZATION_ID = eiai.ORGANIZATION_ID
3548 AND eia.DATA_LEVEL_ID = #' || l_item_sup_site_org_dl_id || q'#
3549 AND eia.PK1_VALUE = eiai.PK1_VALUE
3550 AND eia.PK2_VALUE = eiai.PK2_VALUE
3551 )#';
3552
3553 -- when copying from interface to interface, we do not need l_ag_sql, so passing dummy value
3554 l_ag_sql := 'SELECT NULL AS ATTR_GROUP_ID FROM DUAL WHERE 1 = 2';
3555 Debug_Conc_Log('Default_User_Attrs_From_Intf: Defaulting Item Supplier Site Org Level UDAs');
3556
3557 EGO_ITEM_USER_ATTRS_CP_PUB.Copy_data_to_Intf
3558 (
3559 p_api_version => 1.0
3560 ,p_commit => 'F'
3561 ,p_copy_from_intf_table => 'T'
3562 ,p_source_entity_sql => l_src_sql
3563 ,p_source_attr_groups_sql => l_ag_sql
3564 ,p_dest_process_status => '2'
3565 ,p_dest_data_set_id => p_batch_id
3566 ,p_dest_transaction_type => 'CREATE'
3567 ,p_cleanup_row_identifiers => FND_API.G_FALSE -- FND_API.G_TRUE -- Bug 9678667
3568 ,x_return_status => l_return_status
3569 ,x_msg_count => l_msg_count
3570 ,x_msg_data => l_msg_data
3571 );
3572
3573 Debug_Conc_Log('Default_User_Attrs_From_Intf: Copy API returned with l_return_status, l_msg_data-'|| l_return_status || ',' || l_msg_data);
3574
3575 IF l_return_status = 'S' THEN
3576 RETCODE := '0';
3577 ERRBUF := NULL;
3578 ELSIF l_return_status = 'E' THEN
3579 RETCODE := '1';
3580 ERRBUF := l_msg_data;
3581 ELSE
3582 RETCODE := '2';
3583 ERRBUF := l_msg_data;
3584 RETURN;
3585 END IF;
3586 Debug_Conc_Log('Default_User_Attrs_From_Intf: Done - retcode, errbuf='||retcode||','||errbuf);
3587 EXCEPTION WHEN OTHERS THEN
3588 RETCODE := '2';
3589 ERRBUF := SQLERRM;
3590 Debug_Conc_Log('Default_User_Attrs_From_Intf: Error - retcode, errbuf='||retcode||','||errbuf);
3591 END Default_User_Attrs_From_Intf;
3592
3593 /*
3594 * This method does the defaulting of Category Assignments
3595 */
3596 PROCEDURE Default_Category_Assignments( retcode OUT NOCOPY VARCHAR2
3597 ,errbuf OUT NOCOPY VARCHAR2
3598 ,p_batch_id NUMBER
3599 ,p_msii_miri_process_flag IN NUMBER DEFAULT 1 -- Bug 12635842
3600 )
3601 IS
3602 BEGIN
3603 -- call defaulting of non default category assignments here
3604 Debug_Conc_Log('Default_Category_Assignments: Starting');
3605 INSERT INTO MTL_ITEM_CATEGORIES_INTERFACE
3606 (
3607 INVENTORY_ITEM_ID,
3608 ITEM_NUMBER,
3609 ORGANIZATION_ID,
3610 CATEGORY_SET_ID,
3611 CATEGORY_ID,
3612 PROCESS_FLAG,
3613 SET_PROCESS_ID,
3614 TRANSACTION_TYPE
3615 )
3616 SELECT
3617 MSII.INVENTORY_ITEM_ID,
3618 MSII.ITEM_NUMBER,
3619 MSII.ORGANIZATION_ID,
3620 STYLE_CATS.CATEGORY_SET_ID,
3621 STYLE_CATS.CATEGORY_ID,
3622 1 PROCESS_FLAG,
3623 MSII.SET_PROCESS_ID,
3624 'CREATE'
3625 FROM
3626 MTL_SYSTEM_ITEMS_INTERFACE MSII,
3627 MTL_PARAMETERS O,
3628 MTL_ITEM_CATEGORIES STYLE_CATS
3629 WHERE MSII.SET_PROCESS_ID = p_batch_id
3630 AND MSII.PROCESS_FLAG = p_msii_miri_process_flag -- Bug 12635842
3631 AND MSII.TRANSACTION_TYPE = 'CREATE'
3632 AND MSII.STYLE_ITEM_FLAG = 'N'
3633 AND MSII.ORGANIZATION_ID = O.ORGANIZATION_ID
3634 AND O.ORGANIZATION_ID = O.MASTER_ORGANIZATION_ID
3635 AND NOT EXISTS (SELECT 1
3636 FROM MTL_DEFAULT_CATEGORY_SETS DCS
3637 WHERE DCS.CATEGORY_SET_ID = STYLE_CATS.CATEGORY_SET_ID
3638 )
3639 AND STYLE_CATS.INVENTORY_ITEM_ID = MSII.STYLE_ITEM_ID
3640 AND STYLE_CATS.ORGANIZATION_ID = MSII.ORGANIZATION_ID;
3641
3642 RETCODE := '0';
3643 ERRBUF := NULL;
3644 Debug_Conc_Log('Default_Category_Assignments: Done defaulting category assignments rowcount='||SQL%ROWCOUNT);
3645 EXCEPTION WHEN OTHERS THEN
3646 RETCODE := '2';
3647 ERRBUF := SQLERRM;
3648 Debug_Conc_Log('Default_Category_Assignments: Error - retcode, errbuf='||retcode||','||errbuf);
3649 END Default_Category_Assignments;
3650
3651 /*
3652 * This method does all the defaulting
3653 * It calls various Defaulting APIs on child entities
3654 * such as UDA, Category Assgn etc.
3655 */
3656 PROCEDURE Default_Child_Entities( retcode OUT NOCOPY VARCHAR2
3657 ,errbuf OUT NOCOPY VARCHAR2
3658 ,p_batch_id NUMBER
3659 ,p_msii_miri_process_flag IN NUMBER DEFAULT 1 -- Bug 12635842
3660 )
3661 IS
3662 l_retcode VARCHAR2(10);
3663 l_errbuf VARCHAR2(4000);
3664 BEGIN
3665 -- call child entities defaulting here
3666 Debug_Conc_Log('Default_Child_Entities: Starting');
3667 Default_Supplier_Intersections( retcode => l_retcode
3668 ,errbuf => l_errbuf
3669 ,p_batch_id => p_batch_id
3670 ,p_msii_miri_process_flag => p_msii_miri_process_flag -- Bug 12635842
3671 );
3672
3673 Debug_Conc_Log('Default_Child_Entities: Done Default_Supplier_Intersections with retcode, errbuf='||l_retcode||','||l_errbuf);
3674 RETCODE := l_retcode;
3675 ERRBUF := l_errbuf;
3676 IF retcode = '2' THEN
3677 RETURN;
3678 END IF;
3679
3680 /* Bug 10120039 : Start
3681 Commenting the below update query here and plaing it before INSERT_FUN_GEN_SETUP_UDAS in the procedure Preprocess_Import
3682 so that for all the user entered records will set PROG_INT_NUM4 = 0.
3683 Also the fix done for the bug 9678667 is reverted.
3684 */
3685 -- to identify the records that are not inserted by defaulting APIs
3686 -- UPDATE /*+ INDEX(EGO_ITM_USR_ATTR_INTRFC, EGO_ITM_USR_ATTR_INTRFC_N3) */ /* Bug 9678667 */
3687 /* EGO_ITM_USR_ATTR_INTRFC
3688 SET PROG_INT_NUM4 = 0
3689 WHERE DATA_SET_ID = p_batch_id
3690 AND PROCESS_STATUS in (1,2); -- Bug 9742469
3691 */
3692 -- Bug 10120039 : End
3693
3694 -- call defaulting of Attributes (UDA) from Style to SKUs
3695 Default_User_Attrs_From_Prod( retcode => l_retcode
3696 ,errbuf => l_errbuf
3697 ,p_batch_id => p_batch_id
3698 ,p_msii_miri_process_flag => p_msii_miri_process_flag -- Bug 12635842
3699 );
3700 Debug_Conc_Log('Default_Child_Entities: Done Default_User_Attrs_From_Prod with retcode, errbuf='||l_retcode||','||l_errbuf);
3701 IF NVL(l_retcode, '0') > RETCODE THEN
3702 RETCODE := l_retcode;
3703 ERRBUF := l_errbuf;
3704 END IF;
3705
3706 IF RETCODE = '2' THEN
3707 RETURN;
3708 END IF;
3709
3710 -- call defaulting of category assignments from Style to SKUs
3711 Default_Category_Assignments( retcode => l_retcode
3712 ,errbuf => l_errbuf
3713 ,p_batch_id => p_batch_id
3714 ,p_msii_miri_process_flag => p_msii_miri_process_flag -- Bug 12635842
3715 );
3716 Debug_Conc_Log('Default_Child_Entities: Done Default_Category_Assignments with retcode, errbuf='||l_retcode||','||l_errbuf);
3717 IF NVL(l_retcode, '0') > RETCODE THEN
3718 RETCODE := l_retcode;
3719 ERRBUF := l_errbuf;
3720 END IF;
3721
3722 IF RETCODE = '2' THEN
3723 RETURN;
3724 END IF;
3725 Debug_Conc_Log('Default_Child_Entities: Done - retcode, errbuf='||retcode||','||errbuf);
3726 EXCEPTION WHEN OTHERS THEN
3727 RETCODE := '2';
3728 ERRBUF := SQLERRM;
3729 Debug_Conc_Log('Default_Child_Entities: Error - retcode, errbuf='||retcode||','||errbuf);
3730 END Default_Child_Entities;
3731
3732
3733
3734 PROCEDURE Log_Error_For_Timestamp_Val( RETCODE OUT NOCOPY VARCHAR2,
3735 ERRBUF OUT NOCOPY VARCHAR2,
3736 p_item_detail_tbl ITEM_DETAIL_TBL,
3737 p_show_prod_timestemp BOOLEAN,
3738 p_intf_table_name VARCHAR2,
3739 p_user_id NUMBER,
3740 p_login_id NUMBER,
3741 p_prog_appid NUMBER,
3742 p_prog_id NUMBER,
3743 p_req_id NUMBER
3744 )
3745 IS
3746 PRAGMA AUTONOMOUS_TRANSACTION;
3747 l_msg_name VARCHAR2(100);
3748 l_msg_text VARCHAR2(4000);
3749 l_prod_timestamp VARCHAR2(100);
3750 BEGIN
3751 IF p_item_detail_tbl IS NOT NULL AND p_item_detail_tbl.COUNT > 0 THEN
3752 FOR i IN p_item_detail_tbl.FIRST..p_item_detail_tbl.LAST LOOP
3753 IF p_item_detail_tbl(i).PROCESS_FLAG = 6 THEN
3754 IF p_show_prod_timestemp THEN
3755 BEGIN
3756 SELECT TO_CHAR(LAST_MESSAGE_TIMESTAMP, G_NLS_DATE_FORMAT) INTO l_prod_timestamp
3757 FROM EGO_INBOUND_MSG_EXT
3758 WHERE SOURCE_SYSTEM_ID = p_item_detail_tbl(i).SOURCE_SYSTEM_ID
3759 AND INVENTORY_ITEM_ID = p_item_detail_tbl(i).INVENTORY_ITEM_ID
3760 AND ORGANIZATION_ID = p_item_detail_tbl(i).ORGANIZATION_ID
3761 AND DATA_LEVEL_ID = p_item_detail_tbl(i).DATA_LEVEL_ID
3762 AND NVL(SUPPLIER_ID, -1) = NVL(p_item_detail_tbl(i).SUPPLIER_ID, -1)
3763 AND NVL(SUPPLIER_SITE_ID, -1) = NVL(p_item_detail_tbl(i).SUPPLIER_SITE_ID, -1);
3764 EXCEPTION WHEN OTHERS THEN
3765 l_prod_timestamp := NULL;
3766 END;
3767
3768 FND_MESSAGE.SET_NAME('EGO', 'EGO_TIMESTAMP_GREATER_IN_PROD');
3769 FND_MESSAGE.SET_TOKEN('TIMESTAMP', l_prod_timestamp);
3770 ELSE
3771 FND_MESSAGE.SET_NAME('EGO', 'EGO_TIMESTAMP_GREATER_IN_BATCH');
3772 END IF;
3773
3774 FND_MESSAGE.SET_TOKEN('SS_REF', p_item_detail_tbl(i).SOURCE_SYSTEM_REFERENCE);
3775 l_msg_text := FND_MESSAGE.GET;
3776
3777 INSERT INTO MTL_INTERFACE_ERRORS
3778 (
3779 TRANSACTION_ID,
3780 UNIQUE_ID,
3781 ORGANIZATION_ID,
3782 LAST_UPDATE_DATE,
3783 LAST_UPDATED_BY,
3784 CREATION_DATE,
3785 CREATED_BY,
3786 LAST_UPDATE_LOGIN,
3787 COLUMN_NAME,
3788 TABLE_NAME,
3789 MESSAGE_NAME,
3790 ERROR_MESSAGE,
3791 REQUEST_ID,
3792 PROGRAM_APPLICATION_ID,
3793 PROGRAM_ID,
3794 PROGRAM_UPDATE_DATE
3795 )
3796 VALUES
3797 (
3798 p_item_detail_tbl(i).TRANSACTION_ID,
3799 NULL,
3800 p_item_detail_tbl(i).ORGANIZATION_ID,
3801 SYSDATE,
3802 p_user_id,
3803 SYSDATE,
3804 p_user_id,
3805 p_login_id,
3806 NULL,
3807 p_intf_table_name,
3808 NULL,
3809 l_msg_text,
3810 p_req_id,
3811 p_prog_appid,
3812 p_prog_id,
3813 SYSDATE
3814 );
3815 END IF; -- IF PROCESS_FLAG = 6
3816 END LOOP;
3817 END IF;
3818
3819 COMMIT;
3820
3821 RETCODE := '0';
3822 ERRBUF := NULL;
3823 EXCEPTION WHEN OTHERS THEN
3824 RETCODE := '2';
3825 ERRBUF := 'Error in logging error - '||SQLERRM;
3826 Debug_Conc_Log('Log_Error_For_Timestamp_Val: Error = '||SQLERRM);
3827 END Log_Error_For_Timestamp_Val;
3828 /*
3829 * This method stamps the rows to stale by comparing message timestamp
3830 * from production (Only for batches having enabled_for_data_pool as Y)
3831 */
3832 PROCEDURE Validate_Timestamp_With_Prod(retcode OUT NOCOPY VARCHAR2,
3833 errbuf OUT NOCOPY VARCHAR2,
3834 p_batch_id IN NUMBER)
3835 IS
3836 l_item_master_dl_id NUMBER;
3837 l_enabled_for_data_pool VARCHAR2(1);
3838 l_item_detail_tbl ITEM_DETAIL_TBL;
3839 l_user_id NUMBER := FND_GLOBAL.USER_ID;
3840 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
3841 l_prog_appid NUMBER := FND_GLOBAL.PROG_APPL_ID;
3842 l_prog_id NUMBER := FND_GLOBAL.CONC_PROGRAM_ID;
3843 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
3844 l_ret_code VARCHAR2(10);
3845 l_err_buf VARCHAR2(4000);
3846 BEGIN
3847 Debug_Conc_Log('Validate_Timestamp_With_Prod: Starting p_batch_id='||p_batch_id);
3848 BEGIN
3849 SELECT NVL(ENABLED_FOR_DATA_POOL, 'N') INTO l_enabled_for_data_pool
3850 FROM EGO_IMPORT_OPTION_SETS
3851 WHERE BATCH_ID = p_batch_id;
3852 EXCEPTION WHEN OTHERS THEN
3853 Debug_Conc_Log('Validate_Timestamp_With_Prod: exception='||SQLERRM);
3854 RETCODE := '0';
3855 ERRBUF := NULL;
3856 RETURN;
3857 END;
3858
3859 Debug_Conc_Log('Validate_Timestamp_With_Prod: l_enabled_for_data_pool='||l_enabled_for_data_pool);
3860 IF l_enabled_for_data_pool = 'N' THEN
3861 RETCODE := '0';
3862 ERRBUF := NULL;
3863 Debug_Conc_Log('Validate_Timestamp_With_Prod: Done');
3864 RETURN;
3865 END IF;
3866
3867 BEGIN
3868 SELECT DATA_LEVEL_ID INTO l_item_master_dl_id
3869 FROM EGO_DATA_LEVEL_B
3870 WHERE ATTR_GROUP_TYPE = 'EGO_MASTER_ITEMS'
3871 AND APPLICATION_ID = 431
3872 AND DATA_LEVEL_NAME = 'ITEM_ORG';
3873 EXCEPTION WHEN NO_DATA_FOUND THEN
3874 RETURN;
3875 END;
3876
3877 Debug_Conc_Log('Validate_Timestamp_With_Prod: l_item_master_dl_id='||l_item_master_dl_id);
3878
3879 l_item_detail_tbl := NULL;
3880
3881 UPDATE MTL_SYSTEM_ITEMS_INTERFACE msii
3882 SET PROCESS_FLAG = 6,
3883 REQUEST_ID = l_request_id,
3884 PROGRAM_ID = l_prog_id,
3885 PROGRAM_APPLICATION_ID = l_prog_appid,
3886 LAST_UPDATE_DATE = SYSDATE,
3887 LAST_UPDATED_BY = l_user_id
3888 WHERE SET_PROCESS_ID = p_batch_id
3889 AND PROCESS_FLAG = 1
3890 AND EXISTS (SELECT NULL
3891 FROM EGO_INBOUND_MSG_EXT eime
3892 WHERE eime.SOURCE_SYSTEM_ID = msii.SOURCE_SYSTEM_ID
3893 AND eime.DATA_LEVEL_ID = l_item_master_dl_id
3894 AND eime.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
3895 AND eime.ORGANIZATION_ID = msii.ORGANIZATION_ID
3896 AND eime.LAST_MESSAGE_TIMESTAMP > msii.MESSAGE_TIMESTAMP
3897 )
3898 RETURNING
3899 TRANSACTION_ID,
3900 INVENTORY_ITEM_ID,
3901 ORGANIZATION_ID,
3902 ITEM_NUMBER,
3903 SOURCE_SYSTEM_REFERENCE,
3904 SOURCE_SYSTEM_ID,
3905 l_item_master_dl_id,
3906 -1,
3907 -1,
3908 PROCESS_FLAG
3909 BULK COLLECT INTO l_item_detail_tbl;
3910
3911 Debug_Conc_Log('Validate_Timestamp_With_Prod: Updated MSII rowcount='||SQL%ROWCOUNT);
3912 IF l_item_detail_tbl IS NOT NULL THEN
3913 Debug_Conc_Log('Validate_Timestamp_With_Prod: Logging errors for MTL_SYSTEM_ITEMS_INTERFACE');
3914 Log_Error_For_Timestamp_Val(RETCODE => l_ret_code,
3915 ERRBUF => l_err_buf,
3916 p_item_detail_tbl => l_item_detail_tbl,
3917 p_show_prod_timestemp => TRUE,
3918 p_intf_table_name => 'MTL_SYSTEM_ITEMS_INTERFACE',
3919 p_user_id => l_user_id,
3920 p_login_id => l_login_id,
3921 p_prog_appid => l_prog_appid,
3922 p_prog_id => l_prog_id,
3923 p_req_id => l_request_id
3924 );
3925 Debug_Conc_Log('Validate_Timestamp_With_Prod: Done Logging errors with l_ret_code,l_err_buf='||l_ret_code||','||l_err_buf);
3926 END IF;
3927
3928 l_item_detail_tbl := NULL;
3929
3930 UPDATE EGO_ITM_USR_ATTR_INTRFC eiuai
3931 SET PROCESS_STATUS = 6,
3932 REQUEST_ID = l_request_id,
3933 PROGRAM_ID = l_prog_id,
3934 PROGRAM_APPLICATION_ID = l_prog_appid,
3935 LAST_UPDATE_DATE = SYSDATE,
3936 LAST_UPDATED_BY = l_user_id
3937 WHERE DATA_SET_ID = p_batch_id
3938 AND PROCESS_STATUS = 1
3939 AND ROW_IDENTIFIER IN (SELECT eiuai2.ROW_IDENTIFIER
3940 FROM EGO_INBOUND_MSG_EXT eime, EGO_ITM_USR_ATTR_INTRFC eiuai2, MTL_SYSTEM_ITEMS_INTERFACE msii
3941 WHERE eiuai2.DATA_SET_ID = eiuai.DATA_SET_ID
3942 AND eiuai2.PROCESS_STATUS = 1
3943 AND eime.SOURCE_SYSTEM_ID = eiuai2.SOURCE_SYSTEM_ID
3944 AND eime.DATA_LEVEL_ID = eiuai2.DATA_LEVEL_ID
3945 AND eime.INVENTORY_ITEM_ID = eiuai2.INVENTORY_ITEM_ID
3946 AND eime.ORGANIZATION_ID = eiuai2.ORGANIZATION_ID
3947 AND NVL(eime.SUPPLIER_ID, -99) = NVL(eiuai2.PK1_VALUE, -99)
3948 AND NVL(eime.SUPPLIER_SITE_ID, -99) = NVL(eiuai2.PK2_VALUE, -99)
3949 AND eiuai2.DATA_SET_ID = msii.SET_PROCESS_ID
3950 AND msii.PROCESS_FLAG = 6
3951 AND eiuai2.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
3952 AND eiuai2.ORGANIZATION_ID = msii.ORGANIZATION_ID
3953 AND eime.LAST_MESSAGE_TIMESTAMP > msii.MESSAGE_TIMESTAMP
3954 GROUP BY eiuai2.ROW_IDENTIFIER
3955 )
3956 RETURNING
3957 TRANSACTION_ID,
3958 INVENTORY_ITEM_ID,
3959 ORGANIZATION_ID,
3960 ITEM_NUMBER,
3961 SOURCE_SYSTEM_REFERENCE,
3962 SOURCE_SYSTEM_ID,
3963 DATA_LEVEL_ID,
3964 PK1_VALUE,
3965 PK2_VALUE,
3966 PROCESS_STATUS
3967 BULK COLLECT INTO l_item_detail_tbl;
3968
3969 Debug_Conc_Log('Validate_Timestamp_With_Prod: Updated EGO_ITM_USR_ATTR_INTRFC rowcount='||SQL%ROWCOUNT);
3970 IF l_item_detail_tbl IS NOT NULL THEN
3971 Debug_Conc_Log('Validate_Timestamp_With_Prod: Logging errors for EGO_ITM_USR_ATTR_INTRFC');
3972 Log_Error_For_Timestamp_Val(RETCODE => l_ret_code,
3973 ERRBUF => l_err_buf,
3974 p_item_detail_tbl => l_item_detail_tbl,
3975 p_show_prod_timestemp => TRUE,
3976 p_intf_table_name => 'EGO_ITM_USR_ATTR_INTRFC',
3977 p_user_id => l_user_id,
3978 p_login_id => l_login_id,
3979 p_prog_appid => l_prog_appid,
3980 p_prog_id => l_prog_id,
3981 p_req_id => l_request_id
3982 );
3983 Debug_Conc_Log('Validate_Timestamp_With_Prod: Done Logging errors with l_ret_code,l_err_buf='||l_ret_code||','||l_err_buf);
3984 END IF;
3985
3986 l_item_detail_tbl := NULL;
3987
3988 UPDATE EGO_ITEM_ASSOCIATIONS_INTF eiai
3989 SET PROCESS_FLAG = 6,
3990 REQUEST_ID = l_request_id,
3991 PROGRAM_ID = l_prog_id,
3992 PROGRAM_APPLICATION_ID = l_prog_appid,
3993 LAST_UPDATE_DATE = SYSDATE,
3994 LAST_UPDATED_BY = l_user_id
3995 WHERE BATCH_ID = p_batch_id
3996 AND PROCESS_FLAG = 1
3997 AND EXISTS (SELECT NULL
3998 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
3999 WHERE eiai.BATCH_ID = msii.SET_PROCESS_ID
4000 AND msii.PROCESS_FLAG = 6
4001 AND eiai.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
4002 AND eiai.ORGANIZATION_ID = msii.ORGANIZATION_ID
4003 AND eiai.BUNDLE_ID = msii.BUNDLE_ID
4004 )
4005 RETURNING
4006 TRANSACTION_ID,
4007 INVENTORY_ITEM_ID,
4008 ORGANIZATION_ID,
4009 ITEM_NUMBER,
4010 SOURCE_SYSTEM_REFERENCE,
4011 SOURCE_SYSTEM_ID,
4012 DATA_LEVEL_ID,
4013 PK1_VALUE,
4014 PK2_VALUE,
4015 PROCESS_FLAG
4016 BULK COLLECT INTO l_item_detail_tbl;
4017
4018 Debug_Conc_Log('Validate_Timestamp_With_Prod: Updated EGO_ITEM_ASSOCIATIONS_INTF rowcount='||SQL%ROWCOUNT);
4019 IF l_item_detail_tbl IS NOT NULL THEN
4020 Debug_Conc_Log('Validate_Timestamp_With_Prod: Logging errors for EGO_ITEM_ASSOCIATIONS_INTF');
4021 Log_Error_For_Timestamp_Val(RETCODE => l_ret_code,
4022 ERRBUF => l_err_buf,
4023 p_item_detail_tbl => l_item_detail_tbl,
4024 p_show_prod_timestemp => TRUE,
4025 p_intf_table_name => 'EGO_ITEM_ASSOCIATIONS_INTF',
4026 p_user_id => l_user_id,
4027 p_login_id => l_login_id,
4028 p_prog_appid => l_prog_appid,
4029 p_prog_id => l_prog_id,
4030 p_req_id => l_request_id
4031 );
4032 Debug_Conc_Log('Validate_Timestamp_With_Prod: Done Logging errors with l_ret_code,l_err_buf='||l_ret_code||','||l_err_buf);
4033 END IF;
4034
4035 l_item_detail_tbl := NULL;
4036
4037 UPDATE MTL_ITEM_CATEGORIES_INTERFACE mici
4038 SET PROCESS_FLAG = 6,
4039 REQUEST_ID = l_request_id,
4040 PROGRAM_ID = l_prog_id,
4041 PROGRAM_APPLICATION_ID = l_prog_appid,
4042 LAST_UPDATE_DATE = SYSDATE,
4043 LAST_UPDATED_BY = l_user_id
4044 WHERE SET_PROCESS_ID = p_batch_id
4045 AND PROCESS_FLAG = 1
4046 AND EXISTS (SELECT NULL
4047 FROM EGO_INBOUND_MSG_EXT eime, MTL_SYSTEM_ITEMS_INTERFACE msii
4048 WHERE mici.SET_PROCESS_ID = msii.SET_PROCESS_ID
4049 AND msii.PROCESS_FLAG = 6
4050 AND mici.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
4051 AND mici.ORGANIZATION_ID = msii.ORGANIZATION_ID
4052 AND eime.SOURCE_SYSTEM_ID = mici.SOURCE_SYSTEM_ID
4053 AND eime.DATA_LEVEL_ID = l_item_master_dl_id
4054 AND eime.INVENTORY_ITEM_ID = mici.INVENTORY_ITEM_ID
4055 AND eime.ORGANIZATION_ID = mici.ORGANIZATION_ID
4056 AND eime.LAST_MESSAGE_TIMESTAMP > msii.MESSAGE_TIMESTAMP
4057 );
4058
4059 Debug_Conc_Log('Validate_Timestamp_With_Prod: Updated MTL_ITEM_CATEGORIES_INTERFACE rowcount='||SQL%ROWCOUNT);
4060
4061 UPDATE BOM_BILL_OF_MTLS_INTERFACE bbmi
4062 SET PROCESS_FLAG = 6,
4063 REQUEST_ID = l_request_id,
4064 PROGRAM_ID = l_prog_id,
4065 PROGRAM_APPLICATION_ID = l_prog_appid,
4066 LAST_UPDATE_DATE = SYSDATE,
4067 LAST_UPDATED_BY = l_user_id
4068 WHERE BATCH_ID = p_batch_id
4069 AND PROCESS_FLAG = 1
4070 AND EXISTS (SELECT NULL
4071 FROM EGO_INBOUND_MSG_EXT eime, MTL_SYSTEM_ITEMS_INTERFACE msii
4072 WHERE bbmi.BATCH_ID = msii.SET_PROCESS_ID
4073 AND msii.PROCESS_FLAG = 6
4074 AND bbmi.ASSEMBLY_ITEM_ID = msii.INVENTORY_ITEM_ID
4075 AND bbmi.ORGANIZATION_ID = msii.ORGANIZATION_ID
4076 AND eime.SOURCE_SYSTEM_ID = msii.SOURCE_SYSTEM_ID
4077 AND eime.DATA_LEVEL_ID = l_item_master_dl_id
4078 AND eime.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
4079 AND eime.ORGANIZATION_ID = msii.ORGANIZATION_ID
4080 AND eime.LAST_MESSAGE_TIMESTAMP > msii.MESSAGE_TIMESTAMP
4081 );
4082
4083 Debug_Conc_Log('Validate_Timestamp_With_Prod: Updated BOM_BILL_OF_MTLS_INTERFACE rowcount='||SQL%ROWCOUNT);
4084 UPDATE BOM_INVENTORY_COMPS_INTERFACE bici
4085 SET PROCESS_FLAG = 6,
4086 REQUEST_ID = l_request_id,
4087 PROGRAM_ID = l_prog_id,
4088 PROGRAM_APPLICATION_ID = l_prog_appid,
4089 LAST_UPDATE_DATE = SYSDATE,
4090 LAST_UPDATED_BY = l_user_id
4091 WHERE BATCH_ID = p_batch_id
4092 AND PROCESS_FLAG = 1
4093 AND EXISTS (SELECT NULL
4094 FROM EGO_INBOUND_MSG_EXT eime, MTL_SYSTEM_ITEMS_INTERFACE msii
4095 WHERE bici.BATCH_ID = msii.SET_PROCESS_ID
4096 AND msii.PROCESS_FLAG = 6
4097 AND bici.COMPONENT_ITEM_ID = msii.INVENTORY_ITEM_ID
4098 AND bici.ORGANIZATION_ID = msii.ORGANIZATION_ID
4099 AND eime.SOURCE_SYSTEM_ID = msii.SOURCE_SYSTEM_ID
4100 AND eime.DATA_LEVEL_ID = l_item_master_dl_id
4101 AND eime.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
4102 AND eime.ORGANIZATION_ID = msii.ORGANIZATION_ID
4103 AND eime.LAST_MESSAGE_TIMESTAMP > msii.MESSAGE_TIMESTAMP
4104 );
4105 Debug_Conc_Log('Validate_Timestamp_With_Prod: Updated BOM_INVENTORY_COMPS_INTERFACE rowcount='||SQL%ROWCOUNT);
4106
4107 RETCODE := '0';
4108 ERRBUF := NULL;
4109 Debug_Conc_Log('Validate_Timestamp_With_Prod: Done Successfully');
4110 EXCEPTION WHEN OTHERS THEN
4111 RETCODE := '2';
4112 ERRBUF := SQLERRM;
4113 Debug_Conc_Log('Validate_Timestamp_With_Prod: Error - '||SQLERRM);
4114 END Validate_Timestamp_With_Prod;
4115
4116 /* Fix for bug#9336604: Start */
4117 PROCEDURE Insert_fun_gen_setup_udas
4118 (p_batch_id IN NUMBER)
4119 IS
4120 CURSOR cat_in_batch(p_batch_id NUMBER) IS
4121 SELECT DISTINCT msii.item_catalog_group_id AS item_catalog_group_id
4122 FROM mtl_system_items_interface msii,
4123 mtl_parameters mp
4124 WHERE msii.set_process_id = p_batch_id
4125 AND msii.process_flag = 1
4126 AND msii.transaction_type = 'CREATE'
4127 AND msii.item_catalog_group_id IS NOT NULL
4128 AND msii.item_catalog_group_id <> -1
4129 AND Nvl(msii.style_item_flag,'N') = 'N'
4130 AND msii.organization_id = mp.organization_id
4131 AND mp.organization_id = mp.master_organization_id;
4132 l_num_action_id NUMBER;
4133 l_desc_action_id NUMBER;
4134 l_attr_group_id dbms_sql.number_table;
4135 l_attr_group_name dbms_sql.varchar2_table;
4136 l_attr_name dbms_sql.varchar2_table;
4137 l_n_def_value dbms_sql.varchar2_table;
4138 l_c_def_value dbms_sql.varchar2_table;
4139 l_d_def_value dbms_sql.varchar2_table;
4140 l_data_type dbms_sql.varchar2_table;
4141 l_row_id NUMBER;
4142 l_trans_id NUMBER;
4143 l_created_by NUMBER;
4144 l_last_updated_by NUMBER;
4145 l_ag_exits_count NUMBER;
4146 BEGIN
4147 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Starting. First set org_code into MSII.');
4148
4149 -- Fix for bug#9660659 Start
4150 --UPDATE mtl_system_items_interface msii
4151 --SET msii.organization_code = (SELECT mp.organization_code
4152 -- FROM mtl_parameters mp
4153 -- WHERE mp.organization_id = msii.organization_id);
4154 --
4155 IF p_batch_id is not null THEN
4156
4157 UPDATE mtl_system_items_interface msii
4158 SET msii.organization_code = (SELECT mp.organization_code
4159 FROM mtl_parameters mp
4160 WHERE mp.organization_id = msii.organization_id)
4161 WHERE SET_PROCESS_ID = P_BATCH_ID;
4162
4163 ELSE
4164
4165 UPDATE mtl_system_items_interface msii
4166 SET msii.organization_code = (SELECT mp.organization_code
4167 FROM mtl_parameters mp
4168 WHERE mp.organization_id = msii.organization_id);
4169 END IF;
4170 -- Fix for bug#9660659 End
4171
4172 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Done setting org_code into MSII. Now looping through distinct ICC in this batch.');
4173
4174 FOR j IN cat_in_batch(p_batch_id) LOOP
4175 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Processing ICC: '
4176 ||j.item_catalog_group_id);
4177
4178 SELECT To_number(Substr(item_num_action_id,Instr(item_num_action_id,'$$',2) + 2)) AS item_num_action_id,
4179 To_number(Substr(item_desc_action_id,Instr(item_desc_action_id,'$$',2) + 2)) AS item_desc_action_id
4180 INTO l_num_action_id,l_desc_action_id
4181 FROM (SELECT Min(CASE
4182 WHEN item_desc_gen_method = 'F'
4183 AND (PRIOR item_desc_gen_method IS NULL
4184 OR PRIOR item_desc_gen_method = 'I')
4185 THEN '$$'
4186 ||Lpad(LEVEL,6,'0')
4187 ||'$$'
4188 ||item_desc_action_id
4189 WHEN item_desc_gen_method IN ('U','S')
4190 THEN '$$'
4191 ||Lpad(LEVEL,6,'0')
4192 ||'$$'
4193 ELSE NULL
4194 END) item_desc_action_id,
4195 Min(CASE
4196 WHEN item_num_gen_method = 'F'
4197 AND (PRIOR item_num_gen_method IS NULL
4198 OR PRIOR item_num_gen_method = 'I')
4199 THEN '$$'
4200 ||Lpad(LEVEL,6,'0')
4201 ||'$$'
4202 ||item_num_action_id
4203 WHEN item_num_gen_method IN ('U','S')
4204 THEN '$$'
4205 ||Lpad(LEVEL,6,'0')
4206 ||'$$'
4207 ELSE NULL
4208 END) item_num_action_id
4209 FROM mtl_item_catalog_groups_b
4210 CONNECT BY PRIOR parent_catalog_group_id = item_catalog_group_id START WITH item_catalog_group_id = j.item_catalog_group_id);
4211
4212 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: l_num_action_id: '
4213 ||l_num_action_id
4214 ||', l_desc_action_id: '
4215 ||l_desc_action_id);
4216
4217 IF (l_num_action_id IS NOT NULL
4218 OR l_desc_action_id IS NOT NULL) THEN
4219 SELECT ag_ext.attr_group_id,
4220 fl_col.descriptive_flex_context_code,
4221 fl_col.end_user_column_name,
4222 attr_ext.data_type,
4223 To_number(Decode(attr_ext.data_type,'N',fl_col.default_value,
4224 NULL)),
4225 Decode(attr_ext.data_type,'A',fl_col.default_value,
4226 'C',fl_col.default_value,
4227 NULL),
4228 Decode(attr_ext.data_type,'X',ego_user_attrs_bulk_pvt.Get_date(fl_col.default_value,NULL),
4229 'Y',ego_user_attrs_bulk_pvt.Get_date(fl_col.default_value,NULL),
4230 NULL)
4231 BULK COLLECT INTO l_attr_group_id,l_attr_group_name,l_attr_name,l_data_type,
4232 l_n_def_value,l_c_def_value,l_d_def_value
4233 FROM ego_mappings_b MAP,
4234 fnd_descr_flex_column_usages fl_col,
4235 ego_fnd_df_col_usgs_ext attr_ext,
4236 ego_fnd_dsc_flx_ctx_ext ag_ext,
4237 ego_attr_group_dl ag_dl
4238 WHERE MAP.mapped_obj_type = 'A'
4239 AND fl_col.application_id = MAP.mapped_to_group_pk1
4240 AND fl_col.descriptive_flexfield_name = MAP.mapped_to_group_pk2
4241 AND fl_col.descriptive_flex_context_code = MAP.mapped_to_group_pk3
4242 AND fl_col.end_user_column_name = MAP.mapped_attribute
4243 AND ag_ext.application_id = fl_col.application_id
4244 AND ag_ext.descriptive_flexfield_name = fl_col.descriptive_flexfield_name
4245 AND ag_ext.descriptive_flex_context_code = fl_col.descriptive_flex_context_code
4246 AND attr_ext.application_id = fl_col.application_id
4247 AND attr_ext.descriptive_flexfield_name = fl_col.descriptive_flexfield_name
4248 AND attr_ext.descriptive_flex_context_code = fl_col.descriptive_flex_context_code
4249 AND attr_ext.application_column_name = fl_col.application_column_name
4250 AND ag_ext.attr_group_id = ag_dl.attr_group_id
4251 AND ag_dl.data_level_id = 43101
4252 AND fl_col.default_value IS NOT NULL
4253 AND fl_col.enabled_flag = 'Y'
4254 AND fl_col.descriptive_flexfield_name = 'EGO_ITEMMGMT_GROUP'
4255 AND fl_col.application_id = 431
4256 AND ((l_num_action_id IS NOT NULL
4257 AND l_desc_action_id IS NOT NULL
4258 AND (To_number(MAP.mapped_obj_pk1_val) IN (l_num_action_id,l_desc_action_id)))
4259 OR (l_num_action_id IS NOT NULL
4260 AND l_desc_action_id IS NULL
4261 AND To_number(MAP.mapped_obj_pk1_val) = l_num_action_id)
4262 OR (l_num_action_id IS NULL
4263 AND l_desc_action_id IS NOT NULL
4264 AND To_number(MAP.mapped_obj_pk1_val) = l_desc_action_id));
4265
4266 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Done getting FG attrs for l_num_action_id: '
4267 ||l_num_action_id
4268 ||', l_desc_action_id: '
4269 ||l_desc_action_id);
4270
4271 IF (l_attr_name.COUNT > 0) THEN
4272 FOR i IN l_attr_name.FIRST.. l_attr_name.LAST LOOP
4273 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Processing l_attr_name: '
4274 ||l_attr_name(i)
4275 ||', l_attr_group_id: '
4276 ||l_attr_group_id(i)
4277 ||', l_attr_group_name: '
4278 ||l_attr_group_name(i)
4279 ||', l_data_type: '
4280 ||l_data_type(i)
4281 ||', l_n_def_value: '
4282 ||l_n_def_value(i)
4283 ||', l_c_def_value: '
4284 ||l_c_def_value(i)
4285 ||', l_d_def_value: '
4286 ||l_d_def_value(i));
4287
4288 SELECT Count(* )
4289 INTO l_ag_exits_count
4290 FROM ego_itm_usr_attr_intrfc
4291 WHERE data_set_id = p_batch_id
4292 AND attr_group_int_name = l_attr_group_name(i)
4293 AND process_status = 2 -- Bug 12553744
4294 AND data_level_id = 43101;
4295
4296 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: l_ag_exits_count :'||l_ag_exits_count); -- Bug 12553744
4297
4298 IF (l_ag_exits_count > 0) THEN
4299 INSERT INTO ego_itm_usr_attr_intrfc
4300 (process_status,
4301 data_set_id,
4302 row_identifier,
4303 attr_group_int_name,
4304 attr_int_name,
4305 attr_value_num,
4306 attr_value_str,
4307 attr_value_date,
4308 transaction_type,
4309 inventory_item_id,
4310 organization_id,
4311 /* Bug 13720439 - Start
4312 source_system_reference,
4313 source_system_id,
4314 item_number,
4315 organization_code,
4316 */ -- Bug 13720439 - End
4317 data_level_id,
4318 /* Bug 13720439 - Start
4319 pk1_value,
4320 pk2_value,
4321 revision_id,
4322 */ -- Bug 13720439 - End
4323 item_catalog_group_id,
4324 attr_group_type,
4325 attr_group_id,
4326 request_id, -- Bug 10112500
4327 created_by,
4328 creation_date,
4329 last_updated_by,
4330 last_update_date)
4331 SELECT 2, /* Bug 12553744 */
4332 data_set_id,
4333 row_identifier,
4334 l_attr_group_name(i),
4335 l_attr_name(i),
4336 l_n_def_value(i),
4337 l_c_def_value(i),
4338 ego_user_attrs_bulk_pvt.Get_date(l_d_def_value(i)),
4339 'CREATE',
4340 a.inventory_item_id,
4341 a.organization_id,
4342 /* Bug 13720439 - Start
4343 a.source_system_reference,
4344 a.source_system_id,
4345 a.item_number,
4346 a.organization_code,
4347 */ -- Bug 13720439 - End
4348 data_level_id,
4349 /* Bug 13720439 - Start
4350 pk1_value,
4351 pk2_value,
4352 revision_id,
4353 */ -- Bug 13720439 - End
4354 a.item_catalog_group_id,
4355 attr_group_type,
4356 attr_group_id,
4357 FND_GLOBAL.CONC_REQUEST_ID, -- Bug 10112500
4358 fnd_global.user_id,
4359 SYSDATE,
4360 fnd_global.user_id,
4361 SYSDATE
4362 FROM ego_itm_usr_attr_intrfc a,
4363 /* Bug 10112500 - Start */
4364 mtl_system_items_interface msii,
4365 mtl_parameters mp
4366 /* Bug 10112500 - End */
4367 WHERE NOT EXISTS (SELECT NULL
4368 FROM ego_itm_usr_attr_intrfc b
4369 WHERE data_set_id = a.data_set_id
4370 AND b.attr_int_name = l_attr_name(i)
4371 AND b.attr_group_int_name = a.attr_group_int_name
4372 -- AND b.transaction_type = a.transaction_type -- Bug 13720439
4373 AND b.data_level_id = a.data_level_id
4374 AND a.row_identifier = b.row_identifier)
4375 AND data_set_id = p_batch_id
4376 AND attr_group_int_name = l_attr_group_name(i)
4377 AND data_level_id = 43101
4378 AND process_status = 2 /* Bug 10263673, changing the value 2 as by the time this code gets executed all the records will be in status 2 */
4379 /* Bug 10112500 - Start */
4380 AND msii.set_process_id = p_batch_id
4381 AND msii.process_flag = 1
4382 AND Nvl(msii.style_item_flag,'N') = 'N'
4383 AND msii.organization_id = mp.organization_id
4384 AND mp.organization_id = mp.master_organization_id
4385 AND msii.item_catalog_group_id = j.item_catalog_group_id
4386 AND msii.transaction_type = 'CREATE'
4387 AND (a.inventory_item_id = msii.inventory_item_id
4388 OR a.item_number = msii.item_number
4389 OR a.source_system_reference = msii.source_system_reference)
4390 AND (a.organization_id = msii.organization_id
4391 OR a.organization_code = msii.organization_code)
4392 /* Bug 10112500 - End */
4393 GROUP BY data_set_id,
4394 row_identifier,
4395 a.inventory_item_id,
4396 a.organization_id,
4397 /* Bug 13720439 - Start
4398 a.source_system_reference,
4399 a.source_system_id,
4400 a.item_number,
4401 a.organization_code,
4402 */ -- Bug 13720439 - End
4403 data_level_id,
4404 /* Bug 13720439 - Start
4405 pk1_value,
4406 pk2_value,
4407 revision_id,
4408 */ -- Bug 13720439 - End
4409 a.item_catalog_group_id,
4410 attr_group_id,
4411 attr_group_type;
4412
4413 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Inserted '||SQL%ROWCOUNT||' rows into ego_itm_usr_attr_intrfc ' ); -- Bug 12553744
4414 END IF; -- l_ag_exits_count
4415
4416
4417 SELECT Nvl(Max(row_identifier),1) -- Bug 9820607
4418 INTO l_row_id
4419 FROM ego_itm_usr_attr_intrfc
4420 WHERE data_set_id = p_batch_id;
4421
4422 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: l_row_id : '||l_row_id); -- Bug 12553744
4423
4424 INSERT INTO ego_itm_usr_attr_intrfc
4425 (process_status,
4426 data_set_id,
4427 row_identifier,
4428 attr_group_int_name,
4429 attr_int_name,
4430 attr_value_num,
4431 attr_value_str,
4432 attr_value_date,
4433 transaction_type,
4434 inventory_item_id,
4435 organization_id,
4436 source_system_reference,
4437 item_number,
4438 organization_code,
4439 data_level_id,
4440 attr_group_type,
4441 attr_group_id,
4442 item_catalog_group_id, /* Bug 12553744 */
4443 request_id, /* Bug 10112500 */
4444 created_by,
4445 creation_date,
4446 last_updated_by,
4447 last_update_date)
4448 /* Bug 9678667 : Added Below hint */
4449 SELECT /*+ leading(mp) use_hash(msii) */
4450 2, /* Bug 12553744 */
4451 p_batch_id,
4452 l_row_id + ROWNUM,
4453 l_attr_group_name(i),
4454 l_attr_name(i),
4455 l_n_def_value(i),
4456 l_c_def_value(i),
4457 ego_user_attrs_bulk_pvt.Get_date(l_d_def_value(i)),
4458 'CREATE',
4459 inventory_item_id,
4460 msii.organization_id,
4461 source_system_reference,
4462 item_number,
4463 msii.organization_code,
4464 43101,
4465 'EGO_ITEMMGMT_GROUP',
4466 l_attr_group_id(i),
4467 j.item_catalog_group_id, /* Bug 12553744 */
4468 FND_GLOBAL.CONC_REQUEST_ID, /* Bug 10112500 */
4469 fnd_global.user_id,
4470 SYSDATE,
4471 fnd_global.user_id,
4472 SYSDATE
4473 FROM mtl_system_items_interface msii,
4474 mtl_parameters mp
4475 WHERE msii.set_process_id = p_batch_id
4476 AND msii.process_flag = 1
4477 AND msii.transaction_type = 'CREATE' -- Bug 10112500
4478 AND Nvl(msii.style_item_flag,'N') = 'N'
4479 AND msii.organization_id = mp.organization_id
4480 AND mp.organization_id = mp.master_organization_id
4481 AND msii.item_catalog_group_id = j.item_catalog_group_id
4482 AND NOT EXISTS ((SELECT /*+ index(B, EGO_ITM_USR_ATTR_INTRFC_N1) */ -- Bug 9678667
4483 NULL
4484 FROM ego_itm_usr_attr_intrfc b
4485 WHERE data_set_id = p_batch_id
4486 AND b.attr_int_name = l_attr_name(i)
4487 AND b.attr_group_int_name = l_attr_group_name(i)
4488 /* Fix for bug#9660659 - Start */
4489 /*AND (b.inventory_item_id = msii.inventory_item_id
4490 OR b.item_number = msii.item_number
4491 OR b.source_system_reference = msii.source_system_reference)
4492 AND (b.organization_id = msii.organization_id
4493 OR b.organization_code = msii.organization_code)
4494
4495 AND b.data_level_id = 43101);
4496 */
4497 AND (b.inventory_item_id = msii.inventory_item_id)
4498 AND (b.organization_id = msii.organization_id
4499 OR b.organization_code = msii.organization_code)
4500 AND b.process_status = 2 /* Bug 10263673, changing the value 2 as by the time this code gets executed all the records will be in status 2 */
4501 AND b.data_level_id = 43101)
4502 UNION ALL
4503 (SELECT NULL
4504 FROM ego_itm_usr_attr_intrfc b
4505 WHERE data_set_id = p_batch_id
4506 AND b.attr_int_name = l_attr_name(i)
4507 AND b.attr_group_int_name = l_attr_group_name(i)
4508 AND (b.item_number = msii.item_number)
4509 AND (b.organization_id = msii.organization_id
4510 OR b.organization_code = msii.organization_code)
4511 AND b.process_status = 2 /* Bug 10263673, changing the value 2 as by the time this code gets executed all the records will be in status 2 */
4512 AND b.data_level_id = 43101)
4513 UNION ALL
4514 (SELECT NULL
4515 FROM ego_itm_usr_attr_intrfc b
4516 WHERE data_set_id = p_batch_id
4517 AND b.attr_int_name = l_attr_name(i)
4518 AND b.attr_group_int_name = l_attr_group_name(i)
4519 AND b.source_system_id = msii.source_system_id -- Bug 9678667
4520 AND (b.source_system_reference = msii.source_system_reference)
4521 AND (b.organization_id = msii.organization_id
4522 OR b.organization_code = msii.organization_code)
4523 AND b.process_status = 2 /* Bug 10263673, changing the value 2 as by the time this code gets executed all the records will be in status 2 */
4524 AND b.data_level_id = 43101));
4525 /* Fix for bug#9660659 - End */
4526
4527 Debug_conc_log('INSERT_FUN_GEN_SETUP_UDAS: Inserted '||SQL%ROWCOUNT||' rows into ego_itm_usr_attr_intrfc ' ); -- Bug 12553744
4528 END LOOP;
4529 END IF; --(if l_attr_name.COUNT > 0)
4530 END IF;--(if any of l_num_action_id or l_desc_action_id is not null)
4531 END LOOP;
4532 END insert_fun_gen_setup_udas;
4533 ----------------------------------
4534 -- PUBLIC METHODS STARTS HERE --
4535 ----------------------------------
4536
4537 /* Function to do the preprocessing of Import
4538 * This method is called from Concurrent Program
4539 * and then, this method internally calls the
4540 * various defaulting/copy APIs that are needed
4541 * for preprocessing
4542 */
4543 PROCEDURE Preprocess_Import(retcode OUT NOCOPY VARCHAR2,
4544 errbuf OUT NOCOPY VARCHAR2,
4545 p_batch_id NUMBER)
4546 IS
4547 l_user_id NUMBER := FND_GLOBAL.USER_ID;
4548 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
4549 l_prog_appid NUMBER := FND_GLOBAL.PROG_APPL_ID;
4550 l_prog_id NUMBER := FND_GLOBAL.CONC_PROGRAM_ID;
4551 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
4552 l_err_msg VARCHAR2(4000);
4553 l_return_status INTEGER;
4554 l_copy_first VARCHAR2(1);
4555 l_copy_option_exists VARCHAR2(1);
4556 l_copy_org VARCHAR2(1);
4557 l_copy_cat VARCHAR2(1);
4558 l_retcode VARCHAR2(1);
4559 l_errbuf VARCHAR2(4000);
4560 l_org VARCHAR2(100);
4561 l_return_status_str VARCHAR2(100);
4562 l_msg_count NUMBER;
4563 l_msg_data VARCHAR2(4000);
4564 l_enabled_for_data_pool VARCHAR2(1);
4565
4566 l_batch_id NUMBER := p_batch_id; -- 12693246
4567
4568 BEGIN
4569 Debug_Conc_Log('Starting Preprocess_Import');
4570 IF l_request_id IS NULL OR l_request_id <= 0 THEN
4571 l_request_id := -1;
4572 END IF;
4573
4574 Debug_Conc_Log('Preprocess_Import: l_request_id='||l_request_id);
4575
4576 -- added for bug 12693246
4577 -- for concurrent program - Import Catalog Items - all records of the interface
4578 -- table EGO_ITM_USR_ATTR_INTRFC will be processed, when value for,
4579 -- Process Set - input parameter of concurrent request is passed as NULL
4580
4581 IF (p_batch_id IS NULL OR p_batch_id = -999 ) THEN
4582 l_batch_id := -999;
4583 UPDATE EGO_ITM_USR_ATTR_INTRFC
4584 SET DATA_SET_ID = -999
4585 WHERE PROCESS_STATUS = 1;
4586 END IF;
4587
4588 BEGIN
4589 SELECT NVL(ENABLED_FOR_DATA_POOL, 'N')
4590 INTO l_enabled_for_data_pool
4591 FROM EGO_IMPORT_OPTION_SETS
4592 WHERE BATCH_ID = l_batch_id; -- bug 12693246 changed from p_batch_id to l_batch_id
4593 EXCEPTION WHEN OTHERS THEN
4594 l_enabled_for_data_pool := 'N';
4595 END;
4596
4597 Debug_Conc_Log('Preprocess_Import: l_enabled_for_data_pool='||l_enabled_for_data_pool);
4598
4599 Debug_Conc_Log('Preprocess_Import: Calling Pre_Process of Intersections ');
4600 EGO_ITEM_ASSOCIATIONS_PUB.Pre_Process
4601 (
4602 p_api_version => 1.0,
4603 p_batch_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4604 x_return_status => l_return_status_str,
4605 x_msg_count => l_msg_count,
4606 x_msg_data => l_msg_data
4607 );
4608 Debug_Conc_Log('Preprocess_Import: Done Pre_Process of Intersections with l_return_status, l_msg_data='||l_return_status_str||','|| l_msg_data);
4609 IF l_return_status_str = 'U' THEN
4610 RETCODE := '2';
4611 ERRBUF := l_msg_data;
4612 RETURN;
4613 ELSIF l_return_status_str = 'E' THEN
4614 RETCODE := '1';
4615 ERRBUF := l_msg_data;
4616 ELSIF l_return_status_str = 'S' THEN
4617 RETCODE := '0';
4618 ERRBUF := NULL;
4619 END IF;
4620
4621
4622 IF l_enabled_for_data_pool = 'Y' THEN
4623 Debug_Conc_Log('Preprocess_Import: Calling Validate_Timestamp_With_Prod');
4624 Validate_Timestamp_With_Prod(retcode => l_retcode,
4625 errbuf => l_errbuf,
4626 p_batch_id => l_batch_id); -- bug 12693246 changed from p_batch_id to l_batch_id
4627
4628 Debug_Conc_Log('Preprocess_Import: Done Validate_Timestamp_With_Prod with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4629 IF NVL(l_retcode, '0') > RETCODE THEN
4630 RETCODE := l_retcode;
4631 ERRBUF := l_errbuf;
4632 END IF;
4633
4634 IF retcode = '2' THEN
4635 RETURN;
4636 END IF;
4637 END IF; -- IF l_enabled_for_data_pool = 'Y' THEN
4638
4639 IF l_enabled_for_data_pool = 'N' THEN
4640 -- If import copy options exists, then it is a UI flow
4641 -- either SKU creation, Multiple item creation, Multiple
4642 -- copy item, multiple packaging hierarchy flow
4643 BEGIN
4644 SELECT 'Y' INTO l_copy_option_exists
4645 FROM EGO_IMPORT_COPY_OPTIONS
4646 WHERE BATCH_ID = l_batch_id -- bug 12693246 changed from p_batch_id to l_batch_id
4647 AND ROWNUM = 1;
4648 EXCEPTION
4649 WHEN NO_DATA_FOUND THEN
4650 l_copy_option_exists := 'N';
4651 END;
4652
4653 Debug_Conc_Log('Preprocess_Import: l_copy_option_exists='||l_copy_option_exists);
4654 -- we will first process the copy options for Items (IOI)
4655 Process_Copy_Options_For_Items(retcode => l_retcode,
4656 errbuf => l_errbuf,
4657 p_batch_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4658 p_copy_options_exist => l_copy_option_exists);
4659
4660 Debug_Conc_Log('Preprocess_Import: Done Process_Copy_Options_For_Items with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4661 IF NVL(l_retcode, '0') > RETCODE THEN
4662 RETCODE := l_retcode;
4663 ERRBUF := l_errbuf;
4664 END IF;
4665
4666 IF retcode = '2' THEN
4667 RETURN;
4668 END IF;
4669 END IF; -- IF l_enabled_for_data_pool = 'Y' THEN
4670
4671 -- call IOI defaulting
4672 fnd_profile.get('EGO_USER_ORGANIZATION_CONTEXT', l_org);
4673 Debug_Conc_Log('Preprocess_Import: Starting IOI defaulting l_org='||l_org);
4674 EGO_ITEM_OPEN_INTERFACE_PVT.item_open_interface_process
4675 ( ERRBUF => l_errbuf,
4676 RETCODE => l_retcode,
4677 P_org_id => l_org,
4678 P_all_org => 1,
4679 P_default_flag => 2,
4680 P_val_item_flag => 2,
4681 P_pro_item_flag => 2,
4682 P_del_rec_flag => 2,
4683 P_prog_appid => l_prog_appid,
4684 P_prog_id => l_prog_id,
4685 P_request_id => l_request_id,
4686 P_user_id => l_user_id,
4687 P_login_id => l_login_id,
4688 P_xset_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4689 P_commit_flag => 2,
4690 P_run_mode => 0
4691 );
4692 Debug_Conc_Log('Preprocess_Import: Done IOI defaulting with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4693
4694 IF NVL(l_retcode, '0') > RETCODE THEN
4695 RETCODE := l_retcode;
4696 ERRBUF := l_errbuf;
4697 END IF;
4698
4699 IF retcode = '2' THEN
4700 RETURN;
4701 END IF;
4702
4703
4704 -- call Resolve_PKs_For_Child
4705 -- This API will propagate Item ID to all the child entities
4706 -- such as UDA, Revisions, Intersections etc.
4707 Resolve_PKs_For_Child( l_batch_id ); -- bug 12693246 changed from p_batch_id to l_batch_id
4708 Debug_Conc_Log('Preprocess_Import: Done Resolve_PKs_For_Child');
4709
4710 /* Bug 10120039 : Start
4711 to identify the records that are not inserted by defaulting APIs i.e to identify the records entered by user.
4712 */
4713 UPDATE /*+ INDEX(EGO_ITM_USR_ATTR_INTRFC, EGO_ITM_USR_ATTR_INTRFC_N3) */
4714 EGO_ITM_USR_ATTR_INTRFC
4715 SET PROG_INT_NUM4 = 0
4716 WHERE DATA_SET_ID = p_batch_id
4717 AND PROCESS_STATUS = 1;
4718 -- Bug 10120039 : End
4719
4720 /* Fix for bug#9336604 : Start */
4721 -- Bug 10263673 :
4722 -- Moving this into EGOCIUAB.pls after template application. So that the Defaulting of attrs involved in Function generation
4723 -- are done after template application.
4724 -- INSERT_FUN_GEN_SETUP_UDAS( p_batch_id );
4725 /* Fix for bug#9336604 : End */
4726
4727 INV_EGO_REVISION_VALIDATE.Set_Process_Control_HTML_API('IMPORT'); -- Bug 10263673, set the flag to IMPORT, so that in EGOCIUAB.pls we check for this flag and do the template application only in this case.
4728
4729 -- call UDA bulkloader in Validate Mode with security check
4730 Debug_Conc_Log('Preprocess_Import: Before calling UDA bulkloader in Validate Mode, with security check');
4731 EGO_ITEM_USER_ATTRS_CP_PUB.Process_Item_User_Attrs_Data
4732 (
4733 ERRBUF => l_errbuf,
4734 RETCODE => l_retcode,
4735 p_data_set_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4736 p_validate_only => FND_API.G_TRUE,
4737 p_ignore_security_for_validate => FND_API.G_FALSE
4738 );
4739
4740 INV_EGO_REVISION_VALIDATE.Set_Process_Control_HTML_API(NULL); -- Bug 10263673
4741
4742 Debug_Conc_Log('Preprocess_Import: Done EGO_ITEM_USER_ATTRS_CP_PUB.Process_Item_User_Attrs_Data with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4743 IF NVL(l_retcode, '0') > RETCODE THEN
4744 RETCODE := l_retcode;
4745 ERRBUF := l_errbuf;
4746 END IF;
4747
4748 IF RETCODE = '2' THEN
4749 RETURN;
4750 END IF;
4751
4752 IF l_enabled_for_data_pool = 'N' THEN
4753 -- call process copy options for UDAs
4754 -- this will do the Apply Multiple Templates
4755 -- and copying of attributes if any
4756
4757 -- Bug 10263673 : Start
4758 -- Moving the logic of template application and copy of attributes into EGOCIUAB.pls after the validation of IDs
4759 -- for user given data and before the call to EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data api, so that
4760 -- Application of template is done before defaulting of attr level values.
4761 --
4762 /*
4763 Process_Copy_Options_For_UDAs(retcode => l_retcode,
4764 errbuf => l_errbuf,
4765 p_batch_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4766 p_copy_options_exist => l_copy_option_exists);
4767
4768 Debug_Conc_Log('Preprocess_Import: Done Process_Copy_Options_For_UDAs with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4769
4770 IF NVL(l_retcode, '0') > RETCODE THEN
4771 RETCODE := l_retcode;
4772 ERRBUF := l_errbuf;
4773 END IF;
4774
4775 IF RETCODE = '2' THEN
4776 RETURN;
4777 END IF;
4778 */ -- Bug 10263673 : End
4779
4780 -- call defaulting APIs
4781 Default_Child_Entities(retcode => l_retcode,
4782 errbuf => l_errbuf,
4783 p_batch_id => l_batch_id); -- bug 12693246 changed from p_batch_id to l_batch_id
4784
4785 Debug_Conc_Log('Preprocess_Import: Done Default_Child_Entities with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4786
4787 IF NVL(l_retcode, '0') > RETCODE THEN
4788 RETCODE := l_retcode;
4789 ERRBUF := l_errbuf;
4790 END IF;
4791
4792 IF RETCODE = '2' THEN
4793 RETURN;
4794 END IF;
4795 END IF; -- IF l_enabled_for_data_pool = 'N' THEN
4796
4797 -- Doing the attribute group level defaulting
4798 Do_AGLevel_UDA_Defaulting( p_batch_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4799 x_return_status => l_retcode,
4800 x_err_msg => l_errbuf
4801 );
4802
4803 Debug_Conc_Log('Preprocess_Import: Done Do_AGLevel_UDA_Defaulting with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4804 IF NVL(l_retcode, '0') > RETCODE THEN
4805 RETCODE := l_retcode;
4806 ERRBUF := l_errbuf;
4807 END IF;
4808
4809 IF RETCODE = '2' THEN
4810 RETURN;
4811 END IF;
4812
4813 -- call UDA bulkloader in Validate Mode ignoring security check
4814 -- Fix for bug#9336604. Performance Fix Begin. Comment this validation call.
4815 --All Function generation attributes have been validated during previous calls.
4816 --So the defaulted UDAs can be validated later.
4817 /*Debug_Conc_Log('Preprocess_Import: Before calling UDA bulkloader in Validate Mode, ignoring security check');
4818 EGO_ITEM_USER_ATTRS_CP_PUB.Process_Item_User_Attrs_Data
4819 (
4820 ERRBUF => l_errbuf,
4821 RETCODE => l_retcode,
4822 p_data_set_id => l_batch_id, -- bug 12693246 changed from p_batch_id to l_batch_id
4823 p_validate_only => FND_API.G_TRUE,
4824 p_ignore_security_for_validate => FND_API.G_TRUE
4825 );
4826
4827 Debug_Conc_Log('Preprocess_Import: Done EGO_ITEM_USER_ATTRS_CP_PUB.Process_Item_User_Attrs_Data with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4828 IF NVL(l_retcode, '0') > RETCODE THEN
4829 RETCODE := l_retcode;
4830 ERRBUF := l_errbuf;
4831 END IF;
4832
4833 IF RETCODE = '2' THEN
4834 RETURN;
4835 END IF;*/
4836 -- Fix for bug#9336604 Performance Fix End
4837
4838 IF l_enabled_for_data_pool = 'N' THEN
4839 -- call Post validation UDA Defaulting
4840 Default_User_Attrs_From_Intf(retcode => l_retcode,
4841 errbuf => l_errbuf,
4842 p_batch_id => l_batch_id); -- bug 12693246 changed from p_batch_id to l_batch_id
4843
4844 Debug_Conc_Log('Preprocess_Import: Done Default_User_Attrs_From_Intf with l_retcode, l_errbuf='||l_retcode||','||l_errbuf);
4845
4846 IF NVL(l_retcode, '0') > RETCODE THEN
4847 RETCODE := l_retcode;
4848 ERRBUF := l_errbuf;
4849 END IF;
4850
4851 IF RETCODE = '2' THEN
4852 RETURN;
4853 END IF;
4854 END IF; -- IF l_enabled_for_data_pool = 'N' THEN
4855
4856 /* Fix for bug#9678667 : Start */
4857 UPDATE ego_itm_usr_attr_intrfc
4858 SET PROG_INT_NUM1 = NULL
4859 ,PROG_INT_NUM2 = NULL
4860 ,PROG_INT_NUM3 = NULL
4861 ,PROG_INT_CHAR1 = 'N'
4862 ,PROG_INT_CHAR2 = 'N'
4863 ,REQUEST_ID = FND_GLOBAL.CONC_REQUEST_ID
4864 ,PROGRAM_APPLICATION_ID = FND_GLOBAL.PROG_APPL_ID
4865 ,PROGRAM_ID = FND_GLOBAL.CONC_PROGRAM_ID
4866 ,PROGRAM_UPDATE_DATE = SYSDATE
4867 WHERE PROCESS_STATUS = 2
4868 AND DATA_SET_ID = p_batch_id
4869 AND TRANSACTION_TYPE = 'CREATE'
4870 AND PROG_INT_CHAR1 IN ('FROM_INTF', 'FROM_PROD');
4871 /* Fix for bug#9678667 : End */
4872
4873 -- Bug 9678667 : Start
4874 Debug_Conc_Log('Preprocess_Import: Calling Clean_Up_UDA_Row_Idents ');
4875 EGO_IMPORT_PVT.Clean_Up_UDA_Row_Idents(
4876 p_batch_id => p_batch_id,
4877 p_process_status => 2,
4878 p_ignore_item_num_upd => FND_API.G_TRUE,
4879 p_commit => FND_API.G_FALSE );
4880 Debug_Conc_Log('Preprocess_Import: Clean_Up_UDA_Row_Idents Done.');
4881 -- Bug 9678667 : End
4882
4883 COMMIT;
4884 Debug_Conc_Log('Preprocess_Import: Done with retcode, errbuf='||retcode||','||errbuf);
4885 EXCEPTION WHEN OTHERS THEN
4886 RETCODE := '2';
4887 ERRBUF := SQLERRM;
4888 Debug_Conc_Log('Preprocess_Import: Error retcode, errbuf='||retcode||','||errbuf);
4889 END Preprocess_Import;
4890
4891 /*
4892 * This API does the defaulting of Org Assignments
4893 * from Style to SKU and from SKU to Style
4894 */
4895 PROCEDURE Default_Org_Assignments( retcode OUT NOCOPY VARCHAR2,
4896 errbuf OUT NOCOPY VARCHAR2,
4897 p_batch_id NUMBER
4898 )
4899 IS
4900 CURSOR c_intf_records (c_source_system_id NUMBER) IS
4901 SELECT
4902 ORGANIZATION_ID,
4903 INVENTORY_ITEM_ID,
4904 ITEM_NUMBER,
4905 STYLE_ITEM_FLAG,
4906 STYLE_ITEM_ID,
4907 SOURCE_SYSTEM_ID,
4908 ITEM_CATALOG_GROUP_ID,
4909 ITEM_CATALOG_GROUP_NAME,
4910 STYLE_ITEM_NUMBER --bug 14319402, add style item number to check for existing style record in MSII
4911 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
4912 WHERE SET_PROCESS_ID = p_batch_id
4913 AND PROCESS_FLAG = 1
4914 AND STYLE_ITEM_FLAG IN ('N', 'Y')
4915 AND UPPER(TRANSACTION_TYPE) IN ('CREATE', 'SYNC')
4916 AND EXISTS (SELECT NULL
4917 FROM MTL_PARAMETERS MP
4918 WHERE MP.ORGANIZATION_ID = MSII.ORGANIZATION_ID
4919 AND MP.ORGANIZATION_ID <> MP.MASTER_ORGANIZATION_ID)
4920 UNION
4921 SELECT
4922 MSI.ORGANIZATION_ID AS ORGANIZATION_ID,
4923 MSI.INVENTORY_ITEM_ID AS INVENTORY_ITEM_ID,
4924 MSI.CONCATENATED_SEGMENTS AS ITEM_NUMBER,
4925 'Y' AS STYLE_ITEM_FLAG,
4926 MSI.INVENTORY_ITEM_ID AS STYLE_ITEM_ID,
4927 c_source_system_id AS SOURCE_SYSTEM_ID,
4928 MSI.ITEM_CATALOG_GROUP_ID,
4929 NULL,
4930 NULL
4931 FROM MTL_SYSTEM_ITEMS_KFV MSI, MTL_SYSTEM_ITEMS_INTERFACE MSII, MTL_PARAMETERS MP
4932 WHERE MSII.SET_PROCESS_ID = p_batch_id
4933 AND MSII.PROCESS_FLAG = 1
4934 AND MSII.STYLE_ITEM_FLAG = 'N'
4935 AND UPPER(MSII.TRANSACTION_TYPE) = 'CREATE'
4936 AND MSII.ORGANIZATION_ID = MP.ORGANIZATION_ID
4937 AND MP.ORGANIZATION_ID = MP.MASTER_ORGANIZATION_ID
4938 AND MSII.STYLE_ITEM_ID = MSI.INVENTORY_ITEM_ID
4939 AND EXISTS (SELECT NULL FROM MTL_PARAMETERS MP1
4940 WHERE MSI.ORGANIZATION_ID = MP1.ORGANIZATION_ID
4941 AND MP1.ORGANIZATION_ID <> MP1.MASTER_ORGANIZATION_ID)
4942 GROUP BY MSI.ORGANIZATION_ID, MSI.INVENTORY_ITEM_ID, MSI.CONCATENATED_SEGMENTS, MSI.INVENTORY_ITEM_ID, MSI.ITEM_CATALOG_GROUP_ID;
4943
4944 l_source_system_id NUMBER;
4945 l_def_style_org_option VARCHAR2(1);
4946 BEGIN
4947 Debug_Conc_Log('Default_Org_Assignments: Starting');
4948 l_def_style_org_option := EGO_COMMON_PVT.GET_OPTION_VALUE('EGO_DEFAULT_STYLE_ITEM_ORG');
4949 Debug_Conc_Log('Default_Org_Assignments: l_def_style_org_option='||l_def_style_org_option);
4950 IF NVL(l_def_style_org_option, 'N') <> 'Y' THEN
4951 RETCODE := '0';
4952 ERRBUF := NULL;
4953 RETURN;
4954 END IF;
4955
4956 BEGIN
4957 SELECT SOURCE_SYSTEM_ID INTO l_source_system_id
4958 FROM EGO_IMPORT_BATCHES_B
4959 WHERE BATCH_ID = p_batch_id;
4960 EXCEPTION WHEN NO_DATA_FOUND THEN
4961 l_source_system_id := EGO_IMPORT_PVT.GET_PDH_SOURCE_SYSTEM_ID;
4962 END;
4963
4964 Debug_Conc_Log('Default_Org_Assignments: l_source_system_id='||l_source_system_id);
4965 FOR i IN c_intf_records(l_source_system_id) LOOP
4966 IF i.STYLE_ITEM_FLAG = 'Y' THEN
4967 Debug_Conc_Log('Default_Org_Assignments: Defaulting Orgs from Style to SKU for all existing SKUs, style_item_id, org_id='||i.INVENTORY_ITEM_ID ||','||i.ORGANIZATION_ID);
4968 -- creating org assignment for all existing SKUs
4969 INSERT INTO MTL_SYSTEM_ITEMS_INTERFACE
4970 (
4971 SET_PROCESS_ID,
4972 PROCESS_FLAG,
4973 ORGANIZATION_ID,
4974 INVENTORY_ITEM_ID,
4975 ITEM_NUMBER,
4976 STYLE_ITEM_FLAG,
4977 STYLE_ITEM_ID,
4978 SOURCE_SYSTEM_ID,
4979 TRANSACTION_TYPE,
4980 ITEM_CATALOG_GROUP_ID,
4981 ITEM_CATALOG_GROUP_NAME,
4982 CREATED_BY
4983 )
4984 SELECT
4985 p_batch_id, --SET_PROCESS_ID
4986 1, -- PROCESS_FLAG
4987 i.ORGANIZATION_ID,
4988 MSI.INVENTORY_ITEM_ID,
4989 MSI.CONCATENATED_SEGMENTS,
4990 MSI.STYLE_ITEM_FLAG,
4991 MSI.STYLE_ITEM_ID,
4992 l_source_system_id,
4993 'CREATE',
4994 MSI.ITEM_CATALOG_GROUP_ID,
4995 NULL,
4996 -99
4997 FROM MTL_SYSTEM_ITEMS_KFV MSI, MTL_PARAMETERS MP
4998 WHERE MSI.STYLE_ITEM_FLAG = 'N'
4999 AND MSI.STYLE_ITEM_ID = i.INVENTORY_ITEM_ID
5000 AND MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
5001 AND MP.ORGANIZATION_ID = MP.MASTER_ORGANIZATION_ID
5002 AND NOT EXISTS (SELECT 1
5003 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
5004 WHERE MSII.SET_PROCESS_ID = p_batch_id
5005 AND MSII.PROCESS_FLAG = 1
5006 AND MSII.ORGANIZATION_ID = i.ORGANIZATION_ID
5007 AND (MSII.INVENTORY_ITEM_ID = MSI.INVENTORY_ITEM_ID OR MSII.ITEM_NUMBER = MSI.CONCATENATED_SEGMENTS)
5008 )
5009 AND NOT EXISTS (SELECT 1
5010 FROM MTL_SYSTEM_ITEMS_B MSIB
5011 WHERE MSIB.ORGANIZATION_ID = i.ORGANIZATION_ID
5012 AND MSIB.INVENTORY_ITEM_ID = MSI.INVENTORY_ITEM_ID);
5013
5014 Debug_Conc_Log('Default_Org_Assignments: Done rows processed='||SQL%ROWCOUNT);
5015
5016 -- creating org assignment for all SKUs to be created in MSII
5017 Debug_Conc_Log('Default_Org_Assignments: Defaulting Orgs from Style to SKU for all new SKUs to be created, style_item_id, org_id='||i.INVENTORY_ITEM_ID ||','||i.ORGANIZATION_ID);
5018 INSERT INTO MTL_SYSTEM_ITEMS_INTERFACE
5019 (
5020 SET_PROCESS_ID,
5021 PROCESS_FLAG,
5022 ORGANIZATION_ID,
5023 INVENTORY_ITEM_ID,
5024 ITEM_NUMBER,
5025 STYLE_ITEM_FLAG,
5026 STYLE_ITEM_ID,
5027 SOURCE_SYSTEM_ID,
5028 TRANSACTION_TYPE,
5029 ITEM_CATALOG_GROUP_ID,
5030 ITEM_CATALOG_GROUP_NAME,
5031 CREATED_BY
5032 )
5033 SELECT
5034 p_batch_id, --SET_PROCESS_ID
5035 1, -- PROCESS_FLAG
5036 i.ORGANIZATION_ID,
5037 MSII.INVENTORY_ITEM_ID,
5038 MSII.ITEM_NUMBER,
5039 MSII.STYLE_ITEM_FLAG,
5040 MSII.STYLE_ITEM_ID,
5041 MSII.SOURCE_SYSTEM_ID,
5042 'CREATE',
5043 MSII.ITEM_CATALOG_GROUP_ID,
5044 MSII.ITEM_CATALOG_GROUP_NAME,
5045 -99
5046 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII, MTL_PARAMETERS MP
5047 WHERE MSII.SET_PROCESS_ID = p_batch_id
5048 AND MSII.PROCESS_FLAG = 1
5049 AND MSII.STYLE_ITEM_FLAG = 'N'
5050 AND UPPER(MSII.TRANSACTION_TYPE) = 'CREATE'
5051 AND MSII.ORGANIZATION_ID = MP.ORGANIZATION_ID
5052 AND MP.ORGANIZATION_ID = MP.MASTER_ORGANIZATION_ID
5053 AND MSII.STYLE_ITEM_ID = i.INVENTORY_ITEM_ID
5054 AND NOT EXISTS (SELECT 1
5055 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII2
5056 WHERE MSII2.SET_PROCESS_ID = p_batch_id
5057 AND MSII2.PROCESS_FLAG = 1
5058 AND MSII2.ORGANIZATION_ID = i.ORGANIZATION_ID
5059 AND (MSII2.INVENTORY_ITEM_ID = MSII.INVENTORY_ITEM_ID OR MSII2.ITEM_NUMBER = MSII.ITEM_NUMBER)
5060 );
5061
5062 Debug_Conc_Log('Default_Org_Assignments: Done rows processed='||SQL%ROWCOUNT);
5063 ELSE -- IF i.STYLE_ITEM_FLAG = 'Y' THEN
5064 Debug_Conc_Log('Default_Org_Assignments: Defaulting Orgs from SKU to Style, SKU_Item_Id, style_item_id, org_id='||i.INVENTORY_ITEM_ID ||','||i.STYLE_ITEM_ID || ',' ||i.ORGANIZATION_ID);
5065 INSERT INTO MTL_SYSTEM_ITEMS_INTERFACE
5066 (
5067 SET_PROCESS_ID,
5068 PROCESS_FLAG,
5069 ORGANIZATION_ID,
5070 INVENTORY_ITEM_ID,
5071 ITEM_NUMBER,
5072 STYLE_ITEM_FLAG,
5073 STYLE_ITEM_ID,
5074 SOURCE_SYSTEM_ID,
5075 TRANSACTION_TYPE,
5076 ITEM_CATALOG_GROUP_ID,
5077 ITEM_CATALOG_GROUP_NAME,
5078 CREATED_BY
5079 )
5080 SELECT
5081 p_batch_id, --SET_PROCESS_ID
5082 1, -- PROCESS_FLAG
5083 i.ORGANIZATION_ID,
5084 i.STYLE_ITEM_ID,
5085 I.STYLE_ITEM_NUMBER,
5086 'Y',
5087 NULL,
5088 l_source_system_id,
5089 'CREATE',
5090 i.ITEM_CATALOG_GROUP_ID,
5091 i.ITEM_CATALOG_GROUP_NAME,
5092 -99
5093 FROM DUAL
5094 WHERE NOT EXISTS (SELECT 1
5095 FROM MTL_SYSTEM_ITEMS_INTERFACE MSII2
5096 WHERE MSII2.SET_PROCESS_ID = p_batch_id
5097 AND MSII2.PROCESS_FLAG = 1
5098 AND MSII2.ORGANIZATION_ID = i.ORGANIZATION_ID
5099 AND (MSII2.INVENTORY_ITEM_ID = i.STYLE_ITEM_ID OR MSII2.ITEM_NUMBER = I.STYLE_ITEM_NUMBER) --bug 14319402, need to check for item number as well, since inventory_item_id may be null now
5100 )
5101 AND NOT EXISTS (SELECT NULL
5102 FROM MTL_SYSTEM_ITEMS_B MSIB
5103 WHERE MSIB.INVENTORY_ITEM_ID = i.STYLE_ITEM_ID
5104 AND MSIB.ORGANIZATION_ID = i.ORGANIZATION_ID);
5105
5106 Debug_Conc_Log('Default_Org_Assignments: Done rows processed='||SQL%ROWCOUNT);
5107 END IF; -- IF i.STYLE_ITEM_FLAG = 'Y' THEN
5108 END LOOP;
5109
5110 RETCODE := '0';
5111 ERRBUF := NULL;
5112 COMMIT;
5113 EXCEPTION WHEN OTHERS THEN
5114 RETCODE := '2';
5115 ERRBUF := SQLERRM;
5116 Debug_Conc_Log('Default_Org_Assignments: Error -'||SQLERRM);
5117 END Default_Org_Assignments;
5118
5119 /*
5120 * This API Marks all the records to process_flag 10 in all interface tables
5121 * to disable SKUs for processing, and marks process_flag to 1
5122 * to enable SKUs for processing
5123 */
5124 PROCEDURE Enable_Disable_SKU_Processing( retcode OUT NOCOPY VARCHAR2,
5125 errbuf OUT NOCOPY VARCHAR2,
5126 p_batch_id NUMBER,
5127 p_enable_sku_processing VARCHAR2, /* T - TRUE / F - FALSE */
5128 x_skus_to_process OUT NOCOPY VARCHAR2 -- Bug 9678667
5129 )
5130 IS
5131 BEGIN
5132 x_skus_to_process := 'F'; -- Bug 9678667 : Change
5133 Debug_Conc_Log('Enable_Disable_SKU_Processing: Starting, p_enable_sku_processing='||p_enable_sku_processing);
5134
5135 IF p_enable_sku_processing = 'F' THEN
5136 Debug_Conc_Log('Enable_Disable_SKU_Processing: Disabling SKUs');
5137 UPDATE MTL_SYSTEM_ITEMS_INTERFACE
5138 SET PROCESS_FLAG = 10
5139 WHERE SET_PROCESS_ID = p_batch_id
5140 AND PROCESS_FLAG = 1
5141 AND STYLE_ITEM_FLAG = 'N';
5142
5143 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5144 IF SQL%ROWCOUNT > 0 THEN
5145 EGO_WF_WRAPPER_PVT.Set_Item_Bulkload_Bus_Event(p_true_false => p_enable_sku_processing);
5146 END IF;
5147
5148 Debug_Conc_Log('Enable_Disable_SKU_Processing: MTL_SYSTEM_ITEMS_INTERFACE Processed rows='||SQL%ROWCOUNT);
5149
5150 UPDATE MTL_ITEM_REVISIONS_INTERFACE miri
5151 SET PROCESS_FLAG = 10
5152 WHERE SET_PROCESS_ID = p_batch_id
5153 AND PROCESS_FLAG = 1
5154 AND EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
5155 WHERE msii.SET_PROCESS_ID = miri.SET_PROCESS_ID
5156 AND msii.PROCESS_FLAG = 10
5157 AND ( (msii.INVENTORY_ITEM_ID = miri.INVENTORY_ITEM_ID OR msii.ITEM_NUMBER = miri.ITEM_NUMBER) OR
5158 (msii.SOURCE_SYSTEM_ID = miri.SOURCE_SYSTEM_ID AND msii.SOURCE_SYSTEM_REFERENCE = miri.SOURCE_SYSTEM_REFERENCE)
5159 )
5160 AND msii.ORGANIZATION_ID = miri.ORGANIZATION_ID
5161 UNION ALL
5162 SELECT NULL FROM MTL_SYSTEM_ITEMS_KFV msik
5163 WHERE (msik.INVENTORY_ITEM_ID = miri.INVENTORY_ITEM_ID OR msik.CONCATENATED_SEGMENTS = miri.ITEM_NUMBER)
5164 AND msik.ORGANIZATION_ID = miri.ORGANIZATION_ID
5165 AND msik.STYLE_ITEM_FLAG = 'N'
5166 );
5167
5168 IF SQL%ROWCOUNT > 0 THEN
5169 EGO_WF_WRAPPER_PVT.Set_Rev_Change_Bus_Event(p_true_false => p_enable_sku_processing);
5170 END IF;
5171
5172 Debug_Conc_Log('Enable_Disable_SKU_Processing: MTL_ITEM_REVISIONS_INTERFACE Processed rows='||SQL%ROWCOUNT);
5173
5174 UPDATE MTL_ITEM_CATEGORIES_INTERFACE mici
5175 SET PROCESS_FLAG = 10
5176 WHERE SET_PROCESS_ID = p_batch_id
5177 AND PROCESS_FLAG = 1
5178 AND EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
5179 WHERE msii.SET_PROCESS_ID = mici.SET_PROCESS_ID
5180 AND msii.PROCESS_FLAG = 10
5181 AND ( (msii.INVENTORY_ITEM_ID = mici.INVENTORY_ITEM_ID OR msii.ITEM_NUMBER = mici.ITEM_NUMBER) OR
5182 (msii.SOURCE_SYSTEM_ID = mici.SOURCE_SYSTEM_ID AND msii.SOURCE_SYSTEM_REFERENCE = mici.SOURCE_SYSTEM_REFERENCE)
5183 )
5184 AND msii.ORGANIZATION_ID = mici.ORGANIZATION_ID
5185 UNION ALL
5186 SELECT NULL FROM MTL_SYSTEM_ITEMS_KFV msik
5187 WHERE (msik.INVENTORY_ITEM_ID = mici.INVENTORY_ITEM_ID OR msik.CONCATENATED_SEGMENTS = mici.ITEM_NUMBER)
5188 AND msik.ORGANIZATION_ID = mici.ORGANIZATION_ID
5189 AND msik.STYLE_ITEM_FLAG = 'N'
5190 );
5191
5192 -- calling this unconditionally, because we will be going through processing SKUs always
5193 IF SQL%ROWCOUNT > 0 THEN
5194 EGO_WF_WRAPPER_PVT.Set_Category_Assign_Bus_Event(p_true_false => p_enable_sku_processing);
5195 END IF;
5196 Debug_Conc_Log('Enable_Disable_SKU_Processing: MTL_ITEM_CATEGORIES_INTERFACE Processed rows='||SQL%ROWCOUNT);
5197
5198 -- for user defined attributes, all the process statuses are already in use i.e.
5199 -- 0, 1, 2, 3, 4, 5, 6, and 8 and above are in use
5200 -- 7 has a conflict with other interface tables, user may think that record is successful
5201 -- so, the only option left is to use numbers with decimal < 8
5202 UPDATE EGO_ITM_USR_ATTR_INTRFC eiuai
5203 SET PROCESS_STATUS = 1.5
5204 WHERE DATA_SET_ID = p_batch_id
5205 AND PROCESS_STATUS = 1
5206 AND EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
5207 WHERE msii.SET_PROCESS_ID = eiuai.DATA_SET_ID
5208 AND msii.PROCESS_FLAG = 10
5209 AND ( (msii.INVENTORY_ITEM_ID = eiuai.INVENTORY_ITEM_ID OR msii.ITEM_NUMBER = eiuai.ITEM_NUMBER) OR
5210 (msii.SOURCE_SYSTEM_ID = eiuai.SOURCE_SYSTEM_ID AND msii.SOURCE_SYSTEM_REFERENCE = eiuai.SOURCE_SYSTEM_REFERENCE)
5211 )
5212 AND msii.ORGANIZATION_ID = eiuai.ORGANIZATION_ID
5213 UNION ALL
5214 SELECT NULL FROM MTL_SYSTEM_ITEMS_KFV msik
5215 WHERE (msik.INVENTORY_ITEM_ID = eiuai.INVENTORY_ITEM_ID OR msik.CONCATENATED_SEGMENTS = eiuai.ITEM_NUMBER)
5216 AND msik.ORGANIZATION_ID = eiuai.ORGANIZATION_ID
5217 AND msik.STYLE_ITEM_FLAG = 'N'
5218 );
5219
5220 IF SQL%ROWCOUNT > 0 THEN
5221 EGO_WF_WRAPPER_PVT.Set_PostAttr_Change_Event(p_true_false => p_enable_sku_processing);
5222 END IF;
5223
5224 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_ITM_USR_ATTR_INTRFC Processed rows='||SQL%ROWCOUNT);
5225
5226 UPDATE EGO_AML_INTF eai
5227 SET PROCESS_FLAG = 10
5228 WHERE DATA_SET_ID = p_batch_id
5229 AND PROCESS_FLAG = 1
5230 AND EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
5231 WHERE msii.SET_PROCESS_ID = eai.DATA_SET_ID
5232 AND msii.PROCESS_FLAG = 10
5233 AND ( (msii.INVENTORY_ITEM_ID = eai.INVENTORY_ITEM_ID OR msii.ITEM_NUMBER = eai.ITEM_NUMBER) OR
5234 (msii.SOURCE_SYSTEM_ID = eai.SOURCE_SYSTEM_ID AND msii.SOURCE_SYSTEM_REFERENCE = eai.SOURCE_SYSTEM_REFERENCE)
5235 )
5236 AND msii.ORGANIZATION_ID = eai.ORGANIZATION_ID
5237 UNION ALL
5238 SELECT NULL FROM MTL_SYSTEM_ITEMS_KFV msik
5239 WHERE (msik.INVENTORY_ITEM_ID = eai.INVENTORY_ITEM_ID OR msik.CONCATENATED_SEGMENTS = eai.ITEM_NUMBER)
5240 AND msik.ORGANIZATION_ID = eai.ORGANIZATION_ID
5241 AND msik.STYLE_ITEM_FLAG = 'N'
5242 );
5243
5244 IF SQL%ROWCOUNT > 0 THEN
5245 EGO_WF_WRAPPER_PVT.Set_PostAml_Change_Event(p_true_false => p_enable_sku_processing);
5246 END IF;
5247
5248 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_AML_INTF Processed rows='||SQL%ROWCOUNT);
5249
5250 UPDATE EGO_ITEM_ASSOCIATIONS_INTF eiai
5251 SET PROCESS_FLAG = 10
5252 WHERE BATCH_ID = p_batch_id
5253 AND PROCESS_FLAG = 1
5254 AND EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
5255 WHERE msii.SET_PROCESS_ID = eiai.BATCH_ID
5256 AND msii.PROCESS_FLAG = 10
5257 AND ( (msii.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID OR msii.ITEM_NUMBER = eiai.ITEM_NUMBER) OR
5258 (msii.SOURCE_SYSTEM_ID = eiai.SOURCE_SYSTEM_ID AND msii.SOURCE_SYSTEM_REFERENCE = eiai.SOURCE_SYSTEM_REFERENCE)
5259 )
5260 AND msii.ORGANIZATION_ID = eiai.ORGANIZATION_ID
5261 UNION ALL
5262 SELECT NULL FROM MTL_SYSTEM_ITEMS_KFV msik
5263 WHERE (msik.INVENTORY_ITEM_ID = eiai.INVENTORY_ITEM_ID OR msik.CONCATENATED_SEGMENTS = eiai.ITEM_NUMBER)
5264 AND msik.ORGANIZATION_ID = eiai.ORGANIZATION_ID
5265 AND msik.STYLE_ITEM_FLAG = 'N'
5266 );
5267
5268 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_ITEM_ASSOCIATIONS_INTF Processed rows='||SQL%ROWCOUNT);
5269
5270 UPDATE EGO_ITEM_PEOPLE_INTF eipi
5271 SET PROCESS_STATUS = 10
5272 WHERE DATA_SET_ID = p_batch_id
5273 AND PROCESS_STATUS = 1
5274 AND EXISTS (SELECT NULL FROM MTL_SYSTEM_ITEMS_INTERFACE msii
5275 WHERE msii.SET_PROCESS_ID = eipi.DATA_SET_ID
5276 AND msii.PROCESS_FLAG = 10
5277 AND ( (msii.INVENTORY_ITEM_ID = eipi.INVENTORY_ITEM_ID OR msii.ITEM_NUMBER = eipi.ITEM_NUMBER) OR
5278 (msii.SOURCE_SYSTEM_ID = eipi.SOURCE_SYSTEM_ID AND msii.SOURCE_SYSTEM_REFERENCE = eipi.SOURCE_SYSTEM_REFERENCE)
5279 )
5280 AND msii.ORGANIZATION_ID = eipi.ORGANIZATION_ID
5281 UNION ALL
5282 SELECT NULL FROM MTL_SYSTEM_ITEMS_KFV msik
5283 WHERE (msik.INVENTORY_ITEM_ID = eipi.INVENTORY_ITEM_ID OR msik.CONCATENATED_SEGMENTS = eipi.ITEM_NUMBER)
5284 AND msik.ORGANIZATION_ID = eipi.ORGANIZATION_ID
5285 AND msik.STYLE_ITEM_FLAG = 'N'
5286 );
5287
5288 IF SQL%ROWCOUNT > 0 THEN
5289 EGO_WF_WRAPPER_PVT.Set_Item_People_Event(p_true_false => p_enable_sku_processing);
5290 END IF;
5291
5292 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_ITEM_PEOPLE_INTF Processed rows='||SQL%ROWCOUNT);
5293
5294 ELSIF p_enable_sku_processing = 'T' THEN
5295 Debug_Conc_Log('Enable_Disable_SKU_Processing: Enabling SKUs');
5296
5297 --Maybe set to T if batch contains ONLY Styles, to prevent raising again in such cases
5298 EGO_WF_WRAPPER_PVT.Set_Item_Bulkload_Bus_Event(p_true_false => 'F');
5299
5300 UPDATE MTL_SYSTEM_ITEMS_INTERFACE
5301 SET PROCESS_FLAG = 1
5302 WHERE SET_PROCESS_ID = p_batch_id
5303 AND PROCESS_FLAG = 10
5304 AND STYLE_ITEM_FLAG = 'N';
5305
5306 -- Bug 9678667 : change begin
5307 IF(SQL%ROWCOUNT > 0) THEN
5308 x_skus_to_process := 'T';
5309 END IF;
5310 -- Bug 9678667 : change end
5311
5312 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5313 IF SQL%ROWCOUNT > 0 THEN
5314 EGO_WF_WRAPPER_PVT.Set_Item_Bulkload_Bus_Event(p_true_false => p_enable_sku_processing);
5315 END IF;
5316 Debug_Conc_Log('Enable_Disable_SKU_Processing: MTL_SYSTEM_ITEMS_INTERFACE Processed rows='||SQL%ROWCOUNT);
5317
5318 IF SQL%ROWCOUNT > 0 THEN
5319 UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
5320 SET STYLE_ITEM_ID = (SELECT MSIK.INVENTORY_ITEM_ID
5321 FROM MTL_SYSTEM_ITEMS_KFV MSIK
5322 WHERE MSIK.CONCATENATED_SEGMENTS = MSII.STYLE_ITEM_NUMBER
5323 AND MSIK.ORGANIZATION_ID = MSII.ORGANIZATION_ID
5324 )
5325 WHERE SET_PROCESS_ID = p_batch_id
5326 AND STYLE_ITEM_NUMBER IS NOT NULL
5327 AND STYLE_ITEM_ID IS NULL
5328 AND STYLE_ITEM_FLAG = 'N'
5329 AND PROCESS_FLAG = 1;
5330
5331 Debug_Conc_Log('Enable_Disable_SKU_Processing - Done Resolving Style Item Id cnt- '||SQL%ROWCOUNT );
5332
5333 /* at the time when the execution reaches this point
5334 * the transaction type SYNC is converted to either CREATE
5335 * or UPDATE already */
5336 UPDATE MTL_SYSTEM_ITEMS_INTERFACE MSII
5337 SET COPY_ITEM_ID = STYLE_ITEM_ID,
5338 COPY_ORGANIZATION_ID = ORGANIZATION_ID,
5339 TEMPLATE_ID = DECODE(TRANSACTION_TYPE,'CREATE',NULL,TEMPLATE_ID), -- change for bug 12376516
5340 TEMPLATE_NAME = DECODE(TRANSACTION_TYPE,'CREATE',NULL,TEMPLATE_NAME) -- change for bug 12376516
5341 WHERE SET_PROCESS_ID = p_batch_id
5342 AND STYLE_ITEM_ID IS NOT NULL
5343 AND STYLE_ITEM_FLAG = 'N'
5344 AND PROCESS_FLAG = 1;
5345
5346 Debug_Conc_Log('Enable_Disable_SKU_Processing - Done Updating Copy Item Id cnt-'||SQL%ROWCOUNT );
5347 END IF;
5348
5349 UPDATE MTL_ITEM_REVISIONS_INTERFACE miri
5350 SET PROCESS_FLAG = 1
5351 WHERE SET_PROCESS_ID = p_batch_id
5352 AND PROCESS_FLAG = 10;
5353
5354 -- Bug 9678667 : change begin
5355 IF(SQL%ROWCOUNT > 0) THEN
5356 x_skus_to_process := 'T';
5357 END IF;
5358 -- Bug 9678667 : change end
5359
5360 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5361 IF SQL%ROWCOUNT > 0 THEN
5362 EGO_WF_WRAPPER_PVT.Set_Rev_Change_Bus_Event(p_true_false => p_enable_sku_processing);
5363 ELSE
5364 EGO_WF_WRAPPER_PVT.Set_Rev_Change_Bus_Event(p_true_false => 'F'); -- Bug #9341964, make sure biz event is fired only once
5365 END IF;
5366 Debug_Conc_Log('Enable_Disable_SKU_Processing: MTL_ITEM_REVISIONS_INTERFACE Processed rows='||SQL%ROWCOUNT);
5367
5368 UPDATE MTL_ITEM_CATEGORIES_INTERFACE mici
5369 SET PROCESS_FLAG = 1
5370 WHERE SET_PROCESS_ID = p_batch_id
5371 AND PROCESS_FLAG = 10;
5372
5373 -- Bug 9678667 : change begin
5374 IF(SQL%ROWCOUNT > 0) THEN
5375 x_skus_to_process := 'T';
5376 END IF;
5377 -- Bug 9678667 : change end
5378
5379 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5380 IF(SQL%ROWCOUNT > 0) THEN
5381 EGO_WF_WRAPPER_PVT.Set_Category_Assign_Bus_Event(p_true_false => p_enable_sku_processing);
5382 END IF;
5383 Debug_Conc_Log('Enable_Disable_SKU_Processing: MTL_ITEM_CATEGORIES_INTERFACE Processed rows='||SQL%ROWCOUNT);
5384
5385 UPDATE EGO_ITM_USR_ATTR_INTRFC eiuai
5386 SET PROCESS_STATUS = 1
5387 WHERE DATA_SET_ID = p_batch_id
5388 AND PROCESS_STATUS = 1.5;
5389
5390 -- Bug 9678667 : change begin
5391 IF(SQL%ROWCOUNT > 0) THEN
5392 x_skus_to_process := 'T';
5393 END IF;
5394 -- Bug 9678667 : change end
5395
5396 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5397 IF SQL%ROWCOUNT > 0 THEN
5398 EGO_WF_WRAPPER_PVT.Set_PostAttr_Change_Event(p_true_false => p_enable_sku_processing);
5399 END IF;
5400 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_ITM_USR_ATTR_INTRFC Processed rows='||SQL%ROWCOUNT);
5401
5402 UPDATE EGO_AML_INTF eai
5403 SET PROCESS_FLAG = 1
5404 WHERE DATA_SET_ID = p_batch_id
5405 AND PROCESS_FLAG = 10;
5406
5407 -- Bug 9678667 : change begin
5408 IF(SQL%ROWCOUNT > 0) THEN
5409 x_skus_to_process := 'T';
5410 END IF;
5411 -- Bug 9678667 : change end
5412
5413 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5414 IF SQL%ROWCOUNT > 0 THEN
5415 EGO_WF_WRAPPER_PVT.Set_PostAml_Change_Event(p_true_false => p_enable_sku_processing);
5416 END IF;
5417 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_AML_INTF Processed rows='||SQL%ROWCOUNT);
5418
5419 UPDATE EGO_ITEM_ASSOCIATIONS_INTF eiai
5420 SET PROCESS_FLAG = 1
5421 WHERE BATCH_ID = p_batch_id
5422 AND PROCESS_FLAG = 10;
5423
5424 -- Bug 9678667 : change begin
5425 IF(SQL%ROWCOUNT > 0) THEN
5426 x_skus_to_process := 'T';
5427 END IF;
5428 -- Bug 9678667 : change end
5429
5430 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_ITEM_ASSOCIATIONS_INTF Processed rows='||SQL%ROWCOUNT);
5431
5432 UPDATE EGO_ITEM_PEOPLE_INTF eipi
5433 SET PROCESS_STATUS = 1
5434 WHERE DATA_SET_ID = p_batch_id
5435 AND PROCESS_STATUS = 10;
5436
5437 -- Bug 9678667 : change begin
5438 IF(SQL%ROWCOUNT > 0) THEN
5439 x_skus_to_process := 'T';
5440 END IF;
5441 -- Bug 9678667 : change end
5442
5443 --R12C Business Events to be fired only ONCE although Batch Import is called twice for Styles and then SKUs
5444 IF SQL%ROWCOUNT > 0 THEN
5445 EGO_WF_WRAPPER_PVT.Set_Item_People_Event(p_true_false => p_enable_sku_processing);
5446 END IF;
5447 Debug_Conc_Log('Enable_Disable_SKU_Processing: EGO_ITEM_PEOPLE_INTF Processed rows='||SQL%ROWCOUNT);
5448 END IF;
5449
5450 RETCODE := '0';
5451 ERRBUF := NULL;
5452 COMMIT;
5453 EXCEPTION WHEN OTHERS THEN
5454 RETCODE := '2';
5455 ERRBUF := SQLERRM;
5456 Debug_Conc_Log('Enable_Disable_SKU_Processing: Error -'||ERRBUF);
5457 END Enable_Disable_SKU_Processing;
5458
5459 /*
5460 * This method does the defaulting of Item people directly into the Procudution table
5461 */
5462 PROCEDURE Default_Item_People( retcode OUT NOCOPY VARCHAR2,
5463 errbuf OUT NOCOPY VARCHAR2,
5464 p_batch_id NUMBER
5465 )
5466 IS
5467 TYPE ref_cursor IS REF CURSOR;
5468 c_get_item_roles ref_cursor;
5469
5470 l_grant_guid FND_GRANTS.GRANT_GUID%type;
5471 l_return_status VARCHAR2(10);
5472 l_errorcode VARCHAR2(10);
5473 l_menu_id NUMBER;
5474 l_party_key VARCHAR2(99);
5475 l_object_id NUMBER;
5476 l_ret_status VARCHAR2(10);
5477 l_def_style_people_option VARCHAR2(1);
5478 l_copy_people_option VARCHAR2(1);
5479 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
5480 l_sql VARCHAR2(32000);
5481 l_item_id_sql VARCHAR2(1000);
5482
5483 l_inventory_item_id NUMBER;
5484 l_organization_id NUMBER;
5485 l_menu_name FND_MENUS.MENU_NAME%TYPE;
5486 l_grantee_type FND_GRANTS.GRANTEE_TYPE%TYPE;
5487 l_grantee_key FND_GRANTS.GRANTEE_KEY%TYPE;
5488 l_end_date DATE;
5489 BEGIN
5490 Debug_Conc_Log('Default_Item_People: Starting');
5491 RETCODE := '0';
5492 l_def_style_people_option := EGO_COMMON_PVT.GET_OPTION_VALUE('EGO_DEFAULT_STYLE_PEOPLE');
5493
5494 Debug_Conc_Log('Default_Item_People: Style to SKU copy option value-'||l_def_style_people_option);
5495 BEGIN
5496 SELECT SELECTION_FLAG INTO l_copy_people_option
5497 FROM EGO_IMPORT_COPY_OPTIONS
5498 WHERE BATCH_ID = p_batch_id
5499 AND COPY_OPTION = 'COPY_PEOPLE'
5500 AND ROWNUM = 1;
5501 EXCEPTION WHEN NO_DATA_FOUND THEN
5502 l_copy_people_option := 'N';
5503 END;
5504
5505 Debug_Conc_Log('Default_Item_People: import copy option value-'||l_copy_people_option);
5506
5507 IF NVL(l_def_style_people_option, 'N') = 'N' AND NVL(l_copy_people_option, 'N') = 'N' THEN
5508 Debug_Conc_Log('Default_Item_People: Import Copy Option value and Style to SKU copy option value, both are N, so exiting.');
5509 RETCODE := '0';
5510 ERRBUF := NULL;
5511 RETURN;
5512 END IF;
5513
5514 SELECT MENU_ID INTO l_menu_id
5515 FROM FND_MENUS
5516 WHERE MENU_NAME = 'EGO_ITEM_OWNER';
5517
5518 Debug_Conc_Log('Default_Item_People: l_menu_id-'||l_menu_id);
5519
5520 SELECT 'HZ_PARTY:'||PARTY_ID INTO l_party_key
5521 FROM EGO_USER_V
5522 WHERE USER_ID = FND_GLOBAL.USER_ID;
5523
5524 Debug_Conc_Log('Default_Item_People: l_party_key-'||l_party_key);
5525
5526 SELECT OBJECT_ID INTO l_object_id
5527 FROM FND_OBJECTS
5528 WHERE OBJ_NAME = 'EGO_ITEM';
5529
5530 Debug_Conc_Log('Default_Item_People: l_object_id-'||l_object_id);
5531
5532 IF NVL(l_copy_people_option, 'N') = 'Y' THEN
5533 l_item_id_sql := q'# TO_CHAR(msii.COPY_ITEM_ID) AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'Y' #';
5534 ELSIF NVL(l_def_style_people_option, 'N') = 'Y' THEN
5535 l_item_id_sql := q'# TO_CHAR(msii.STYLE_ITEM_ID) AND NVL(msii.STYLE_ITEM_FLAG, 'Y') = 'N' #';
5536 END IF;
5537
5538 Debug_Conc_Log('Default_Item_People: l_item_id_sql-'||l_item_id_sql);
5539
5540 l_sql := q'#
5541 SELECT
5542 msii.INVENTORY_ITEM_ID,
5543 msii.ORGANIZATION_ID,
5544 menus.MENU_NAME,
5545 grants.GRANTEE_TYPE,
5546 grants.GRANTEE_KEY,
5547 grants.END_DATE
5548 FROM
5549 MTL_SYSTEM_ITEMS_INTERFACE msii,
5550 FND_GRANTS grants,
5551 FND_MENUS menus
5552 WHERE msii.SET_PROCESS_ID = #' || p_batch_id || q'#
5553 AND msii.PROCESS_FLAG = 7
5554 AND msii.TRANSACTION_TYPE = 'CREATE'
5555 AND msii.REQUEST_ID = #' || l_request_id || q'#
5556 AND menus.MENU_ID = grants.MENU_ID
5557 AND grants.INSTANCE_TYPE = 'INSTANCE'
5558 AND grants.INSTANCE_PK1_VALUE = #' || l_item_id_sql || q'#
5559 AND grants.INSTANCE_PK2_VALUE = TO_CHAR(msii.ORGANIZATION_ID)
5560 AND grants.OBJECT_ID = #' || l_object_id || q'#
5561 AND NVL(grants.END_DATE, SYSDATE) >= SYSDATE
5562 AND NOT ( grants.MENU_ID = #' || l_menu_id || q'# AND grants.GRANTEE_KEY = '#' || l_party_key || q'#' ) #';
5563
5564 Debug_Conc_Log('Default_Item_People: Created l_sql');
5565
5566 OPEN c_get_item_roles FOR l_sql;
5567
5568 Debug_Conc_Log('Default_Item_People: Opened cursor');
5569 LOOP
5570 FETCH c_get_item_roles INTO l_inventory_item_id, l_organization_id, l_menu_name, l_grantee_type, l_grantee_key, l_end_date;
5571 EXIT WHEN c_get_item_roles%NOTFOUND;
5572 Debug_Conc_Log('Default_Item_People: Creating grant for l_inventory_item_id, l_organization_id, l_menu_name, l_grantee_type, l_grantee_key, l_end_date='||
5573 l_inventory_item_id||','|| l_organization_id||','|| l_menu_name||','|| l_grantee_type||','|| l_grantee_key||','|| l_end_date);
5574
5575
5576 FND_GRANTS_PKG.GRANT_FUNCTION(
5577 p_api_version => 1.0,
5578 p_menu_name => l_menu_name,
5579 p_object_name => 'EGO_ITEM',
5580 p_instance_type => 'INSTANCE',
5581 p_instance_set_id => NULL,
5582 p_instance_pk1_value => TO_CHAR(l_inventory_item_id),
5583 p_instance_pk2_value => TO_CHAR(l_organization_id),
5584 p_grantee_type => l_grantee_type,
5585 p_grantee_key => l_grantee_key,
5586 p_start_date => SYSDATE,
5587 p_end_date => l_end_date,
5588 x_grant_guid => l_grant_guid,
5589 x_success => l_return_status,
5590 x_errorcode => l_errorcode
5591 );
5592
5593 Debug_Conc_Log('Default_Item_People: Returned with l_return_status,l_errorcode='||l_return_status||','||l_errorcode);
5594 IF l_return_status = FND_API.G_TRUE THEN
5595 l_ret_status := '0';
5596 ELSE
5597 l_ret_status := '2';
5598 END IF;
5599
5600 IF NVL(RETCODE, '0') < l_ret_status THEN
5601 RETCODE := l_ret_status;
5602 ERRBUF := l_errorcode;
5603 END IF;
5604 END LOOP;
5605 CLOSE c_get_item_roles;
5606
5607 COMMIT;
5608 Debug_Conc_Log('Default_Item_People: Done with - RETCODE , ERRBUF='||RETCODE ||','|| ERRBUF);
5609 EXCEPTION WHEN OTHERS THEN
5610 IF c_get_item_roles%ISOPEN THEN
5611 CLOSE c_get_item_roles;
5612 END IF;
5613 RETCODE := '2';
5614 ERRBUF := SQLERRM;
5615 Debug_Conc_Log('Default_Item_People: Error with - RETCODE , ERRBUF='||RETCODE ||','|| ERRBUF);
5616 END Default_Item_People;
5617
5618 /*
5619 * This method copies Item people from style to SKU (that are newly added to style) directly into the Procudution table
5620 */
5621 PROCEDURE Copy_Item_People_From_Style( retcode OUT NOCOPY VARCHAR2,
5622 errbuf OUT NOCOPY VARCHAR2,
5623 p_batch_id NUMBER
5624 )
5625 IS
5626
5627 -- Should pick 7 records only.
5628 -- 6504765 : Style to sku item people is not defaulted for item author role
5629 CURSOR c_skus_to_process(cp_request_id NUMBER, cp_object_id NUMBER) IS
5630 SELECT DISTINCT
5631 msik.INVENTORY_ITEM_ID,
5632 intf.ORGANIZATION_ID,
5633 menus.MENU_NAME,
5634 intf.GRANTEE_TYPE,
5635 DECODE(intf.GRANTEE_TYPE, 'USER', 'HZ_PARTY:'||TO_CHAR(intf.GRANTEE_PARTY_ID),
5636 'GROUP', 'HZ_GROUP:'||TO_CHAR(intf.GRANTEE_PARTY_ID),
5637 'COMPANY','HZ_COMPANY:'||TO_CHAR(intf.GRANTEE_PARTY_ID),
5638 'GLOBAL', intf.GRANTEE_TYPE,
5639 TO_CHAR(intf.GRANTEE_PARTY_ID)
5640 ) GRANTEE_KEY,
5641 intf.END_DATE
5642 FROM
5643 MTL_SYSTEM_ITEMS_KFV msik,
5644 EGO_ITEM_PEOPLE_INTF intf,
5645 MTL_PARAMETERS mp,
5646 FND_MENUS menus
5647 WHERE intf.DATA_SET_ID = p_batch_id
5648 AND intf.PROCESS_STATUS = 4
5649 AND intf.REQUEST_ID = cp_request_id
5650 AND intf.TRANSACTION_TYPE = 'CREATE'
5651 AND msik.STYLE_ITEM_ID = intf.INVENTORY_ITEM_ID
5652 AND msik.ORGANIZATION_ID = mp.ORGANIZATION_ID
5653 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
5654 AND intf.INTERNAL_ROLE_ID = menus.MENU_ID
5655 AND NOT EXISTS (SELECT 1 FROM FND_GRANTS fg
5656 WHERE fg.INSTANCE_TYPE = 'INSTANCE'
5657 AND fg.INSTANCE_PK1_VALUE = To_Char(msik.INVENTORY_ITEM_ID)
5658 AND fg.INSTANCE_PK2_VALUE = TO_CHAR(intf.ORGANIZATION_ID)
5659 AND fg.OBJECT_ID = cp_object_id
5660 AND NVL(fg.END_DATE, SYSDATE) >= SYSDATE
5661 AND fg.MENU_ID = menus.MENU_ID
5662 AND fg.GRANTEE_TYPE = intf.GRANTEE_TYPE
5663 AND fg.GRANTEE_KEY = 'HZ_PARTY:'||intf.GRANTEE_PARTY_ID
5664 );
5665
5666 l_grant_guid FND_GRANTS.GRANT_GUID%type;
5667 l_return_status VARCHAR2(10);
5668 l_errorcode VARCHAR2(10);
5669 l_object_id NUMBER;
5670 l_ret_status VARCHAR2(10);
5671 l_def_style_people_option VARCHAR2(1);
5672 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
5673 BEGIN
5674 Debug_Conc_Log('Copy_Item_People_From_Style: Starting');
5675 RETCODE := '0';
5676 l_def_style_people_option := EGO_COMMON_PVT.GET_OPTION_VALUE('EGO_DEFAULT_STYLE_PEOPLE');
5677
5678 Debug_Conc_Log('Copy_Item_People_From_Style: Style to SKU copy option value-'||l_def_style_people_option);
5679
5680 IF NVL(l_def_style_people_option, 'N') = 'N' THEN
5681 Debug_Conc_Log('Copy_Item_People_From_Style: Style to SKU copy option value is N, so exiting.');
5682 RETCODE := '0';
5683 ERRBUF := NULL;
5684 RETURN;
5685 END IF;
5686
5687 SELECT OBJECT_ID INTO l_object_id
5688 FROM FND_OBJECTS
5689 WHERE OBJ_NAME = 'EGO_ITEM';
5690
5691 Debug_Conc_Log('Copy_Item_People_From_Style: l_object_id-'||l_object_id);
5692 FOR i IN c_skus_to_process(l_request_id, l_object_id) LOOP
5693 Debug_Conc_Log('Copy_Item_People_From_Style: Creating grant for l_inventory_item_id, l_organization_id, l_menu_name, l_grantee_type, l_grantee_key, l_end_date='||
5694 i.INVENTORY_ITEM_ID||','|| i.ORGANIZATION_ID||','|| i.MENU_NAME||','|| i.GRANTEE_TYPE||','|| i.GRANTEE_KEY||','|| i.END_DATE);
5695
5696 FND_GRANTS_PKG.GRANT_FUNCTION(
5697 p_api_version => 1.0,
5698 p_menu_name => i.MENU_NAME,
5699 p_object_name => 'EGO_ITEM',
5700 p_instance_type => 'INSTANCE',
5701 p_instance_set_id => NULL,
5702 p_instance_pk1_value => TO_CHAR(i.INVENTORY_ITEM_ID),
5703 p_instance_pk2_value => TO_CHAR(i.ORGANIZATION_ID),
5704 p_grantee_type => i.GRANTEE_TYPE,
5705 p_grantee_key => i.GRANTEE_KEY,
5706 p_start_date => SYSDATE,
5707 p_end_date => i.END_DATE,
5708 x_grant_guid => l_grant_guid,
5709 x_success => l_return_status,
5710 x_errorcode => l_errorcode
5711 );
5712
5713 Debug_Conc_Log('Copy_Item_People_From_Style: Returned with l_return_status,l_errorcode='||l_return_status||','||l_errorcode);
5714 IF l_return_status = FND_API.G_TRUE THEN
5715 l_ret_status := '0';
5716 ELSE
5717 l_ret_status := '2';
5718 END IF;
5719
5720 IF NVL(RETCODE, '0') < l_ret_status THEN
5721 RETCODE := l_ret_status;
5722 ERRBUF := l_errorcode;
5723 END IF;
5724 END LOOP;
5725
5726 COMMIT;
5727 Debug_Conc_Log('Copy_Item_People_From_Style: Done with - RETCODE , ERRBUF='||RETCODE ||','|| ERRBUF);
5728 EXCEPTION WHEN OTHERS THEN
5729 RETCODE := '2';
5730 ERRBUF := SQLERRM;
5731 Debug_Conc_Log('Copy_Item_People_From_Style: Error with - RETCODE , ERRBUF='||RETCODE ||','|| ERRBUF);
5732 END Copy_Item_People_From_Style;
5733
5734
5735 /*
5736 * This method copies the LC Project
5737 */
5738 PROCEDURE Copy_LC_Projects( retcode OUT NOCOPY VARCHAR2,
5739 errbuf OUT NOCOPY VARCHAR2,
5740 p_batch_id NUMBER
5741 )
5742 IS
5743 CURSOR c_intf_rows (c_request_id IN NUMBER) IS
5744 SELECT
5745 msii.INVENTORY_ITEM_ID AS DEST_ITEM_ID,
5746 msii.ORGANIZATION_ID,
5747 msii.STYLE_ITEM_ID AS SOURCE_ITEM_ID,
5748 (SELECT MAX(mirb.REVISION_ID)
5749 FROM MTL_ITEM_REVISIONS_B mirb
5750 WHERE mirb.INVENTORY_ITEM_ID = msii.STYLE_ITEM_ID
5751 AND mirb.ORGANIZATION_ID = msii.ORGANIZATION_ID
5752 AND mirb.EFFECTIVITY_DATE <= SYSDATE
5753 ) AS SOURCE_REVISION_ID,
5754 (SELECT MAX(mirb.REVISION_ID)
5755 FROM MTL_ITEM_REVISIONS_B mirb
5756 WHERE mirb.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
5757 AND mirb.ORGANIZATION_ID = msii.ORGANIZATION_ID
5758 AND mirb.EFFECTIVITY_DATE <= SYSDATE
5759 ) AS DEST_REVISION_ID
5760 FROM
5761 MTL_SYSTEM_ITEMS_INTERFACE msii,
5762 MTL_PARAMETERS mp
5763 WHERE msii.SET_PROCESS_ID = p_batch_id
5764 AND msii.PROCESS_FLAG = 7
5765 AND msii.TRANSACTION_TYPE = 'CREATE'
5766 AND msii.REQUEST_ID = c_request_id
5767 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
5768 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
5769 AND msii.STYLE_ITEM_FLAG = 'N';
5770
5771 l_return_status VARCHAR2(10);
5772 l_errorcode VARCHAR2(10);
5773 l_msg_count NUMBER;
5774 l_msg_data VARCHAR2(4000);
5775 l_ret_status VARCHAR2(10);
5776 l_def_style_project_option VARCHAR2(1);
5777 l_copy_people_option VARCHAR2(1);
5778 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
5779 l_inventory_item_id NUMBER;
5780 l_organization_id NUMBER;
5781 BEGIN
5782 Debug_Conc_Log('Copy_LC_Projects: Starting');
5783 RETCODE := '0';
5784 l_def_style_project_option := EGO_COMMON_PVT.GET_OPTION_VALUE('EGO_DEFAULT_STYLE_LC_PROJS');
5785
5786 Debug_Conc_Log('Copy_LC_Projects: Style to SKU copy option value-'||l_def_style_project_option);
5787
5788 IF NVL(l_def_style_project_option, 'N') = 'N' THEN
5789 Debug_Conc_Log('Copy_LC_Projects: Style to SKU defaulting option valueis N, so exiting.');
5790 RETCODE := '0';
5791 ERRBUF := NULL;
5792 RETURN;
5793 END IF;
5794
5795 FOR i IN c_intf_rows(l_request_id) LOOP
5796 Debug_Conc_Log('Copy_LC_Projects: Copying Item Level Projects for source_item_id, organization_id, dest_item_id='||
5797 i.SOURCE_ITEM_ID||','|| i.ORGANIZATION_ID|| i.DEST_ITEM_ID);
5798 EGO_LIFECYCLE_USER_PUB.Copy_Project
5799 (
5800 p_api_version => 1.0,
5801 p_commit => FND_API.G_FALSE,
5802 p_source_item_id => i.SOURCE_ITEM_ID,
5803 p_source_org_id => i.ORGANIZATION_ID,
5804 p_source_rev_id => NULL,
5805 p_association_type => 'EGO_ITEM_PROJ_ASSOC_TYPE',
5806 p_association_code => 'LIFECYCLE_TRACKING',
5807 p_dest_item_id => i.DEST_ITEM_ID,
5808 p_dest_org_id => i.ORGANIZATION_ID,
5809 p_dest_rev_id => NULL,
5810 x_return_status => l_return_status,
5811 x_error_code => l_errorcode,
5812 x_msg_count => l_msg_count,
5813 x_msg_data => l_msg_data
5814 );
5815 Debug_Conc_Log('Copy_LC_Projects: Done with l_return_status, l_errorcode, l_msg_data-'||l_return_status||','|| l_errorcode||','|| l_msg_data);
5816 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
5817 l_ret_status := '0';
5818 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5819 l_ret_status := '1';
5820 ELSE
5821 l_ret_status := '2';
5822 END IF;
5823
5824 IF NVL(RETCODE, '0') < l_ret_status THEN
5825 RETCODE := l_ret_status;
5826 ERRBUF := l_msg_data;
5827 END IF;
5828
5829 Debug_Conc_Log('Copy_LC_Projects: Copying Revision Level Project for source_item_id, organization_id, source_revision_id, dest_item_id, dest_revision_id='||
5830 i.SOURCE_ITEM_ID||','|| i.ORGANIZATION_ID||','|| i.SOURCE_REVISION_ID||','|| i.DEST_ITEM_ID||','|| i.DEST_REVISION_ID);
5831 EGO_LIFECYCLE_USER_PUB.Copy_Project
5832 (
5833 p_api_version => 1.0,
5834 p_commit => FND_API.G_FALSE,
5835 p_source_item_id => i.SOURCE_ITEM_ID,
5836 p_source_org_id => i.ORGANIZATION_ID,
5837 p_source_rev_id => i.SOURCE_REVISION_ID,
5838 p_association_type => 'EGO_ITEM_PROJ_ASSOC_TYPE',
5839 p_association_code => 'LIFECYCLE_TRACKING',
5840 p_dest_item_id => i.DEST_ITEM_ID,
5841 p_dest_org_id => i.ORGANIZATION_ID,
5842 p_dest_rev_id => i.DEST_REVISION_ID,
5843 x_return_status => l_return_status,
5844 x_error_code => l_errorcode,
5845 x_msg_count => l_msg_count,
5846 x_msg_data => l_msg_data
5847 );
5848 Debug_Conc_Log('Copy_LC_Projects: Done with l_return_status, l_errorcode, l_msg_data-'||l_return_status||','|| l_errorcode||','|| l_msg_data);
5849 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
5850 l_ret_status := '0';
5851 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5852 l_ret_status := '1';
5853 ELSE
5854 l_ret_status := '2';
5855 END IF;
5856
5857 IF NVL(RETCODE, '0') < l_ret_status THEN
5858 RETCODE := l_ret_status;
5859 ERRBUF := l_msg_data;
5860 END IF;
5861 END LOOP; -- FOR i IN c_intf_rows
5862 COMMIT;
5863 Debug_Conc_Log('Copy_LC_Projects: Done with - RETCODE , ERRBUF='||RETCODE ||','|| ERRBUF);
5864 EXCEPTION WHEN OTHERS THEN
5865 RETCODE := '2';
5866 ERRBUF := SQLERRM;
5867 Debug_Conc_Log('Copy_LC_Projects: Error with - RETCODE , ERRBUF='||RETCODE ||','|| ERRBUF);
5868 END Copy_LC_Projects;
5869
5870 PROCEDURE Propagate_Item_Num_To_Child (
5871 p_batch_id NUMBER
5872 , p_ss_id NUMBER
5873 , p_ss_ref VARCHAR2
5874 , p_old_item_number VARCHAR2
5875 , p_item_number VARCHAR2
5876 )
5877 IS
5878 TYPE ROWID_TYPE_TBL IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
5879 l_pdh_ss_id NUMBER := EGO_IMPORT_PVT.Get_Pdh_Source_System_Id;
5880 l_row_id_tbl ROWID_TYPE_TBL;
5881 l_err_txt VARCHAR2(4000);
5882 l_ret_code VARCHAR2(100);
5883 BEGIN
5884 -- nulling out all the segments
5885 UPDATE MTL_SYSTEM_ITEMS_INTERFACE
5886 SET ITEM_NUMBER = p_item_number,
5887 SEGMENT1 = NULL,
5888 SEGMENT2 = NULL,
5889 SEGMENT3 = NULL,
5890 SEGMENT4 = NULL,
5891 SEGMENT5 = NULL,
5892 SEGMENT6 = NULL,
5893 SEGMENT7 = NULL,
5894 SEGMENT8 = NULL,
5895 SEGMENT9 = NULL,
5896 SEGMENT10 = NULL,
5897 SEGMENT11 = NULL,
5898 SEGMENT12 = NULL,
5899 SEGMENT13 = NULL,
5900 SEGMENT14 = NULL,
5901 SEGMENT15 = NULL,
5902 SEGMENT16 = NULL,
5903 SEGMENT17 = NULL,
5904 SEGMENT18 = NULL,
5905 SEGMENT19 = NULL,
5906 SEGMENT20 = NULL
5907 WHERE PROCESS_FLAG = 1
5908 AND SET_PROCESS_ID = p_batch_id
5909 AND SOURCE_SYSTEM_ID = p_ss_id
5910 AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref )
5911 RETURNING ROWID BULK COLLECT INTO l_row_id_tbl;
5912
5913 IF l_row_id_tbl IS NOT NULL AND l_row_id_tbl.COUNT > 0 THEN
5914 FOR i IN l_row_id_tbl.FIRST..l_row_id_tbl.LAST LOOP
5915 l_ret_code := INVPUOPI.mtl_pr_parse_item_number
5916 (
5917 item_number => p_item_number,
5918 item_id => null,
5919 trans_id => null,
5920 org_id => null,
5921 err_text => l_err_txt,
5922 p_rowid => l_row_id_tbl(i)
5923 );
5924 END LOOP;
5925 END IF;
5926
5927 -- Fix for bug#9660659 Start
5928 --UPDATE MTL_ITEM_REVISIONS_INTERFACE
5929 --SET ITEM_NUMBER = p_item_number
5930 --WHERE PROCESS_FLAG = 1
5931 -- AND SET_PROCESS_ID = p_batch_id
5932 -- AND SOURCE_SYSTEM_ID = p_ss_id
5933 -- AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref );
5934
5935 IF(p_ss_ref IS NOT null) THEN
5936 UPDATE MTL_ITEM_REVISIONS_INTERFACE
5937 SET ITEM_NUMBER = p_item_number
5938 WHERE PROCESS_FLAG = 1
5939 AND SET_PROCESS_ID = p_batch_id
5940 AND SOURCE_SYSTEM_ID = p_ss_id
5941 AND SOURCE_SYSTEM_REFERENCE = p_ss_ref;
5942 ELSE
5943 UPDATE MTL_ITEM_REVISIONS_INTERFACE
5944 SET ITEM_NUMBER = p_item_number
5945 WHERE PROCESS_FLAG = 1
5946 AND SET_PROCESS_ID = p_batch_id
5947 AND ITEM_NUMBER = p_old_item_number;
5948 END IF;
5949 -- Fix for bug#9660659 End
5950
5951 UPDATE MTL_ITEM_CATEGORIES_INTERFACE
5952 SET ITEM_NUMBER = p_item_number
5953 WHERE PROCESS_FLAG = 1
5954 AND SET_PROCESS_ID = p_batch_id
5955 AND SOURCE_SYSTEM_ID = p_ss_id
5956 AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref );
5957
5958 UPDATE EGO_ITEM_PEOPLE_INTF
5959 SET ITEM_NUMBER = p_item_number
5960 WHERE PROCESS_STATUS = 1
5961 AND DATA_SET_ID = p_batch_id
5962 AND SOURCE_SYSTEM_ID = p_ss_id
5963 AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref );
5964
5965 -- Fix for bug#9660659 Start
5966 --UPDATE EGO_ITM_USR_ATTR_INTRFC
5967 --SET ITEM_NUMBER = p_item_number
5968 --WHERE PROCESS_STATUS = 2
5969 -- AND DATA_SET_ID = p_batch_id
5970 -- AND SOURCE_SYSTEM_ID = p_ss_id
5971 -- AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref );
5972
5973 IF(p_ss_ref IS NOT null) THEN
5974 UPDATE /*+ index(EGO_ITM_USR_ATTR_INTRFC, EGO_ITM_USR_ATTR_INTRFC_N5) */ EGO_ITM_USR_ATTR_INTRFC /* Bug 9678667 - Added the hint */
5975 SET ITEM_NUMBER = p_item_number
5976 WHERE PROCESS_STATUS = 2
5977 AND DATA_SET_ID = p_batch_id
5978 AND SOURCE_SYSTEM_ID = p_ss_id
5979 AND SOURCE_SYSTEM_REFERENCE = p_ss_ref;
5980 ELSE
5981 UPDATE EGO_ITM_USR_ATTR_INTRFC
5982 SET ITEM_NUMBER = p_item_number
5983 WHERE PROCESS_STATUS = 2
5984 AND DATA_SET_ID = p_batch_id
5985 AND ITEM_NUMBER = p_old_item_number;
5986 END IF;
5987 -- Fix for bug#9660659 End
5988
5989 UPDATE EGO_AML_INTF
5990 SET ITEM_NUMBER = p_item_number
5991 WHERE PROCESS_FLAG = 1
5992 AND DATA_SET_ID = p_batch_id
5993 AND SOURCE_SYSTEM_ID = p_ss_id
5994 AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref );
5995
5996 -- propagating to BOM tables
5997 UPDATE BOM_BILL_OF_MTLS_INTERFACE
5998 SET ITEM_NUMBER = p_item_number
5999 WHERE PROCESS_FLAG = 1
6000 AND BATCH_ID = p_batch_id
6001 AND ( ITEM_NUMBER = p_old_item_number OR SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6002
6003 UPDATE BOM_INVENTORY_COMPS_INTERFACE
6004 SET COMPONENT_ITEM_NUMBER = p_item_number
6005 WHERE PROCESS_FLAG = 1
6006 AND BATCH_ID = p_batch_id
6007 AND ( COMPONENT_ITEM_NUMBER = p_old_item_number OR COMP_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6008
6009 UPDATE BOM_INVENTORY_COMPS_INTERFACE
6010 SET ASSEMBLY_ITEM_NUMBER = p_item_number
6011 WHERE PROCESS_FLAG = 1
6012 AND BATCH_ID = p_batch_id
6013 AND ( ASSEMBLY_ITEM_NUMBER = p_old_item_number OR PARENT_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6014
6015 UPDATE BOM_SUB_COMPS_INTERFACE
6016 SET ASSEMBLY_ITEM_NUMBER = p_item_number
6017 WHERE PROCESS_FLAG = 1
6018 AND BATCH_ID = p_batch_id
6019 AND ( ASSEMBLY_ITEM_NUMBER = p_old_item_number OR PARENT_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6020
6021 UPDATE BOM_SUB_COMPS_INTERFACE
6022 SET COMPONENT_ITEM_NUMBER = p_item_number
6023 WHERE PROCESS_FLAG = 1
6024 AND BATCH_ID = p_batch_id
6025 AND ( COMPONENT_ITEM_NUMBER = p_old_item_number OR COMP_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6026
6027 UPDATE BOM_SUB_COMPS_INTERFACE
6028 SET SUBSTITUTE_COMP_NUMBER = p_item_number
6029 WHERE PROCESS_FLAG = 1
6030 AND BATCH_ID = p_batch_id
6031 AND ( SUBSTITUTE_COMP_NUMBER = p_old_item_number OR SUBCOM_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6032
6033 UPDATE BOM_REF_DESGS_INTERFACE
6034 SET ASSEMBLY_ITEM_NUMBER = p_item_number
6035 WHERE PROCESS_FLAG = 1
6036 AND BATCH_ID = p_batch_id
6037 AND ( ASSEMBLY_ITEM_NUMBER = p_old_item_number OR PARENT_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6038
6039 UPDATE BOM_REF_DESGS_INTERFACE
6040 SET COMPONENT_ITEM_NUMBER = p_item_number
6041 WHERE PROCESS_FLAG = 1
6042 AND BATCH_ID = p_batch_id
6043 AND ( COMPONENT_ITEM_NUMBER = p_old_item_number OR COMP_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6044
6045 UPDATE BOM_COMPONENT_OPS_INTERFACE
6046 SET ASSEMBLY_ITEM_NUMBER = p_item_number
6047 WHERE PROCESS_FLAG = 1
6048 AND BATCH_ID = p_batch_id
6049 AND ( ASSEMBLY_ITEM_NUMBER = p_old_item_number OR PARENT_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6050
6051 UPDATE BOM_COMPONENT_OPS_INTERFACE
6052 SET COMPONENT_ITEM_NUMBER = p_item_number
6053 WHERE PROCESS_FLAG = 1
6054 AND BATCH_ID = p_batch_id
6055 AND ( COMPONENT_ITEM_NUMBER = p_old_item_number OR COMP_SOURCE_SYSTEM_REFERENCE = p_ss_ref );
6056
6057 END Propagate_Item_Num_To_Child;
6058
6059
6060 PROCEDURE Process_Import_Copy_Options
6061 ( p_api_version IN NUMBER
6062 , p_commit IN VARCHAR2 DEFAULT FND_API.G_TRUE
6063 , p_batch_id IN NUMBER
6064 , p_copy_option IN VARCHAR2
6065 , p_template_name IN VARCHAR2
6066 , p_template_sequence IN NUMBER
6067 , p_selection_flag IN VARCHAR2
6068 , x_return_status OUT NOCOPY VARCHAR2
6069 , x_msg_count OUT NOCOPY NUMBER
6070 , x_msg_data OUT NOCOPY VARCHAR2
6071 )
6072 IS
6073 CURSOR check_template_name (cp_template_name VARCHAR2) IS
6074 SELECT template_id
6075 FROM mtl_item_templates
6076 WHERE template_name = cp_template_name;
6077
6078 CURSOR c_batch_exists IS
6079 SELECT 1 FROM mtl_system_items_interface
6080 WHERE set_process_id = p_batch_id
6081 AND process_flag = 1;
6082
6083 l_template_id NUMBER;
6084 l_sequence NUMBER;
6085 l_select_flag VARCHAR2(1);
6086 l_error NUMBER := 0;
6087 l_sysdate DATE := sysdate;
6088 l_user_id NUMBER := FND_GLOBAL.USER_ID;
6089 l_batch_exists NUMBER := 0;
6090 BEGIN
6091 IF ((p_batch_id IS NULL) OR (p_batch_id = 0)) THEN
6092 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6093 x_msg_count := 1;
6094 x_msg_data := 'Batch Id is mandatory';
6095 l_error := 1;
6096 ELSE
6097 OPEN c_batch_exists;
6098 FETCH c_batch_exists INTO l_batch_exists;
6099 CLOSE c_batch_exists;
6100
6101 IF l_batch_exists = 0 THEN
6102 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6103 x_msg_count := 1;
6104 x_msg_data := 'Batch contains no items';
6105 l_error := 1;
6106 END IF;
6107 END IF;
6108
6109 IF p_copy_option = 'APPLY_TEMPLATE' THEN
6110 l_sequence := p_template_sequence;
6111 OPEN check_template_name(cp_template_name => p_template_name);
6112 FETCH check_template_name INTO l_template_id;
6113 CLOSE check_template_name;
6114
6115 IF l_template_id IS NULL THEN
6116 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6117 x_msg_count := 1;
6118 x_msg_data := 'Invalid template Name';
6119 l_error := 1;
6120 END IF;
6121 ELSIF p_copy_option = 'COPY_FIRST' THEN
6122 IF p_selection_flag IS NULL OR p_selection_flag NOT IN ('Y', 'N') THEN
6123 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6124 x_msg_count := 1;
6125 x_msg_data := 'Invalid Copy Option and Selection Flag combination';
6126 l_error := 1;
6127 ELSE
6128 l_select_flag := p_selection_flag;
6129 END IF;
6130
6131 END IF;
6132
6133 IF l_error = 0 THEN
6134 INSERT INTO ego_import_copy_options
6135 ( batch_id,
6136 copy_option,
6137 template_id,
6138 template_sequence,
6139 attr_group_id,
6140 attach_category_id,
6141 selection_flag,
6142 creation_date,
6143 created_by,
6144 last_update_date,
6145 last_updated_by
6146 )
6147 VALUES
6148 ( p_batch_id,
6149 p_copy_option,
6150 l_template_id,
6151 l_sequence,
6152 null,
6153 null,
6154 l_select_flag,
6155 l_sysdate,
6156 l_user_id,
6157 l_sysdate,
6158 l_user_id
6159 );
6160 x_return_status := FND_API.G_RET_STS_SUCCESS;
6161 END IF;
6162
6163 IF FND_API.To_Boolean(p_commit) THEN
6164 COMMIT WORK;
6165 END IF;
6166 EXCEPTION
6167 WHEN others THEN
6168 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6169 x_msg_count := 1;
6170 x_msg_data := SQLERRM;
6171 END Process_Import_Copy_Options;
6172
6173 PROCEDURE Process_Variant_Attrs
6174 ( p_api_version IN NUMBER
6175 , p_commit IN VARCHAR2 DEFAULT FND_API.G_TRUE
6176 , p_batch_id IN NUMBER
6177 , p_item_number IN VARCHAR2
6178 , p_organization_id IN NUMBER
6179 , p_attr_group_type IN VARCHAR2
6180 , p_attr_group_name IN VARCHAR2
6181 , p_attr_name IN VARCHAR2
6182 , p_data_level_name IN VARCHAR2
6183 , p_attr_value_num IN NUMBER
6184 , p_attr_value_str IN VARCHAR2
6185 , p_attr_value_date IN DATE
6186 , x_return_status OUT NOCOPY VARCHAR2
6187 , x_msg_count OUT NOCOPY NUMBER
6188 , x_msg_data OUT NOCOPY VARCHAR2 )
6189 IS
6190
6191 CURSOR c_valid_record
6192 IS
6193 SELECT 1
6194 FROM EGO_ATTRS_V
6195 WHERE UPPER(ATTR_GROUP_TYPE) = UPPER(p_attr_group_type)
6196 AND UPPER(ATTR_GROUP_NAME) = UPPER(p_attr_group_name)
6197 AND UPPER(ATTR_NAME) = UPPER(p_attr_name)
6198 AND APPLICATION_ID = 431;
6199
6200 CURSOR c_valid_data_level
6201 IS
6202 SELECT 1
6203 FROM ego_attr_group_dl
6204 WHERE data_level_id IN (SELECT data_level_id FROM ego_data_level_b
6205 WHERE attr_group_type = p_attr_group_type
6206 AND data_level_name = p_data_level_name
6207 AND application_id = 431)
6208 AND attr_group_id IN (SELECT attr_group_id FROM ego_attr_groups_v
6209 WHERE attr_group_type = p_attr_group_type
6210 AND attr_group_name = p_attr_group_name
6211 AND application_id = 431);
6212
6213 CURSOR c_item_details
6214 IS
6215 SELECT style_item_flag,mtl_system_items_interface_s.NEXTVAL,
6216 item_catalog_group_id
6217 FROM mtl_system_items_interface
6218 WHERE item_number = p_item_number
6219 AND organization_id = p_organization_id
6220 AND set_process_id = p_batch_id
6221 AND process_flag = 1;
6222
6223 CURSOR c_attr_type
6224 IS
6225 SELECT variant FROM ego_obj_attr_grp_assocs_v
6226 WHERE attr_group_type = p_attr_group_type
6227 AND attr_group_name = p_attr_group_name
6228 AND application_id = 431;
6229
6230 CURSOR c_group_record
6231 IS
6232 SELECT MAX(ROW_IDENTIFIER), ITEM_CATALOG_GROUP_ID
6233 FROM EGO_ITM_USR_ATTR_INTRFC
6234 WHERE ITEM_NUMBER = p_item_number
6235 AND ORGANIZATION_ID = p_organization_id
6236 AND DATA_SET_ID = p_batch_id
6237 AND PROCESS_STATUS = 2
6238 AND ATTR_GROUP_TYPE = p_attr_group_type
6239 AND ATTR_GROUP_INT_NAME = p_attr_group_name
6240 GROUP BY ROW_IDENTIFIER,ITEM_CATALOG_GROUP_ID ;
6241
6242 l_grp_row_identifier NUMBER;
6243 l_grp_item_catalog_group_id NUMBER;
6244 l_row_identifier NUMBER;
6245 l_item_catalog_group_id NUMBER;
6246 l_sysdate DATE := sysdate;
6247 l_valid_record NUMBER := 0;
6248 l_valid_data_level NUMBER := 0;
6249
6250 l_attr_value_num NUMBER;
6251 l_attr_value_str VARCHAR2(1000);
6252 l_attr_value_date DATE;
6253 l_attr_disp_value VARCHAR2(1000);
6254 l_style_item_flag VARCHAR2(1);
6255 l_variant VARCHAR2(1);
6256
6257 l_user_id NUMBER := FND_GLOBAL.USER_ID;
6258 l_batch_exists NUMBER := 0;
6259 l_error NUMBER := 0;
6260 BEGIN
6261
6262 IF ((p_batch_id IS NULL) OR (p_batch_id = 0)) THEN
6263 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6264 x_msg_count := 1;
6265 x_msg_data := 'Batch Id is mandatory';
6266 l_error := 1;
6267 END IF;
6268
6269 /* Validate record passed to interface */
6270 OPEN c_valid_record;
6271 FETCH c_valid_record INTO l_valid_record;
6272 CLOSE c_valid_record;
6273
6274 OPEN c_valid_data_level;
6275 FETCH c_valid_data_level INTO l_valid_data_level;
6276 CLOSE c_valid_data_level;
6277
6278 IF l_valid_record = 0 OR l_valid_data_level = 0 THEN
6279 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6280 x_msg_count := 1;
6281 x_msg_data := 'Invalid Attr Group Type, Name and Attr Name combination';
6282 l_error := 1;
6283 ELSE
6284 /* Add all attributes for an item in the same batch and same attribute group to one group */
6285 OPEN c_group_record;
6286 FETCH c_group_record INTO l_grp_row_identifier, l_grp_item_catalog_group_id;
6287 CLOSE c_group_record;
6288
6289 OPEN c_item_details;
6290 FETCH c_item_details INTO l_style_item_flag, l_row_identifier, l_item_catalog_group_id;
6291
6292 IF c_item_details%NOTFOUND THEN
6293 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6294 x_msg_count := 1;
6295 x_msg_data := 'Batch contains no items';
6296 l_error := 1;
6297 END IF;
6298
6299 l_attr_value_num := p_attr_value_num;
6300 l_attr_value_date := p_attr_value_date;
6301
6302 OPEN c_attr_type;
6303 FETCH c_attr_type INTO l_variant;
6304 CLOSE c_attr_type;
6305
6306 IF l_style_item_flag = 'Y' AND l_variant = 'Y' THEN
6307 l_attr_disp_value := p_attr_value_str;
6308 ELSE
6309 l_attr_value_str := p_attr_value_str;
6310 END IF;
6311 END IF;
6312
6313 IF l_error = 0 THEN
6314 INSERT INTO EGO_ITM_USR_ATTR_INTRFC
6315 (
6316 PROCESS_STATUS
6317 ,TRANSACTION_ID
6318 ,DATA_SET_ID
6319 ,TRANSACTION_TYPE
6320 ,ITEM_NUMBER
6321 ,ORGANIZATION_ID
6322 ,ITEM_CATALOG_GROUP_ID
6323 ,SOURCE_SYSTEM_ID
6324 ,SOURCE_SYSTEM_REFERENCE
6325 ,ROW_IDENTIFIER
6326 ,ATTR_GROUP_TYPE
6327 ,ATTR_GROUP_INT_NAME
6328 ,ATTR_GROUP_ID
6329 ,ATTR_INT_NAME
6330 ,DATA_LEVEL_NAME
6331 ,ATTR_VALUE_STR
6332 ,ATTR_VALUE_NUM
6333 ,ATTR_VALUE_DATE
6334 ,ATTR_DISP_VALUE
6335 ,CREATED_BY
6336 ,CREATION_DATE
6337 ,LAST_UPDATED_BY
6338 ,LAST_UPDATE_DATE
6339 )
6340 VALUES
6341 (
6342 2
6343 ,MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL
6344 ,p_batch_id
6345 ,'SYNC'
6346 ,p_item_number
6347 ,p_organization_id
6348 ,NVL(l_grp_item_catalog_group_id,l_item_catalog_group_id)
6349 ,EGO_IMPORT_PVT.get_pdh_source_system_id
6350 ,null
6351 ,NVL(l_grp_row_identifier,l_row_identifier)
6352 ,p_attr_group_type
6353 ,p_attr_group_name
6354 ,null
6355 ,p_attr_name
6356 ,p_data_level_name
6357 ,l_attr_value_str
6358 ,l_attr_value_num
6359 ,l_attr_value_date
6360 ,l_attr_disp_value
6361 ,l_user_id
6362 ,l_sysdate
6363 ,l_user_id
6364 ,l_sysdate
6365 );
6366
6367 x_return_status := FND_API.G_RET_STS_SUCCESS;
6368 END IF;
6369
6370 IF FND_API.To_Boolean(p_commit) THEN
6371 COMMIT WORK;
6372 END IF;
6373
6374 EXCEPTION
6375 WHEN others THEN
6376 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6377 x_msg_count := 1;
6378 x_msg_data := SQLERRM;
6379 END Process_Variant_Attrs;
6380
6381 PROCEDURE Get_Interface_Errors( p_batch_id IN NUMBER,
6382 x_item_err_table OUT NOCOPY EGO_VARCHAR_TBL_TYPE,
6383 x_rev_err_table OUT NOCOPY EGO_VARCHAR_TBL_TYPE,
6384 x_uda_err_table OUT NOCOPY EGO_VARCHAR_TBL_TYPE)
6385 IS
6386 TYPE transaction_table_type IS TABLE OF
6387 mtl_system_items_interface.transaction_type%TYPE
6388 INDEX BY BINARY_INTEGER;
6389
6390 transaction_table transaction_table_type;
6391 l_item_err_table EGO_VARCHAR_TBL_TYPE;
6392 l_rev_err_table EGO_VARCHAR_TBL_TYPE;
6393 l_uda_err_table EGO_VARCHAR_TBL_TYPE;
6394 BEGIN
6395
6396 BEGIN
6397 SELECT error_message BULK COLLECT INTO l_item_err_table
6398 FROM mtl_interface_errors
6399 WHERE transaction_id IN ( SELECT transaction_id
6400 FROM mtl_system_items_interface
6401 WHERE set_process_id = p_batch_id
6402 AND process_flag = 3);
6403 EXCEPTION
6404 WHEN no_data_found THEN
6405 null;
6406 END;
6407
6408 BEGIN
6409 SELECT error_message BULK COLLECT INTO l_rev_err_table
6410 FROM mtl_interface_errors
6411 WHERE transaction_id IN ( SELECT transaction_id
6412 FROM mtl_item_revisions_interface
6413 WHERE set_process_id = p_batch_id
6414 AND process_flag = 3);
6415 EXCEPTION
6416 WHEN no_data_found THEN
6417 null;
6418 END;
6419
6420 BEGIN
6421 SELECT error_message BULK COLLECT INTO l_uda_err_table
6422 FROM mtl_interface_errors
6423 WHERE transaction_id IN ( SELECT transaction_id
6424 FROM EGO_ITM_USR_ATTR_INTRFC
6425 WHERE data_set_id = p_batch_id
6426 AND process_status = 3);
6427 EXCEPTION
6428 WHEN no_data_found THEN
6429 null;
6430 END;
6431
6432 x_item_err_table := l_item_err_table;
6433 x_rev_err_table := l_rev_err_table;
6434 x_uda_err_table := l_uda_err_table;
6435 EXCEPTION
6436 WHEN others THEN
6437 null;
6438 END get_interface_errors;
6439
6440 /*
6441 * This method will stale out all the rows in batch
6442 * that are not latest for enabled_for_data_pool batches
6443 */
6444 PROCEDURE Validate_Timestamp_In_Batch(retcode OUT NOCOPY VARCHAR2,
6445 errbuf OUT NOCOPY VARCHAR2,
6446 p_batch_id IN NUMBER)
6447 IS
6448 l_item_master_dl_id NUMBER;
6449 l_enabled_for_data_pool VARCHAR2(1);
6450 l_item_detail_tbl ITEM_DETAIL_TBL;
6451 l_user_id NUMBER := FND_GLOBAL.USER_ID;
6452 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
6453 l_prog_appid NUMBER := FND_GLOBAL.PROG_APPL_ID;
6454 l_prog_id NUMBER := FND_GLOBAL.CONC_PROGRAM_ID;
6455 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
6456 l_ret_code VARCHAR2(10);
6457 l_err_buf VARCHAR2(4000);
6458 BEGIN
6459 Debug_Conc_Log('Validate_Timestamp_In_Batch: Starting p_batch_id='||p_batch_id);
6460 BEGIN
6461 SELECT NVL(ENABLED_FOR_DATA_POOL, 'N') INTO l_enabled_for_data_pool
6462 FROM EGO_IMPORT_OPTION_SETS
6463 WHERE BATCH_ID = p_batch_id;
6464 EXCEPTION WHEN OTHERS THEN
6465 Debug_Conc_Log('Validate_Timestamp_In_Batch: exception='||SQLERRM);
6466 RETCODE := '0';
6467 ERRBUF := NULL;
6468 RETURN;
6469 END;
6470
6471 Debug_Conc_Log('Validate_Timestamp_In_Batch: l_enabled_for_data_pool='||l_enabled_for_data_pool);
6472 IF l_enabled_for_data_pool = 'N' THEN
6473 RETCODE := '0';
6474 ERRBUF := NULL;
6475 Debug_Conc_Log('Validate_Timestamp_In_Batch: Done');
6476 RETURN;
6477 END IF;
6478
6479 BEGIN
6480 SELECT DATA_LEVEL_ID INTO l_item_master_dl_id
6481 FROM EGO_DATA_LEVEL_B
6482 WHERE ATTR_GROUP_TYPE = 'EGO_MASTER_ITEMS'
6483 AND APPLICATION_ID = 431
6484 AND DATA_LEVEL_NAME = 'ITEM_ORG';
6485 EXCEPTION WHEN NO_DATA_FOUND THEN
6486 Debug_Conc_Log('Validate_Timestamp_In_Batch: No data found for EGO_MASTER_ITEMS');
6487 RETCODE := '0';
6488 ERRBUF := NULL;
6489 RETURN;
6490 END;
6491
6492 Debug_Conc_Log('Validate_Timestamp_In_Batch: l_item_master_dl_id='||l_item_master_dl_id);
6493 UPDATE MTL_SYSTEM_ITEMS_INTERFACE msii
6494 SET PROCESS_FLAG = 14
6495 WHERE SET_PROCESS_ID = p_batch_id
6496 AND PROCESS_FLAG = 4
6497 AND BUNDLE_ID = (SELECT MAX(BUNDLE_ID) KEEP (DENSE_RANK FIRST ORDER BY MESSAGE_TIMESTAMP DESC )
6498 FROM MTL_SYSTEM_ITEMS_INTERFACE msii2
6499 WHERE msii2.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
6500 AND msii2.ORGANIZATION_ID = msii.ORGANIZATION_ID
6501 AND msii2.SET_PROCESS_ID = msii.SET_PROCESS_ID
6502 AND msii2.PROCESS_FLAG = msii.PROCESS_FLAG
6503 );
6504
6505 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated MSII to 14, rowcount='||SQL%ROWCOUNT);
6506 UPDATE MTL_SYSTEM_ITEMS_INTERFACE msii
6507 SET PROCESS_FLAG = DECODE(PROCESS_FLAG, 4, 16, 4)
6508 WHERE SET_PROCESS_ID = p_batch_id
6509 AND PROCESS_FLAG IN ( 4, 14 );
6510
6511 UPDATE MTL_ITEM_REVISIONS_INTERFACE miri
6512 SET PROCESS_FLAG = 6,
6513 REQUEST_ID = l_request_id,
6514 PROGRAM_ID = l_prog_id,
6515 PROGRAM_APPLICATION_ID = l_prog_appid,
6516 LAST_UPDATE_DATE = SYSDATE,
6517 LAST_UPDATED_BY = l_user_id
6518 WHERE SET_PROCESS_ID = p_batch_id
6519 AND PROCESS_FLAG = 1
6520 AND ROWID <> (SELECT MIN(miri2.ROWID)
6521 FROM MTL_SYSTEM_ITEMS_INTERFACE msii, MTL_ITEM_REVISIONS_INTERFACE miri2
6522 WHERE msii.INVENTORY_ITEM_ID = miri2.INVENTORY_ITEM_ID
6523 AND msii.ORGANIZATION_ID = miri2.ORGANIZATION_ID
6524 AND msii.SET_PROCESS_ID = miri2.SET_PROCESS_ID
6525 AND msii.SET_PROCESS_ID = miri.SET_PROCESS_ID
6526 AND msii.INVENTORY_ITEM_ID = miri.INVENTORY_ITEM_ID
6527 AND msii.ORGANIZATION_ID = miri.ORGANIZATION_ID
6528 AND msii.PROCESS_FLAG = 16
6529 AND miri2.PROCESS_FLAG = 1
6530 AND msii.TRANSACTION_TYPE = 'CREATE'
6531 AND miri2.TRANSACTION_TYPE = 'CREATE'
6532 );
6533
6534 l_item_detail_tbl := NULL;
6535
6536 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated MSII to 16,4, rowcount='||SQL%ROWCOUNT);
6537
6538 UPDATE EGO_ITM_USR_ATTR_INTRFC eiuai
6539 SET PROCESS_STATUS = 6,
6540 REQUEST_ID = l_request_id,
6541 PROGRAM_ID = l_prog_id,
6542 PROGRAM_APPLICATION_ID = l_prog_appid,
6543 LAST_UPDATE_DATE = SYSDATE,
6544 LAST_UPDATED_BY = l_user_id
6545 WHERE DATA_SET_ID = p_batch_id
6546 AND PROCESS_STATUS = 2
6547 AND EXISTS (SELECT NULL
6548 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
6549 WHERE msii.SET_PROCESS_ID = eiuai.DATA_SET_ID
6550 AND msii.PROCESS_FLAG = 16
6551 AND eiuai.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
6552 AND eiuai.ORGANIZATION_ID = msii.ORGANIZATION_ID
6553 AND eiuai.BUNDLE_ID = msii.BUNDLE_ID
6554 )
6555 RETURNING
6556 TRANSACTION_ID,
6557 INVENTORY_ITEM_ID,
6558 ORGANIZATION_ID,
6559 ITEM_NUMBER,
6560 SOURCE_SYSTEM_REFERENCE,
6561 SOURCE_SYSTEM_ID,
6562 DATA_LEVEL_ID,
6563 PK1_VALUE,
6564 PK2_VALUE,
6565 PROCESS_STATUS
6566 BULK COLLECT INTO l_item_detail_tbl;
6567
6568 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated EGO_ITM_USR_ATTR_INTRFC rowcount='||SQL%ROWCOUNT);
6569 IF l_item_detail_tbl IS NOT NULL THEN
6570 Debug_Conc_Log('Validate_Timestamp_In_Batch: Logging errors for EGO_ITM_USR_ATTR_INTRFC');
6571 Log_Error_For_Timestamp_Val(RETCODE => l_ret_code,
6572 ERRBUF => l_err_buf,
6573 p_item_detail_tbl => l_item_detail_tbl,
6574 p_show_prod_timestemp => FALSE,
6575 p_intf_table_name => 'EGO_ITM_USR_ATTR_INTRFC',
6576 p_user_id => l_user_id,
6577 p_login_id => l_login_id,
6578 p_prog_appid => l_prog_appid,
6579 p_prog_id => l_prog_id,
6580 p_req_id => l_request_id
6581 );
6582 Debug_Conc_Log('Validate_Timestamp_In_Batch: Done Logging errors with l_ret_code,l_err_buf='||l_ret_code||','||l_err_buf);
6583 END IF;
6584
6585 l_item_detail_tbl := NULL;
6586
6587 UPDATE EGO_ITEM_ASSOCIATIONS_INTF eiai
6588 SET PROCESS_FLAG = 6,
6589 REQUEST_ID = l_request_id,
6590 PROGRAM_ID = l_prog_id,
6591 PROGRAM_APPLICATION_ID = l_prog_appid,
6592 LAST_UPDATE_DATE = SYSDATE,
6593 LAST_UPDATED_BY = l_user_id
6594 WHERE BATCH_ID = p_batch_id
6595 AND PROCESS_FLAG = 1
6596 AND EXISTS (SELECT NULL
6597 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
6598 WHERE msii.SET_PROCESS_ID = eiai.BATCH_ID
6599 AND msii.PROCESS_FLAG = 16
6600 AND eiai.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
6601 AND eiai.ORGANIZATION_ID = msii.ORGANIZATION_ID
6602 AND eiai.BUNDLE_ID = msii.BUNDLE_ID
6603 )
6604 RETURNING
6605 TRANSACTION_ID,
6606 INVENTORY_ITEM_ID,
6607 ORGANIZATION_ID,
6608 ITEM_NUMBER,
6609 SOURCE_SYSTEM_REFERENCE,
6610 SOURCE_SYSTEM_ID,
6611 DATA_LEVEL_ID,
6612 PK1_VALUE,
6613 PK2_VALUE,
6614 PROCESS_FLAG
6615 BULK COLLECT INTO l_item_detail_tbl;
6616
6617 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated EGO_ITEM_ASSOCIATIONS_INTF rowcount='||SQL%ROWCOUNT);
6618 IF l_item_detail_tbl IS NOT NULL THEN
6619 Debug_Conc_Log('Validate_Timestamp_In_Batch: Logging errors for EGO_ITEM_ASSOCIATIONS_INTF');
6620 Log_Error_For_Timestamp_Val(RETCODE => l_ret_code,
6621 ERRBUF => l_err_buf,
6622 p_item_detail_tbl => l_item_detail_tbl,
6623 p_show_prod_timestemp => FALSE,
6624 p_intf_table_name => 'EGO_ITEM_ASSOCIATIONS_INTF',
6625 p_user_id => l_user_id,
6626 p_login_id => l_login_id,
6627 p_prog_appid => l_prog_appid,
6628 p_prog_id => l_prog_id,
6629 p_req_id => l_request_id
6630 );
6631 Debug_Conc_Log('Validate_Timestamp_In_Batch: Done Logging errors with l_ret_code,l_err_buf='||l_ret_code||','||l_err_buf);
6632 END IF;
6633
6634 l_item_detail_tbl := NULL;
6635
6636 UPDATE MTL_ITEM_CATEGORIES_INTERFACE mici
6637 SET PROCESS_FLAG = 6,
6638 REQUEST_ID = l_request_id,
6639 PROGRAM_ID = l_prog_id,
6640 PROGRAM_APPLICATION_ID = l_prog_appid,
6641 LAST_UPDATE_DATE = SYSDATE,
6642 LAST_UPDATED_BY = l_user_id
6643 WHERE SET_PROCESS_ID = p_batch_id
6644 AND PROCESS_FLAG = 1
6645 AND EXISTS (SELECT NULL
6646 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
6647 WHERE msii.SET_PROCESS_ID = mici.SET_PROCESS_ID
6648 AND msii.PROCESS_FLAG = 16
6649 AND mici.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
6650 AND mici.ORGANIZATION_ID = msii.ORGANIZATION_ID
6651 AND mici.BUNDLE_ID = msii.BUNDLE_ID
6652 );
6653
6654 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated MTL_ITEM_CATEGORIES_INTERFACE rowcount='||SQL%ROWCOUNT);
6655 UPDATE BOM_BILL_OF_MTLS_INTERFACE bbmi
6656 SET PROCESS_FLAG = 6,
6657 REQUEST_ID = l_request_id,
6658 PROGRAM_ID = l_prog_id,
6659 PROGRAM_APPLICATION_ID = l_prog_appid,
6660 LAST_UPDATE_DATE = SYSDATE,
6661 LAST_UPDATED_BY = l_user_id
6662 WHERE BATCH_ID = p_batch_id
6663 AND PROCESS_FLAG = 1
6664 AND EXISTS (SELECT NULL
6665 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
6666 WHERE msii.SET_PROCESS_ID = bbmi.BATCH_ID
6667 AND msii.PROCESS_FLAG = 16
6668 AND bbmi.ASSEMBLY_ITEM_ID = msii.INVENTORY_ITEM_ID
6669 AND bbmi.ORGANIZATION_ID = msii.ORGANIZATION_ID
6670 AND bbmi.BUNDLE_ID = msii.BUNDLE_ID
6671 );
6672
6673 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated BOM_BILL_OF_MTLS_INTERFACE rowcount='||SQL%ROWCOUNT);
6674 UPDATE BOM_INVENTORY_COMPS_INTERFACE bici
6675 SET PROCESS_FLAG = 6,
6676 REQUEST_ID = l_request_id,
6677 PROGRAM_ID = l_prog_id,
6678 PROGRAM_APPLICATION_ID = l_prog_appid,
6679 LAST_UPDATE_DATE = SYSDATE,
6680 LAST_UPDATED_BY = l_user_id
6681 WHERE BATCH_ID = p_batch_id
6682 AND PROCESS_FLAG = 1
6683 AND EXISTS (SELECT NULL
6684 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
6685 WHERE msii.SET_PROCESS_ID = bici.BATCH_ID
6686 AND msii.PROCESS_FLAG = 16
6687 AND bici.COMPONENT_ITEM_ID = msii.INVENTORY_ITEM_ID
6688 AND bici.ORGANIZATION_ID = msii.ORGANIZATION_ID
6689 AND bici.BUNDLE_ID = msii.BUNDLE_ID
6690 );
6691
6692 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated BOM_INVENTORY_COMPS_INTERFACE rowcount='||SQL%ROWCOUNT);
6693
6694 UPDATE MTL_SYSTEM_ITEMS_INTERFACE msii
6695 SET PROCESS_FLAG = 6,
6696 REQUEST_ID = l_request_id,
6697 PROGRAM_ID = l_prog_id,
6698 PROGRAM_APPLICATION_ID = l_prog_appid,
6699 LAST_UPDATE_DATE = SYSDATE,
6700 LAST_UPDATED_BY = l_user_id
6701 WHERE SET_PROCESS_ID = p_batch_id
6702 AND PROCESS_FLAG = 16
6703 RETURNING
6704 TRANSACTION_ID,
6705 INVENTORY_ITEM_ID,
6706 ORGANIZATION_ID,
6707 ITEM_NUMBER,
6708 SOURCE_SYSTEM_REFERENCE,
6709 SOURCE_SYSTEM_ID,
6710 l_item_master_dl_id,
6711 -1,
6712 -1,
6713 PROCESS_FLAG
6714 BULK COLLECT INTO l_item_detail_tbl;
6715
6716 Debug_Conc_Log('Validate_Timestamp_In_Batch: Updated MSII to 6, rowcount='||SQL%ROWCOUNT);
6717 IF l_item_detail_tbl IS NOT NULL THEN
6718 Debug_Conc_Log('Validate_Timestamp_In_Batch: Logging errors for MTL_SYSTEM_ITEMS_INTERFACE');
6719 Log_Error_For_Timestamp_Val(RETCODE => l_ret_code,
6720 ERRBUF => l_err_buf,
6721 p_item_detail_tbl => l_item_detail_tbl,
6722 p_show_prod_timestemp => FALSE,
6723 p_intf_table_name => 'MTL_SYSTEM_ITEMS_INTERFACE',
6724 p_user_id => l_user_id,
6725 p_login_id => l_login_id,
6726 p_prog_appid => l_prog_appid,
6727 p_prog_id => l_prog_id,
6728 p_req_id => l_request_id
6729 );
6730 Debug_Conc_Log('Validate_Timestamp_In_Batch: Done Logging errors with l_ret_code,l_err_buf='||l_ret_code||','||l_err_buf);
6731 END IF;
6732
6733 COMMIT;
6734 RETCODE := '0';
6735 ERRBUF := NULL;
6736 Debug_Conc_Log('Validate_Timestamp_In_Batch: Done Successfully');
6737 EXCEPTION WHEN OTHERS THEN
6738 RETCODE := '2';
6739 ERRBUF := SQLERRM;
6740 Debug_Conc_Log('Validate_Timestamp_In_Batch: Error - '||SQLERRM);
6741 END Validate_Timestamp_In_Batch;
6742
6743
6744 PROCEDURE Update_Timestamp_In_Prod(retcode OUT NOCOPY VARCHAR2,
6745 errbuf OUT NOCOPY VARCHAR2,
6746 p_batch_id IN NUMBER)
6747 IS
6748 l_item_master_dl_id NUMBER;
6749 l_enabled_for_data_pool VARCHAR2(1);
6750 l_user_id NUMBER := FND_GLOBAL.USER_ID;
6751 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
6752 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
6753 BEGIN
6754 Debug_Conc_Log('Update_Timestamp_In_Prod: Starting p_batch_id='||p_batch_id);
6755 BEGIN
6756 SELECT NVL(ENABLED_FOR_DATA_POOL, 'N') INTO l_enabled_for_data_pool
6757 FROM EGO_IMPORT_OPTION_SETS
6758 WHERE BATCH_ID = p_batch_id;
6759 EXCEPTION WHEN OTHERS THEN
6760 Debug_Conc_Log('Update_Timestamp_In_Prod: exception='||SQLERRM);
6761 RETCODE := '0';
6762 ERRBUF := NULL;
6763 RETURN;
6764 END;
6765
6766 Debug_Conc_Log('Update_Timestamp_In_Prod: l_enabled_for_data_pool='||l_enabled_for_data_pool);
6767 IF l_enabled_for_data_pool = 'N' THEN
6768 RETCODE := '0';
6769 ERRBUF := NULL;
6770 Debug_Conc_Log('Update_Timestamp_In_Prod: Done');
6771 RETURN;
6772 END IF;
6773
6774 BEGIN
6775 SELECT DATA_LEVEL_ID INTO l_item_master_dl_id
6776 FROM EGO_DATA_LEVEL_B
6777 WHERE ATTR_GROUP_TYPE = 'EGO_MASTER_ITEMS'
6778 AND APPLICATION_ID = 431
6779 AND DATA_LEVEL_NAME = 'ITEM_ORG';
6780 EXCEPTION WHEN NO_DATA_FOUND THEN
6781 Debug_Conc_Log('Update_Timestamp_In_Prod: No data found for EGO_MASTER_ITEMS');
6782 RETCODE := '0';
6783 ERRBUF := NULL;
6784 RETURN;
6785 END;
6786
6787 Debug_Conc_Log('Update_Timestamp_In_Prod: l_item_master_dl_id='||l_item_master_dl_id);
6788 MERGE INTO EGO_INBOUND_MSG_EXT eime
6789 USING ( SELECT
6790 SOURCE_SYSTEM_ID,
6791 l_item_master_dl_id AS DATA_LEVEL_ID,
6792 INVENTORY_ITEM_ID,
6793 ORGANIZATION_ID,
6794 NULL AS SUPPLIER_ID,
6795 NULL AS SUPPLIER_SITE_ID,
6796 MAX(MESSAGE_TIMESTAMP) AS MESSAGE_TIMESTAMP
6797 FROM MTL_SYSTEM_ITEMS_INTERFACE
6798 WHERE SET_PROCESS_ID = p_batch_id
6799 AND PROCESS_FLAG = 7
6800 AND REQUEST_ID = l_request_id
6801 GROUP BY SOURCE_SYSTEM_ID, l_item_master_dl_id, INVENTORY_ITEM_ID, ORGANIZATION_ID
6802 UNION ALL
6803 SELECT
6804 eiuai.SOURCE_SYSTEM_ID,
6805 eiuai.DATA_LEVEL_ID,
6806 eiuai.INVENTORY_ITEM_ID,
6807 eiuai.ORGANIZATION_ID,
6808 eiuai.PK1_VALUE AS SUPPLIER_ID,
6809 eiuai.PK2_VALUE AS SUPPLIER_SITE_ID,
6810 MAX(msii.MESSAGE_TIMESTAMP) AS MESSAGE_TIMESTAMP
6811 FROM EGO_ITM_USR_ATTR_INTRFC eiuai, MTL_SYSTEM_ITEMS_INTERFACE msii
6812 WHERE eiuai.DATA_SET_ID = p_batch_id
6813 AND eiuai.PROCESS_STATUS = 4
6814 AND eiuai.REQUEST_ID = l_request_id
6815 AND msii.SET_PROCESS_ID = eiuai.DATA_SET_ID
6816 AND msii.INVENTORY_ITEM_ID = eiuai.INVENTORY_ITEM_ID
6817 AND msii.ORGANIZATION_ID = eiuai.ORGANIZATION_ID
6818 AND msii.BUNDLE_ID = eiuai.BUNDLE_ID
6819 GROUP BY eiuai.SOURCE_SYSTEM_ID, eiuai.DATA_LEVEL_ID, eiuai.INVENTORY_ITEM_ID, eiuai.ORGANIZATION_ID, eiuai.PK1_VALUE, eiuai.PK2_VALUE
6820 ) intf
6821 ON ( eime.SOURCE_SYSTEM_ID = intf.SOURCE_SYSTEM_ID
6822 AND eime.DATA_LEVEL_ID = intf.DATA_LEVEL_ID
6823 AND eime.INVENTORY_ITEM_ID = intf.INVENTORY_ITEM_ID
6824 AND eime.ORGANIZATION_ID = intf.ORGANIZATION_ID
6825 AND NVL(eime.SUPPLIER_ID, -1) = NVL(intf.SUPPLIER_ID, -1)
6826 AND NVL(eime.SUPPLIER_SITE_ID, -1) = NVL(intf.SUPPLIER_SITE_ID, -1)
6827 )
6828 WHEN MATCHED THEN
6829 UPDATE SET LAST_MESSAGE_TIMESTAMP = intf.MESSAGE_TIMESTAMP,
6830 LAST_UPDATE_DATE = SYSDATE,
6831 LAST_UPDATED_BY = l_user_id
6832 WHEN NOT MATCHED THEN
6833 INSERT
6834 (
6835 INVENTORY_ITEM_ID,
6836 ORGANIZATION_ID,
6837 SOURCE_SYSTEM_ID,
6838 DATA_LEVEL_ID,
6839 SUPPLIER_ID,
6840 SUPPLIER_SITE_ID,
6841 LAST_MESSAGE_TIMESTAMP,
6842 CREATION_DATE,
6843 CREATED_BY,
6844 LAST_UPDATE_DATE,
6845 LAST_UPDATED_BY,
6846 LAST_UPDATE_LOGIN
6847 )
6848 VALUES
6849 (
6850 intf.INVENTORY_ITEM_ID,
6851 intf.ORGANIZATION_ID,
6852 intf.SOURCE_SYSTEM_ID,
6853 intf.DATA_LEVEL_ID,
6854 intf.SUPPLIER_ID,
6855 intf.SUPPLIER_SITE_ID,
6856 intf.MESSAGE_TIMESTAMP,
6857 SYSDATE,
6858 l_user_id,
6859 SYSDATE,
6860 l_user_id,
6861 l_login_id
6862 );
6863
6864 Debug_Conc_Log('Update_Timestamp_In_Prod: Done merging');
6865 COMMIT;
6866 RETCODE := '0';
6867 ERRBUF := NULL;
6868 Debug_Conc_Log('Update_Timestamp_In_Prod: Done Successfully');
6869 EXCEPTION WHEN OTHERS THEN
6870 RETCODE := '2';
6871 ERRBUF := SQLERRM;
6872 Debug_Conc_Log('Update_Timestamp_In_Prod: Error - '||SQLERRM);
6873 END Update_Timestamp_In_Prod;
6874
6875
6876 PROCEDURE Copy_Attachments ( retcode OUT NOCOPY VARCHAR2,
6877 errbuf OUT NOCOPY VARCHAR2,
6878 p_batch_id IN NUMBER )
6879 IS
6880 CURSOR attach_id_cur IS
6881 SELECT DISTINCT ATTACH_CATEGORY_ID
6882 FROM EGO_IMPORT_COPY_OPTIONS
6883 WHERE COPY_OPTION = 'COPY_ATTCH_CATEGORY'
6884 AND BATCH_ID = p_batch_id;
6885
6886 CURSOR interface_items_cur IS
6887 SELECT msii.ORGANIZATION_ID AS DEST_ORG_ID,
6888 msii.INVENTORY_ITEM_ID AS DEST_ITEM_ID,
6889 msii.COPY_ORGANIZATION_ID AS SOURCE_ORG_ID,
6890 msii.COPY_ITEM_ID AS SOURCE_ITEM_ID
6891 FROM MTL_SYSTEM_ITEMS_INTERFACE msii,
6892 MTL_PARAMETERS mp
6893 WHERE msii.SET_PROCESS_ID = p_batch_id
6894 AND msii.PROCESS_FLAG = 7
6895 AND msii.TRANSACTION_TYPE = 'CREATE'
6896 AND msii.REQUEST_ID = FND_GLOBAL.CONC_REQUEST_ID
6897 AND msii.ORGANIZATION_ID = mp.ORGANIZATION_ID
6898 AND mp.ORGANIZATION_ID = mp.MASTER_ORGANIZATION_ID
6899 AND ( msii.STYLE_ITEM_FLAG = 'Y'
6900 OR msii.STYLE_ITEM_FLAG IS NULL );
6901
6902 l_to_attachment_id NUMBER;
6903 BEGIN
6904 Debug_Conc_Log('Copy_Attachments Begin --- ');
6905 FOR item_row IN interface_items_cur
6906 LOOP
6907 Debug_Conc_Log ('Copy_Attachments - Copying following AttachmentIds from ItemID/OrgId:' ||
6908 item_row.SOURCE_ITEM_ID || '/' || item_row.SOURCE_ORG_ID ||
6909 ' To ItemId/OrgId:' || item_row.DEST_ITEM_ID || '/' || item_row.DEST_ORG_ID);
6910 FOR attach_row IN attach_id_cur
6911 LOOP
6912 Debug_Conc_Log('Copy_Attachments - Copying Attachment with CategoryId : '|| attach_row.ATTACH_CATEGORY_ID);
6913 dom_attachment_util_pkg.copy_attachments(
6914 X_from_entity_name => 'MTL_SYSTEM_ITEMS'
6915 , X_from_pk1_value => item_row.SOURCE_ORG_ID -- SourceOrganizationId
6916 , X_from_pk2_value => item_row.SOURCE_ITEM_ID -- SourceItemId
6917 , X_to_attachment_id => l_to_attachment_id -- to Attachment Id
6918 , X_to_entity_name => 'MTL_SYSTEM_ITEMS'
6919 , X_to_pk1_value => item_row.DEST_ORG_ID -- DestOrgId
6920 , X_to_pk2_value => item_row.DEST_ITEM_ID -- DestItemId
6921 , X_from_category_id => attach_row.ATTACH_CATEGORY_ID
6922 );
6923 END LOOP;
6924 Debug_Conc_Log('Copy_Attachments - Attachment created with attachment Id : '|| l_to_attachment_id );
6925 END LOOP;
6926 COMMIT;
6927 RETCODE := '0';
6928 ERRBUF := NULL;
6929 Debug_Conc_Log('Copy_Attachments End ;');
6930 EXCEPTION WHEN OTHERS THEN
6931 RETCODE := '2';
6932 ERRBUF := SQLERRM;
6933 Debug_Conc_Log('Copy_Attachments : Error - '||SQLERRM);
6934 END Copy_Attachments;
6935
6936 /*
6937 * This method is called at the end of import processing.
6938 * If any SKUs are created in EGO_SKU_VARIANT_ATTR_USAGES table
6939 * but corresponding variant attributes are not present in
6940 * production table, then delete that entry.
6941 */
6942 PROCEDURE Clean_Dirty_SKUs( retcode OUT NOCOPY VARCHAR2,
6943 errbuf OUT NOCOPY VARCHAR2,
6944 p_batch_id IN NUMBER )
6945 IS
6946 l_item_dl_id NUMBER;
6947 l_item_object_id NUMBER;
6948 l_request_id NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
6949 BEGIN
6950 Debug_Conc_Log('Clean_Dirty_SKUs : Starting ');
6951 SELECT OBJECT_ID INTO l_item_object_id
6952 FROM FND_OBJECTS
6953 WHERE OBJ_NAME = 'EGO_ITEM';
6954
6955 Debug_Conc_Log('Clean_Dirty_SKUs : Object_id='||l_item_object_id);
6956
6957 SELECT DATA_LEVEL_ID INTO l_item_dl_id
6958 FROM EGO_DATA_LEVEL_B
6959 WHERE ATTR_GROUP_TYPE = 'EGO_ITEMMGMT_GROUP'
6960 AND APPLICATION_ID = 431
6961 AND DATA_LEVEL_NAME = 'ITEM_LEVEL';
6962
6963 Debug_Conc_Log('Clean_Dirty_SKUs : l_item_dl_id='||l_item_dl_id);
6964
6965 DELETE FROM EGO_SKU_VARIANT_ATTR_USAGES esvas
6966 WHERE EXISTS (SELECT NULL
6967 FROM
6968 EGO_FND_DSC_FLX_CTX_EXT ag_ext,
6969 EGO_OBJ_AG_ASSOCS_B assoc,
6970 MTL_SYSTEM_ITEMS_INTERFACE msii
6971 WHERE msii.INVENTORY_ITEM_ID = esvas.SKU_ITEM_ID
6972 AND msii.STYLE_ITEM_ID = esvas.STYLE_ITEM_ID
6973 AND msii.ORGANIZATION_ID = esvas.ORGANIZATION_ID
6974 AND msii.SET_PROCESS_ID = p_batch_id
6975 AND msii.REQUEST_ID = l_request_id
6976 AND msii.STYLE_ITEM_FLAG = 'N'
6977 AND ag_ext.VARIANT = 'Y'
6978 AND assoc.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
6979 AND assoc.CLASSIFICATION_CODE = TO_CHAR(msii.ITEM_CATALOG_GROUP_ID)
6980 AND assoc.OBJECT_ID = l_item_object_id
6981 AND assoc.DATA_LEVEL_ID = l_item_dl_id
6982 AND NOT EXISTS (SELECT NULL
6983 FROM EGO_MTL_SY_ITEMS_EXT_B ext
6984 WHERE ext.ORGANIZATION_ID = msii.ORGANIZATION_ID
6985 AND ext.INVENTORY_ITEM_ID = msii.INVENTORY_ITEM_ID
6986 AND ext.ATTR_GROUP_ID = ag_ext.ATTR_GROUP_ID
6987 AND ext.DATA_LEVEL_ID = assoc.DATA_LEVEL_ID
6988 )
6989 );
6990
6991 Debug_Conc_Log('Clean_Dirty_SKUs: Deleted '||SQL%ROWCOUNT||' rows.');
6992 RETCODE := '0';
6993 ERRBUF := NULL;
6994 Debug_Conc_Log('Clean_Dirty_SKUs End ;');
6995 EXCEPTION WHEN OTHERS THEN
6996 RETCODE := '2';
6997 ERRBUF := SQLERRM;
6998 Debug_Conc_Log('Clean_Dirty_SKUs : Error - '||SQLERRM);
6999 END Clean_Dirty_SKUs;
7000
7001 PROCEDURE check_for_duplicates(p_batch_id IN NUMBER,
7002 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE) IS
7003
7004 CURSOR Items_in_batch(p_batch_id NUMBER) is
7005 select UNIQUE SOURCE_SYSTEM_REFERENCE
7006 from MTL_SYSTEM_ITEMS_INTERFACE msii
7007 WHERE PROCESS_FLAG = 0
7008 AND SET_PROCESS_ID = p_batch_id
7009 AND ORGANIZATION_ID IS NOT NULL;
7010
7011 CURSOR Check_Duplicates_in_batch(p_batch_id NUMBER,source_system_ref_check varchar2) is
7012 select RANK() OVER ( ORDER BY ATTR_VALUE_DATE desc
7013 )rnk, transaction_id,bundle_id
7014 from EGO_ITM_USR_ATTR_INTRFC where transaction_id IN(SELECT transaction_id
7015 FROM
7016 ( SELECT
7017 msii.transaction_id
7018 FROM MTL_SYSTEM_ITEMS_INTERFACE msii
7019 WHERE PROCESS_FLAG = 0
7020 AND SET_PROCESS_ID = p_batch_id
7021 AND SOURCE_SYSTEM_REFERENCE =source_system_ref_check
7022 AND ORGANIZATION_ID IS NOT NULL
7023 )
7024 ) and ATTR_GROUP_INT_NAME = 'ORDERING_INFO' and ATTR_INT_NAME='LAST_MODIFIED_DATE'order by ATTR_VALUE_DATE desc;
7025
7026
7027
7028 BEGIN
7029
7030 for I1 in Items_in_batch(p_batch_id) loop
7031
7032
7033 -- Outer loop to get all unique unprocessed rows in msii
7034
7035 for I2 in Check_Duplicates_in_batch(p_batch_id,I1.SOURCE_SYSTEM_REFERENCE) loop
7036
7037 -- Inner loop to get all LAST_MODIFIED_DATE values for all unprocessed items
7038
7039
7040
7041 If Check_Duplicates_in_batch%ROWCOUNT>1 then
7042
7043 Debug_Conc_Log('Duplicates exist');
7044
7045 -- Duplicates exist so we go to BOM tables and delete as otherwise the Structure Import will fail due to duplicate structures in the interface table
7046
7047 delete FROM BOM_INVENTORY_COMPS_INTERFACE A
7048 WHERE exists (SELECT 'x' FROM BOM_INVENTORY_COMPS_INTERFACE B
7049 WHERE
7050 B.PARENT_SOURCE_SYSTEM_REFERENCE = A.PARENT_SOURCE_SYSTEM_REFERENCE
7051 and B.COMP_SOURCE_SYSTEM_REFERENCE = A.COMP_SOURCE_SYSTEM_REFERENCE
7052 and
7053 (B.OPERATION_SEQ_NUM = A.OPERATION_SEQ_NUM OR (B.OPERATION_SEQ_NUM IS NULL AND A.OPERATION_SEQ_NUM IS NULL))
7054 and
7055 (B.EFFECTIVITY_DATE= A.EFFECTIVITY_DATE OR (B.EFFECTIVITY_DATE IS NULL AND A.EFFECTIVITY_DATE IS NULL))
7056 and B.PROCESS_FLAG = A.PROCESS_FLAG
7057 and B.batch_id = A.batch_id -- fix for bug#9132730
7058 and B.rowid <> A.rowid)
7059 and A.process_flag=1
7060 and BATCH_ID=p_batch_id and ALTERNATE_BOM_DESIGNATOR = 'PIM_PBOM_S' and bundle_id = I2.bundle_id;
7061
7062
7063 delete FROM BOM_BILL_OF_MTLS_INTERFACE A
7064 WHERE
7065 exists (SELECT 'x' FROM BOM_BILL_OF_MTLS_INTERFACE B
7066 WHERE
7067 B.SOURCE_SYSTEM_REFERENCE = A.SOURCE_SYSTEM_REFERENCE
7068 and B.PROCESS_FLAG = A.PROCESS_FLAG
7069 and B.batch_id = A.batch_id -- fix for bug#9132730
7070 and A.rowid <> B.rowid
7071 )
7072 and A.process_flag=1
7073 and BATCH_ID=p_batch_id and ALTERNATE_BOM_DESIGNATOR = 'PIM_PBOM_S' and bundle_id = I2.bundle_id;
7074
7075
7076
7077 If I2.rnk=1 then
7078
7079 -- Exact copy of same item , we can delete it
7080
7081 delete from mtl_system_items_interface where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7082 delete from EGO_ITM_USR_ATTR_INTRFC where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7083 delete from EGO_ITEM_ASSOCIATIONS_INTF where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7084 delete from mtl_item_categories_interface where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7085
7086 else
7087
7088 -- As we have ordered by LAST_MODIFIED_DATE we can delete rows having rank >1
7089
7090
7091 delete from mtl_system_items_interface where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7092 delete from EGO_ITM_USR_ATTR_INTRFC where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7093 delete from EGO_ITEM_ASSOCIATIONS_INTF where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7094 delete from mtl_item_categories_interface where transaction_id = I2.transaction_id and SOURCE_SYSTEM_REFERENCE=I1.SOURCE_SYSTEM_REFERENCE;
7095
7096
7097 end if;
7098 else
7099
7100
7101 Debug_Conc_Log('No Duplicates exist');
7102 -- No duplicates exist
7103
7104 end if;
7105
7106 end loop;
7107 end loop;
7108
7109
7110 EXCEPTION WHEN OTHERS THEN
7111 Debug_Conc_Log( 'Error - ' || SQLERRM);
7112 IF Items_in_batch%ISOPEN THEN
7113 CLOSE Items_in_batch;
7114 END IF;
7115 IF Check_Duplicates_in_batch%ISOPEN THEN
7116 CLOSE Check_Duplicates_in_batch;
7117 END IF;
7118 RAISE;
7119
7120 END check_for_duplicates;
7121
7122
7123 END EGO_IMPORT_UTIL_PVT;