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