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