DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_IMPORT_UTIL_PVT

Source


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