DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_ORDER_EXTN_IMPORT_PVT

Source


1 PACKAGE  BODY OE_ORDER_EXTN_IMPORT_PVT as
2 /* $Header: OEXVIMEB.pls 120.0.12020000.4 2013/02/12 10:33:40 aparava noship $ */
3 
4 PROCEDURE IMPORT_ORDER_EXTN
5                 (ERRBUF         OUT NOCOPY  VARCHAR2
6                 ,RETCODE        OUT NOCOPY  NUMBER
7 		,p_data_set_id  IN          NUMBER
8                 )
9 IS
10 l_return_status           VARCHAR2(30000);
11 l_err_text                VARCHAR2(30000);
12 l_err_code                NUMBER;
13 l_msg_count               NUMBER;
14 l_rel_sql                 VARCHAR2(100);
15 l_data_set_id             NUMBER      := p_data_set_id;
16 l_header_id 	          NUMBER;
17 l_line_id	          NUMBER;
18 l_header_count	          NUMBER;
19 l_line_count	          NUMBER;
20 l_customer_key_profile    VARCHAR2(1) := 'N';
21 l_org_id                  NUMBER;
22 
23 CURSOR l_header_cur IS
24 SELECT header_id,
25        order_source_id,
26        orig_sys_document_ref,
27        sold_to_org_id,
28        org_id
29 FROM OE_HEADERS_EXT_IFACE_ALL
30     WHERE PROCESS_STATUS=1
31       AND DATA_SET_ID=l_data_set_id;
32 
33 CURSOR l_line_cur IS
34 SELECT line_id,
35        order_source_id,
36        orig_sys_document_ref,
37        orig_sys_line_ref,
38        orig_sys_shipment_ref,
39        sold_to_org_id,
40        org_id
41 FROM OE_LINES_EXT_IFACE_ALL
42     WHERE PROCESS_STATUS=1
43       AND DATA_SET_ID=l_data_set_id;
44 
45 
46 BEGIN
47 
48     FND_FILE.PUT_LINE(  FND_FILE.LOG,'Import_Order_Extn: BEGIN');
49     FND_FILE.PUT_LINE(  FND_FILE.LOG,'Data Set ID: ' ||p_data_set_id);
50 
51     l_rel_sql 		  := 'SELECT ''ADMIN_DEFINED'' FROM DUAL';
52 
53  IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110510' Then
54       fnd_profile.get('ONT_INCLUDE_CUST_IN_OI_KEY', l_customer_key_profile);
55       l_customer_key_profile := nvl(l_customer_key_profile, 'N');
56       FND_FILE.PUT_LINE( FND_FILE.LOG, 'CUSTOMER KEY PROFILE SETTING = '||l_customer_key_profile ) ;
57 
58       fnd_profile.get('DEFAULT_ORG_ID', l_org_id);
59       FND_FILE.PUT_LINE( FND_FILE.LOG, 'DEFAULT ORG ID = '||l_org_id ) ;
60       IF l_org_id IS NULL THEN
61         FND_FILE.PUT_LINE( FND_FILE.LOG, 'Unable to derive org_id from MO: Default Operating Unit. Please set the profile value.');
62         RAISE FND_API.G_EXC_ERROR;
63       END IF;
64 
65  END IF;
66 
67  FND_FILE.PUT_LINE( FND_FILE.LOG, 'Deriving Header_id from OE_ORDER_HEADERS_ALL...');
68  FOR i IN l_header_cur
69   LOOP
70    IF i.header_id IS NULL THEN
71      BEGIN
72       SELECT header_id INTO l_header_id
73            FROM oe_order_headers_all
74           WHERE order_source_id       = i.order_source_id
75             AND orig_sys_document_ref = i.orig_sys_document_ref
76             AND org_id = Nvl(i.org_id,l_org_id)
77             AND (sold_to_org_id is NULL OR decode(l_customer_key_profile, 'Y',nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
78                 = decode(l_customer_key_profile, 'Y',nvl(i.sold_to_org_id, FND_API.G_MISS_NUM), 1));
79       FND_FILE.PUT_LINE( FND_FILE.LOG, 'l_header_id : ' || l_header_id);
80      EXCEPTION
81         WHEN NO_DATA_FOUND THEN
82         l_header_id :=NULL;
83          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Unable to derive header_id for order_source_id :'||i.order_source_id
84                                           ||',' || 'orig_sys_document_ref : ' ||i.orig_sys_document_ref);
85      END;
86 
87     IF l_header_id IS NOT NULL THEN
88        UPDATE OE_HEADERS_EXT_IFACE_ALL
89                  SET PROCESS_STATUS = 2, HEADER_ID= l_header_id
90                  WHERE data_set_id  =  l_data_set_id
91                  AND PROCESS_STATUS = 1
92                  AND order_source_id       = i.order_source_id
93                  AND orig_sys_document_ref = i.orig_sys_document_ref
94                  AND (sold_to_org_id is NULL OR decode(l_customer_key_profile, 'Y',nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
95                      = decode(l_customer_key_profile, 'Y',nvl(i.sold_to_org_id, FND_API.G_MISS_NUM), 1));
96 
97     END IF;
98    ELSE
99       UPDATE OE_HEADERS_EXT_IFACE_ALL
100                  SET PROCESS_STATUS = 2
101                  WHERE data_set_id  =  l_data_set_id
102                  AND header_id = i.header_id
103                  AND PROCESS_STATUS = 1;
104    END IF;
105 
106   END LOOP ;
107 
108   BEGIN
109     SELECT COUNT(*) INTO l_header_count
110      FROM OE_HEADERS_EXT_IFACE_ALL
111       WHERE PROCESS_STATUS=2
112         AND HEADER_ID IS NOT NULL;
113   EXCEPTION
114       WHEN NO_DATA_FOUND THEN
115        l_header_count := NULL;
116   END;
117 
118   IF l_header_count = 0 THEN
119    FND_FILE.PUT_LINE( FND_FILE.LOG, 'NO records in OE_HEADERS_EXT_IFACE_ALL to process');
120   END IF;
121 
122   IF l_header_count > 0 THEN
123   FND_FILE.PUT_LINE( FND_FILE.LOG, 'Calling EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data to import OE_HEADERS_EXT_IFACE_ALL data');
124 
125   EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data
126    (    p_api_version                  => 1.0
127       , p_application_id               => 660
128       , p_attr_group_type              => 'OE_HEADER_ATTRIBUTES_EXT'
129       , p_object_name                  => 'OE_ORDER_HEADERS_ALL'
130       , p_hz_party_id                  => 'OPERATIONS:5877'
131       , p_interface_table_name         => 'OE_HEADERS_EXT_IFACE_ALL'
132       , p_data_set_id                  => l_data_set_id
133        ,p_related_class_codes_query    => l_rel_sql
134       , p_init_fnd_msg_list            => 'F'
135       , p_log_errors                   => 'T'
136       , p_add_errors_to_fnd_stack      => 'T'
137       , p_commit                       => 'F'
138       , p_validate                     => true
139       , p_do_dml                       => true
140       , x_return_status                => l_return_status
141       , x_errorcode                    => l_err_code
142       , x_msg_count                    => l_msg_count
143       , x_msg_data                     => l_err_text
144         );
145 
146         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_return_status after importing OE_HEADERS_EXT_IFACE_ALL : '||l_return_status);
147         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_err_code : '||l_err_code);
148         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_err_text : '||l_err_text);
149         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_msg_count : '||l_msg_count);
150 
151         IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
152             retcode := 0;
153             FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Sucessfully imported OE_HEADERS_EXT_IFACE_ALL data');
154         ELSIF  l_return_status = 'W' THEN
155             retcode := 1;
156             FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Warning while importing OE_HEADERS_EXT_IFACE_ALL');
157         ELSE
158             retcode := 2;
159             FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Error reported while importing OE_HEADERS_EXT_IFACE_ALL. Please fix the errors in this log file and re-run the concurrent program.');
160         END IF;
161 
162 
163         ERROR_HANDLER.Log_Error(
164             p_write_err_to_inttable         => 'Y'
165            ,p_write_err_to_conclog          => 'Y'
166            ,p_write_err_to_debugfile        => 'N'
167            );
168 
169          IF l_return_status = FND_API.G_RET_STS_SUCCESS OR l_return_status = 'W' THEN
170             DELETE FROM OE_HEADERS_EXT_IFACE_ALL
171                 WHERE data_set_id  = l_data_set_id
172                   AND PROCESS_STATUS = 2;
173             COMMIT;
174          END IF;
175   END IF;
176 
177  FND_FILE.PUT_LINE( FND_FILE.LOG, 'Deriving Line_id from OE_ORDER_LINES_ALL...');
178  FOR i IN l_line_cur
179   LOOP
180    IF i.line_id IS NULL THEN
181      BEGIN
182       SELECT line_id INTO l_line_id
183               FROM oe_order_lines_all
184              WHERE  order_source_id   = i.order_source_id
185                AND orig_sys_document_ref = i.orig_sys_document_ref
186 	       AND orig_sys_line_ref  = i.orig_sys_line_ref
187                AND NVL(orig_sys_shipment_ref,FND_API.G_MISS_CHAR) = NVL(i.orig_sys_shipment_ref,FND_API.G_MISS_CHAR)
188                AND org_id = Nvl(i.org_id,l_org_id)
189                AND (sold_to_org_id is NULL OR decode(l_customer_key_profile, 'Y', nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
190                    = decode(l_customer_key_profile, 'Y', nvl(i.sold_to_org_id, FND_API.G_MISS_NUM), 1));
191 
192      EXCEPTION
193         WHEN NO_DATA_FOUND THEN
194         l_line_id :=NULL;
195         FND_FILE.PUT_LINE(FND_FILE.LOG, 'Unable to derive line_id for order_source_id :'||i.order_source_id
196                                           ||',' || 'orig_sys_document_ref : ' ||i.orig_sys_document_ref
197                                           ||',' || 'orig_sys_line_ref : ' ||i.orig_sys_line_ref
198                                           ||',' || 'orig_sys_shipment_ref : ' ||i.orig_sys_shipment_ref);
199      END;
200 
201     IF l_line_id IS NOT NULL THEN
202        UPDATE OE_LINES_EXT_IFACE_ALL
203                  SET PROCESS_STATUS = 2, LINE_ID= l_line_id
204                  WHERE data_set_id  = l_data_set_id
205                  AND PROCESS_STATUS = 1
206                  AND order_source_id   = i.order_source_id
207 	         AND orig_sys_line_ref  = i.orig_sys_line_ref
208                  AND NVL(orig_sys_shipment_ref,FND_API.G_MISS_CHAR) = NVL(i.orig_sys_shipment_ref,FND_API.G_MISS_CHAR)
209                  AND (sold_to_org_id is NULL OR decode(l_customer_key_profile, 'Y', nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
210                      = decode(l_customer_key_profile, 'Y', nvl(i.sold_to_org_id, FND_API.G_MISS_NUM), 1));
211     END IF;
212    ELSE
213       UPDATE OE_LINES_EXT_IFACE_ALL
214                  SET PROCESS_STATUS = 2
215                  WHERE data_set_id  =  l_data_set_id
216                  AND line_id = i.line_id
217                  AND PROCESS_STATUS = 1;
218    END IF;
219 
220   END LOOP ;
221 
222  BEGIN
223     SELECT COUNT(*) INTO l_line_count
224      FROM OE_LINES_EXT_IFACE_ALL
225       WHERE PROCESS_STATUS=2
226         AND LINE_ID IS NOT NULL;
227   EXCEPTION
228       WHEN NO_DATA_FOUND THEN
229        l_line_count := NULL;
230  END;
231   IF l_line_count = 0 THEN
232    FND_FILE.PUT_LINE( FND_FILE.LOG, 'NO records in OE_LINES_EXT_IFACE_ALL to process');
233   END IF;
234 
235   IF l_line_count > 0 THEN
236 
237   FND_FILE.PUT_LINE( FND_FILE.LOG, 'Calling EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data to import OE_LINES_EXT_IFACE_ALL data');
238 
239   EGO_USER_ATTRS_BULK_PVT.Bulk_Load_User_Attrs_Data
240    (    p_api_version                  => 1.0
241       , p_application_id               => 660
242       , p_attr_group_type              => 'OE_LINE_ATTRIBUTES_EXT'
243       , p_object_name                  => 'OE_ORDER_LINES_ALL'
244       , p_hz_party_id                  => 'OPERATIONS:5877'
245       , p_interface_table_name         => 'OE_LINES_EXT_IFACE_ALL'
246       , p_data_set_id                  => l_data_set_id
247        ,p_related_class_codes_query    => l_rel_sql
248       , p_init_fnd_msg_list            => 'F'
249       , p_log_errors                   => 'T'
250       , p_add_errors_to_fnd_stack      => 'T'
251       , p_commit                       => 'F'
252       , p_validate                     => true
253       , p_do_dml                       => true
254       , x_return_status                => l_return_status
255       , x_errorcode                    => l_err_code
256       , x_msg_count                    => l_msg_count
257       , x_msg_data                     => l_err_text
258         );
259 
260         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_return_status after importing OE_LINES_EXT_IFACE_ALL : '||l_return_status);
261         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_err_code : '||l_err_code);
262         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_err_text : '||l_err_text);
263         FND_FILE.PUT_LINE(FND_FILE.LOG, 'l_msg_count : '||l_msg_count);
264 
265         IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
266            retcode := 0;
267            FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Sucessfully imported OE_LINES_EXT_IFACE_ALL data');
268         ELSIF  l_return_status = 'W' THEN
269            retcode := 1;
270            FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Warning while importing OE_LINES_EXT_IFACE_ALL');
271         ELSE
272            retcode := 2;
273            FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Error reported while importing OE_LINES_EXT_IFACE_ALL. Please fix the errors in this log file and re-run the concurrent program.');
274         END IF;
275 
276 
277         ERROR_HANDLER.Log_Error(
278             p_write_err_to_inttable         => 'Y'
279            ,p_write_err_to_conclog          => 'Y'
280            ,p_write_err_to_debugfile        => 'N'
281            );
282 
283          IF l_return_status = FND_API.G_RET_STS_SUCCESS OR l_return_status = 'W' THEN
284               DELETE FROM OE_LINES_EXT_IFACE_ALL
285                   WHERE data_set_id  = l_data_set_id
286                     AND PROCESS_STATUS = 2;
287               COMMIT;
288          END IF;
289    END IF;
290           -- All the errors will be mtl_interface_errors  with process_status <> 2 and the transaction_id will be marked..
291           -- we can get the details of the error by joining with transcation_id
292 EXCEPTION
293   WHEN FND_API.G_EXC_ERROR THEN
294 	retcode := 2;
295 	errbuf := 'Please fix the error in the log file';
296     FND_FILE.PUT_LINE(FND_FILE.LOG,	'Please fix the errors in this log file and re-run the concurrent program.');
297 
298   WHEN OTHERS THEN
299 	   retcode := 2;
300 	   errbuf := sqlerrm;
301      FND_FILE.PUT_LINE(FND_FILE.LOG, 'An Exception has occured. Returning with ERROR :'||sqlerrm);
302 END;
303 END OE_ORDER_EXTN_IMPORT_PVT;